-
Notifications
You must be signed in to change notification settings - Fork 2
/
BCRAT.R
100 lines (79 loc) · 7.24 KB
/
BCRAT.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# TODO Use Gail model with constants found in BCRAT source code.
source("AlgorithmUtil.R")
source("GailAlgorithm.R")
cutpoints = c(20,25,30,35,40,45,50,55,60,65,70,75,80,85)
cols =c("White", "Black", "Hispanic", 4, 5, 6, "AAChinese", "AAJapanese", "AAFilipino", "AAHawaiian", "AAOtherPacificIslander", "AAOtherAsianAmerican")
h2s = cbind(
c(49.3 * 0.00001, 53.1 * 0.00001, 62.5 * 0.00001, 82.5 * 0.00001, 130.7 * 0.00001, 218.1 * 0.00001, 365.5 * 0.00001, 585.2 * 0.00001, 943.9 * 0.00001, 1502.8 * 0.00001, 2383.9 * 0.00001, 3883.2 * 0.00001, 6682.8 * 0.00001, 14490.8 * 0.00001)
, c(0.00074354, 0.00101698, 0.00145937, 0.00215933, 0.00315077, 0.00448779, 0.00632281, 0.00963037, 0.01471818, 0.02116304, 0.03266035, 0.04564087, 0.06835185, 0.13271262)
, c(43.7 * 0.00001, 53.3 * 0.00001, 70.0 * 0.00001, 89.7 * 0.00001, 116.3 * 0.00001, 170.2 * 0.00001, 264.6 * 0.00001, 421.6 * 0.00001, 696.0 * 0.00001, 1086.7 * 0.00001, 1685.8 * 0.00001, 2515.6 * 0.00001, 4186.6 * 0.00001, 8947.6 * 0.00001)
, c( 44.12 * 0.00001, 52.54 * 0.00001, 67.46 * 0.00001, 90.92 * 0.00001, 125.34 * 0.00001, 195.70 * 0.00001, 329.84 * 0.00001, 546.22 * 0.00001, 910.35 * 0.00001, 1418.54 * 0.00001, 2259.35 * 0.00001, 3611.46 * 0.00001, 6136.26 * 0.00001, 14206.63 * 0.00001)
, c(0.00074354, 0.00101698, 0.00145937, 0.00215933, 0.00315077, 0.00448779, 0.00632281, 0.00963037, 0.01471818, 0.02116304, 0.03266035, 0.04564087, 0.06835185, 0.13271262)
, c(43.7 * 0.00001, 53.3 * 0.00001, 70.0 * 0.00001, 89.7 * 0.00001, 116.3 * 0.00001, 170.2 * 0.00001, 264.6 * 0.00001, 421.6 * 0.00001, 696.0 * 0.00001, 1086.7 * 0.00001, 1685.8 * 0.00001, 2515.6 * 0.00001, 4186.6 * 0.00001, 8947.6 * 0.00001)
, c(0.000004059636, 0.000045944465, 0.000188279352, 0.000492930493, 0.000913603501, 0.001471537353, 0.001421275482, 0.001970946494, 0.001674745804, 0.001821581075, 0.001834477198, 0.001919911972, 0.002233371071, 0.002247315779)
, c(0.000000000001, 0.000099483924, 0.000287041681, 0.000545285759, 0.001152211095, 0.001859245108, 0.002606291272, 0.003221751682, 0.004006961859, 0.003521715275, 0.003593038294, 0.003589303081, 0.003538507159, 0.002051572909)
, c(0.000007500161, 0.000081073945, 0.000227492565, 0.000549786433, 0.001129400541, 0.001813873795, 0.002223665639, 0.002680309266, 0.002891219230, 0.002534421279, 0.002457159409, 0.002286616920, 0.001814802825, 0.001750879130)
, c(0.000045080582, 0.000098570724, 0.000339970860, 0.000852591429, 0.001668562761, 0.002552703284, 0.003321774046, 0.005373001776, 0.005237808549, 0.005581732512, 0.005677419355, 0.006513409962, 0.003889457523, 0.002949061662)
, c(0.000000000001, 0.000071525212, 0.000288799028, 0.000602250698, 0.000755579402, 0.000766406354, 0.001893124938, 0.002365580107, 0.002843933070, 0.002920921732, 0.002330395655, 0.002036291235, 0.001482683983, 0.001012248203)
, c(0.000012355409, 0.000059526456, 0.000184320831, 0.000454677273, 0.000791265338, 0.001048462801, 0.001372467817, 0.001495473711, 0.001646746198, 0.001478363563, 0.001216010125, 0.001067663700, 0.001376104012, 0.000661576644)
)
h1_stars = cbind(c(1.0 * 0.00001, 7.6 * 0.00001, 26.6 * 0.00001, 66.1 * 0.00001, 126.5 * 0.00001, 186.6 * 0.00001, 221.1 * 0.00001, 272.1 * 0.00001, 334.8 * 0.00001, 392.3 * 0.00001, 417.8 * 0.00001, 443.9 * 0.00001, 442.1 * 0.00001, 410.9 * 0.00001)
, c(0.00002696, 0.00011295, 0.00031094, 0.00067639, 0.00119444, 0.00187394, 0.00241504, 0.00291112, 0.00310127, 0.00366560, 0.00393132, 0.00408951, 0.00396793, 0.00363712)
, c(2.00 * 0.00001, 7.10 * 0.00001, 19.70 * 0.00001, 43.80 * 0.00001, 81.10 * 0.00001, 130.70 * 0.00001, 157.40 * 0.00001, 185.70 * 0.00001, 215.10 * 0.00001, 251.20 * 0.00001, 284.60 * 0.00001, 275.70 * 0.00001, 252.30 * 0.00001, 203.90 * 0.00001)
, c(1.22 * 0.00001, 7.41 * 0.00001, 22.97 * 0.00001, 56.49 * 0.00001, 116.45 * 0.00001, 195.25 * 0.00001, 261.54 * 0.00001, 302.79 * 0.00001, 367.57 * 0.00001, 420.29 * 0.00001, 473.08 * 0.00001, 494.25 * 0.00001, 479.76 * 0.00001, 401.06 * 0.00001)
, c(0.00002696, 0.00011295, 0.00031094, 0.00067639, 0.00119444, 0.00187394, 0.00241504, 0.00291112, 0.00310127, 0.00366560, 0.00393132, 0.00408951, 0.00396793, 0.00363712)
, c(2.00 * 0.00001, 7.10 * 0.00001, 19.70 * 0.00001, 43.80 * 0.00001, 81.10 * 0.00001, 130.70 * 0.00001, 157.40 * 0.00001, 185.70 * 0.00001, 215.10 * 0.00001, 251.20 * 0.00001, 284.60 * 0.00001, 275.70 * 0.00001, 252.30 * 0.00001, 203.90 * 0.00001)
, c(0.000210649076, 0.000192644865, 0.000244435215, 0.000317895949, 0.000473261994, 0.000800271380, 0.001217480226, 0.002099836508, 0.003436889186, 0.006097405623, 0.010664526765, 0.020148678452, 0.037990796590, 0.098333900733)
, c(0.000173593803, 0.000295805882, 0.000228322534, 0.000363242389, 0.000590633044, 0.001086079485, 0.001859999966, 0.003216600974, 0.004719402141, 0.008535331402, 0.012433511681, 0.020230197885, 0.037725498348, 0.106149118663)
, c(0.000229120979, 0.000262988494, 0.000314844090, 0.000394471908, 0.000647622610, 0.001170202327, 0.001809380379, 0.002614170568, 0.004483330681, 0.007393665092, 0.012233059675, 0.021127058106, 0.037936954809, 0.085138518334)
, c(0.000563507269, 0.000369640217, 0.001019912579, 0.001234013911, 0.002098344078, 0.002982934175, 0.005402445702, 0.009591474245, 0.016315472607, 0.020152229069, 0.027354838710, 0.050446998723, 0.072262026612, 0.145844504021)
, c(0.000465500812, 0.000600466920, 0.000851057138, 0.001478265376, 0.001931486788, 0.003866623959, 0.004924932309, 0.008177071806, 0.008638202890, 0.018974658371, 0.029257567105, 0.038408980974, 0.052869579345, 0.074745721133)
, c(0.000212632332, 0.000242170741, 0.000301552711, 0.000369053354, 0.000543002943, 0.000893862331, 0.001515172239, 0.002574669551, 0.004324370426, 0.007419621918, 0.013251765130, 0.022291427490, 0.041746550635, 0.087485802065))
colnames(h1_stars) = cols
colnames(h2s) = cols
wbh=cbind(
c(-0.7494824600
, 0.0940103059
, 0.5292641686
, 0.2186262218
, 0.9583027845
, 0.0108080720
, -0.2880424830
, -0.1908113865)
, c( -0.3457169653, 0.2672530336, 0.1822121131, 0.0000000000, 0.4757242578, 0.0334703319, -0.1119411682, 0.0000000000)
, c(-0.7494824600, 0.0940103059, 0.5292641686, 0.2186262218, 0.9583027845, 0.0108080720, -0.2880424830, -0.1908113865)
)
# American Asian
aa=c(0.00000000000000, 0.07499257592975, 0.55263612260619, 0.27638268294593, 0.79185633720481, 0 ,0.00000000000000, 0.00000000000000)
reg_cofs = cbind(wbh,wbh,aa,aa,aa,aa,aa,aa)
colnames(reg_cofs) = cols
AA_F = c(0.47519806426735, 0.50316401683903)
Fs = cbind(
c( 0.5788413, 0.5788413)
, c(0.72949880, 0.74397137)
, c( 0.5788413, 0.5788413)
, c(1.0, 1.0)
, c(1.0, 1.0)
, c(1.0, 1.0)
, AA_F, AA_F, AA_F, AA_F, AA_F, AA_F )
colnames(Fs) = cols
bcrat_constant_finder = function(RACE,...) {
RACE=as.character(RACE)
h1_star = h1_stars[,RACE]
h2 = h2s[,RACE]
F = Fs[ifelse(cutpoints < 50, 1, 2), RACE]
list( hazards=data.frame(cutpoints,h1_star,h2,F,width=5)
, cof=reg_cofs[,RACE]
)
}
BCRAT = function(population, years, aux_rr=NULL) {
# AGE_AT_MENARHE only has two categories for Black
population$AGE_AT_MENARCHE =
ifelse(population$RACE == "Black"
, ifelse(population$AGE_AT_MENARCHE < 12
, 12
, population$AGE_AT_MENARCHE)
, population$AGE_AT_MENARCHE)
gail_algorithm(population, years, bcrat_constant_finder, aux_rr=aux_rr)
}
register_algorithm("BCRAT", BCRAT, T, T, append(gail_fields, "RACE"))