Codebook
vax_dataset %>%
dplyr::select(ibd_3, age_yrs, gender, race_5, ethnic_3, lang_3, relig_affil, mstat_5, max_ch, STATE, r_pct, IC, pop_dens, RPL_THEMES, RPL_4, RPL_THEME1, RPL_THEME2, RPL_THEME3, RPL_THEME4, act_tob, r_pct, flu_2015, flu_2016, flu_2017, flu_2018, flu_2019, flu_2020, flu_2021, flu_2022, total_flu, prevnar, pvax, any_pneum, any_pneum, total_cov_vax, total_shingrix) -> vax_clean1
print(dfSummary(vax_clean1), method = 'render')
NA
save(vax_clean1, file = "vax_clean1.rda")
Patient Characteristics
Baseline Characteristics
vax_clean1 %>%
dplyr::select(ibd_3, age_yrs, gender, race_5, ethnic_3, lang_3, relig_affil, mstat_5, act_tob, max_ch, IC, pop_dens,r_pct, RPL_THEMES, RPL_4, RPL_THEME1, RPL_THEME2, RPL_THEME3, RPL_THEME4) -> baseline
baseline %>% tbl_summary(label = list(ibd_3 ~ "IBD Diagnosis", age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Primary Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", pop_dens ~ "Population Density", RPL_4 ~ "SVI Quartiles", r_pct ~ "Percent Republican", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", IC = "Immunocompromised"),
statistic = list(all_continuous() ~ "{mean} ({sd})"),
missing_text = "(Missing)")
| Characteristic |
N = 15,208 |
| IBD Diagnosis |
|
| Â Â Â Â CD |
7,712 (51%) |
| Â Â Â Â UC |
7,345 (48%) |
| Â Â Â Â Unspecified |
151 (1.0%) |
| Age |
49 (19) |
| Gender |
|
| Â Â Â Â Male |
6,962 (46%) |
| Â Â Â Â Female |
8,246 (54%) |
| Race |
|
| Â Â Â Â White |
13,202 (87%) |
| Â Â Â Â Black |
946 (6.2%) |
| Â Â Â Â Asian |
373 (2.5%) |
| Â Â Â Â Native |
56 (0.4%) |
| Â Â Â Â Other |
631 (4.1%) |
| Ethnicity |
|
| Â Â Â Â NonHispanic |
14,371 (98%) |
| Â Â Â Â UNKNOWN |
0 (0%) |
| Â Â Â Â Hispanic |
299 (2.0%) |
| Â Â Â Â CHOOSE NOT TO DISCLOSE |
0 (0%) |
| Â Â Â Â (Missing) |
538 |
| Primary Language |
|
| Â Â Â Â English |
15,046 (99%) |
| Â Â Â Â Other |
162 (1.1%) |
| Any Religious Affiliation |
|
| Â Â Â Â Yes |
8,193 (57%) |
| Â Â Â Â No |
6,075 (43%) |
| Â Â Â Â UNKNOWN |
0 (0%) |
| Â Â Â Â PATIENT REFUSED |
0 (0%) |
| Â Â Â Â (Missing) |
940 |
| Marital Status |
|
| Â Â Â Â Married |
6,178 (41%) |
| Â Â Â Â Unknown |
3,226 (21%) |
| Â Â Â Â Unmarried |
4,990 (33%) |
| Â Â Â Â DivorcedSeparated |
507 (3.3%) |
| Â Â Â Â Widow |
307 (2.0%) |
| Active Tobacco Use |
|
| Â Â Â Â No |
12,593 (87%) |
| Â Â Â Â Yes |
1,878 (13%) |
| Â Â Â Â NOT ASKED |
0 (0%) |
| Â Â Â Â (Missing) |
737 |
| Charlson Comorbidity Index |
3.3 (4.9) |
| Â Â Â Â (Missing) |
435 |
| Immunocompromised |
4,890 (62%) |
| Â Â Â Â (Missing) |
7,372 |
| Population Density |
2,290 (4,016) |
| Â Â Â Â (Missing) |
629 |
| Percent Republican |
45 (18) |
| Â Â Â Â (Missing) |
2,265 |
| Total SVI |
0.37 (0.26) |
| Â Â Â Â (Missing) |
288 |
| SVI Quartiles |
|
| Â Â Â Â First |
5,833 (39%) |
| Â Â Â Â Second |
4,492 (30%) |
| Â Â Â Â Third |
3,052 (20%) |
| Â Â Â Â Fourth |
1,543 (10%) |
| Â Â Â Â (Missing) |
288 |
| Soceioeconomic Status |
0.35 (0.26) |
| Â Â Â Â (Missing) |
338 |
| Household Composition |
0.40 (0.27) |
| Â Â Â Â (Missing) |
287 |
| Minority Status and Language |
0.48 (0.29) |
| Â Â Â Â (Missing) |
279 |
| Housing and Transportation |
0.44 (0.29) |
| Â Â Â Â (Missing) |
310 |
Baseline characteristics by SVI Quartile
baseline %>% tbl_summary(by = RPL_4,
label = list(ibd_3 ~ "IBD Diagnosis", age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Primary Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", pop_dens ~ "Population Density", RPL_4 ~ "SVI Quartiles", r_pct ~ "Percent Republican", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", IC ~ "Immunocompromised"),
statistic = list(all_continuous() ~ "{mean} ({sd})"),
missing_text = "(Missing)") %>% add_p()
288 observations missing `RPL_4` have been removed. To include these observations, use `forcats::fct_explicit_na()` on `RPL_4` column before passing to `tbl_summary()`.
There was an error in 'add_p()/add_difference()' for variable 'relig_affil', p-value omitted:
Error in stats::fisher.test(structure(c(2L, NA, 2L, NA, 1L, 1L, 2L, NA, : FEXACT error 6. LDKEY=534 is too small for this problem,
(ii := key2[itp=1059] = 45352598, ldstp=16020)
Try increasing the size of the workspace and possibly 'mult'
There was an error in 'add_p()/add_difference()' for variable 'act_tob', p-value omitted:
Error in stats::fisher.test(structure(c(1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, : FEXACT error 6. LDKEY=533 is too small for this problem,
(ii := key2[itp=950] = 21479782, ldstp=15990)
Try increasing the size of the workspace and possibly 'mult'
| Characteristic |
First, N = 5,833 |
Second, N = 4,492 |
Third, N = 3,052 |
Fourth, N = 1,543 |
p-value |
| IBD Diagnosis |
|
|
|
|
<0.001 |
| Â Â Â Â CD |
2,773 (48%) |
2,208 (49%) |
1,658 (54%) |
914 (59%) |
|
| Â Â Â Â UC |
3,009 (52%) |
2,244 (50%) |
1,356 (44%) |
611 (40%) |
|
| Â Â Â Â Unspecified |
51 (0.9%) |
40 (0.9%) |
38 (1.2%) |
18 (1.2%) |
|
| Age |
49 (20) |
50 (19) |
50 (19) |
48 (19) |
0.008 |
| Gender |
|
|
|
|
<0.001 |
| Â Â Â Â Male |
2,756 (47%) |
2,050 (46%) |
1,303 (43%) |
691 (45%) |
|
| Â Â Â Â Female |
3,077 (53%) |
2,442 (54%) |
1,749 (57%) |
852 (55%) |
|
| Race |
|
|
|
|
<0.001 |
| Â Â Â Â White |
5,293 (91%) |
3,959 (88%) |
2,619 (86%) |
1,091 (71%) |
|
| Â Â Â Â Black |
139 (2.4%) |
204 (4.5%) |
239 (7.8%) |
345 (22%) |
|
| Â Â Â Â Asian |
153 (2.6%) |
140 (3.1%) |
65 (2.1%) |
7 (0.5%) |
|
| Â Â Â Â Native |
14 (0.2%) |
24 (0.5%) |
10 (0.3%) |
7 (0.5%) |
|
| Â Â Â Â Other |
234 (4.0%) |
165 (3.7%) |
119 (3.9%) |
93 (6.0%) |
|
| Ethnicity |
|
|
|
|
0.010 |
| Â Â Â Â NonHispanic |
5,517 (98%) |
4,262 (98%) |
2,888 (98%) |
1,440 (97%) |
|
| Â Â Â Â UNKNOWN |
0 (0%) |
0 (0%) |
0 (0%) |
0 (0%) |
|
| Â Â Â Â Hispanic |
100 (1.8%) |
86 (2.0%) |
59 (2.0%) |
48 (3.2%) |
|
| Â Â Â Â CHOOSE NOT TO DISCLOSE |
0 (0%) |
0 (0%) |
0 (0%) |
0 (0%) |
|
| Â Â Â Â (Missing) |
216 |
144 |
105 |
55 |
|
| Primary Language |
|
|
|
|
<0.001 |
| Â Â Â Â English |
5,799 (99%) |
4,441 (99%) |
3,009 (99%) |
1,511 (98%) |
|
| Â Â Â Â Other |
34 (0.6%) |
51 (1.1%) |
43 (1.4%) |
32 (2.1%) |
|
| Any Religious Affiliation |
|
|
|
|
|
| Â Â Â Â Yes |
3,232 (59%) |
2,397 (57%) |
1,651 (58%) |
779 (55%) |
|
| Â Â Â Â No |
2,284 (41%) |
1,810 (43%) |
1,204 (42%) |
642 (45%) |
|
| Â Â Â Â UNKNOWN |
0 (0%) |
0 (0%) |
0 (0%) |
0 (0%) |
|
| Â Â Â Â PATIENT REFUSED |
0 (0%) |
0 (0%) |
0 (0%) |
0 (0%) |
|
| Â Â Â Â (Missing) |
317 |
285 |
197 |
122 |
|
| Marital Status |
|
|
|
|
<0.001 |
| Â Â Â Â Married |
2,695 (46%) |
1,848 (41%) |
1,109 (36%) |
444 (29%) |
|
| Â Â Â Â Unknown |
1,134 (19%) |
943 (21%) |
702 (23%) |
388 (25%) |
|
| Â Â Â Â Unmarried |
1,761 (30%) |
1,432 (32%) |
1,039 (34%) |
619 (40%) |
|
| Â Â Â Â DivorcedSeparated |
133 (2.3%) |
168 (3.7%) |
128 (4.2%) |
72 (4.7%) |
|
| Â Â Â Â Widow |
110 (1.9%) |
101 (2.2%) |
74 (2.4%) |
20 (1.3%) |
|
| Active Tobacco Use |
|
|
|
|
|
| Â Â Â Â No |
5,133 (91%) |
3,710 (87%) |
2,389 (83%) |
1,120 (78%) |
|
| Â Â Â Â Yes |
478 (8.5%) |
566 (13%) |
501 (17%) |
308 (22%) |
|
| Â Â Â Â NOT ASKED |
0 (0%) |
0 (0%) |
0 (0%) |
0 (0%) |
|
| Â Â Â Â (Missing) |
222 |
216 |
162 |
115 |
|
| Charlson Comorbidity Index |
3.2 (4.9) |
3.4 (5.1) |
3.4 (4.9) |
3.3 (4.8) |
0.020 |
| Â Â Â Â (Missing) |
135 |
128 |
93 |
62 |
|
| Immunocompromised |
1,955 (61%) |
1,485 (62%) |
945 (64%) |
505 (66%) |
0.047 |
| Â Â Â Â (Missing) |
2,634 |
2,100 |
1,572 |
778 |
|
| Population Density |
2,026 (3,289) |
2,277 (5,130) |
2,431 (3,595) |
3,081 (3,469) |
<0.001 |
| Â Â Â Â (Missing) |
55 |
97 |
116 |
81 |
|
| Percent Republican |
46 (16) |
46 (18) |
46 (18) |
37 (21) |
<0.001 |
| Â Â Â Â (Missing) |
614 |
829 |
542 |
263 |
|
| Total SVI |
0.12 (0.07) |
0.37 (0.07) |
0.61 (0.07) |
0.86 (0.07) |
<0.001 |
| Soceioeconomic Status |
0.13 (0.11) |
0.34 (0.16) |
0.56 (0.15) |
0.78 (0.11) |
<0.001 |
| Â Â Â Â (Missing) |
51 |
0 |
0 |
0 |
|
| Household Composition |
0.21 (0.14) |
0.38 (0.22) |
0.58 (0.24) |
0.76 (0.19) |
<0.001 |
| Minority Status and Language |
0.41 (0.27) |
0.47 (0.29) |
0.52 (0.28) |
0.66 (0.25) |
<0.001 |
| Housing and Transportation |
0.19 (0.16) |
0.49 (0.20) |
0.64 (0.21) |
0.81 (0.17) |
<0.001 |
| Â Â Â Â (Missing) |
22 |
0 |
0 |
0 |
|
Bivariate Analysis
Total Flu
tbl_uv_ex1 <-
tbl_uvregression(
vax_clean1[c("total_flu", "ibd_3", "age_yrs", "gender", "race_5", "ethnic_3", "lang_3", "mstat_5", "relig_affil", "act_tob", "max_ch", "IC", "pop_dens", "r_pct", "RPL_THEMES", "RPL_THEME1", "RPL_THEME2", "RPL_THEME3", "RPL_THEME4")],
method = glm.nb,
y = total_flu,
label = list(ibd_3 ~ "IBD Diagnosis", age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Primary Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", pop_dens ~ "Population Density", r_pct ~ "Percent Republican", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", IC ~ "Immunocompromised"),
exponentiate = TRUE)
print(tbl_uv_ex1, method = render)
`...` must be empty.
✖ Problematic argument:
• method = render
| Characteristic |
N |
IRR |
95% CI |
p-value |
| IBD Diagnosis |
15,208 |
|
|
|
| Â Â Â Â CD |
|
— |
— |
|
| Â Â Â Â UC |
|
1.07 |
1.03, 1.12 |
0.002 |
| Â Â Â Â Unspecified |
|
0.38 |
0.29, 0.49 |
<0.001 |
| Age |
15,208 |
1.00 |
1.00, 1.00 |
0.039 |
| Gender |
15,208 |
|
|
|
| Â Â Â Â Male |
|
— |
— |
|
| Â Â Â Â Female |
|
1.08 |
1.03, 1.12 |
0.001 |
| Race |
15,208 |
|
|
|
| Â Â Â Â White |
|
— |
— |
|
| Â Â Â Â Black |
|
0.86 |
0.78, 0.94 |
0.001 |
| Â Â Â Â Asian |
|
1.30 |
1.13, 1.49 |
<0.001 |
| Â Â Â Â Native |
|
1.09 |
0.76, 1.58 |
0.7 |
| Â Â Â Â Other |
|
0.83 |
0.74, 0.93 |
0.001 |
| Ethnicity |
14,670 |
|
|
|
| Â Â Â Â NonHispanic |
|
— |
— |
|
| Â Â Â Â Hispanic |
|
1.10 |
0.94, 1.28 |
0.3 |
| Primary Language |
15,208 |
|
|
|
| Â Â Â Â English |
|
— |
— |
|
| Â Â Â Â Other |
|
0.72 |
0.57, 0.90 |
0.004 |
| Marital Status |
15,208 |
|
|
|
| Â Â Â Â Married |
|
— |
— |
|
| Â Â Â Â Unknown |
|
0.76 |
0.72, 0.81 |
<0.001 |
| Â Â Â Â Unmarried |
|
0.90 |
0.85, 0.95 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
|
0.83 |
0.73, 0.95 |
0.005 |
| Â Â Â Â Widow |
|
0.90 |
0.77, 1.06 |
0.2 |
| Any Religious Affiliation |
14,268 |
|
|
|
| Â Â Â Â Yes |
|
— |
— |
|
| Â Â Â Â No |
|
0.92 |
0.88, 0.96 |
<0.001 |
| Active Tobacco Use |
14,471 |
|
|
|
| Â Â Â Â No |
|
— |
— |
|
| Â Â Â Â Yes |
|
0.69 |
0.65, 0.74 |
<0.001 |
| Charlson Comorbidity Index |
14,773 |
1.02 |
1.02, 1.03 |
<0.001 |
| Immunocompromised |
7,836 |
1.23 |
1.17, 1.28 |
<0.001 |
| Population Density |
14,579 |
1.00 |
1.00, 1.00 |
0.8 |
| Percent Republican |
12,943 |
0.99 |
0.99, 0.99 |
<0.001 |
| Total SVI |
14,920 |
0.49 |
0.45, 0.54 |
<0.001 |
| Soceioeconomic Status |
14,870 |
0.48 |
0.44, 0.52 |
<0.001 |
| Household Composition |
14,921 |
0.49 |
0.45, 0.53 |
<0.001 |
| Minority Status and Language |
14,929 |
1.19 |
1.10, 1.28 |
<0.001 |
| Housing and Transportation |
14,898 |
0.66 |
0.61, 0.71 |
<0.001 |
NULL
Flu 2019
tbl_uv_ex2 <-
tbl_uvregression(
vax_clean1[c("flu_2019", "ibd_3", "age_yrs", "gender", "race_5", "ethnic_3", "lang_3", "mstat_5", "relig_affil", "act_tob", "max_ch", "IC", "pop_dens", "r_pct", "RPL_THEMES", "RPL_THEME1", "RPL_THEME2", "RPL_THEME3", "RPL_THEME4")],
method = glm,
y = flu_2019,
method.args = list(family = binomial),
label = list(ibd_3 ~ "IBD Diagnosis", age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Primary Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", pop_dens ~ "Population Density", r_pct ~ "Percent Republican", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", IC ~ "Immunocompromised"),
exponentiate = TRUE
)
print(tbl_uv_ex2, method = render)
`...` must be empty.
✖ Problematic argument:
• method = render
| Characteristic |
N |
OR |
95% CI |
p-value |
| IBD Diagnosis |
15,208 |
|
|
|
| Â Â Â Â CD |
|
— |
— |
|
| Â Â Â Â UC |
|
1.04 |
0.97, 1.12 |
0.3 |
| Â Â Â Â Unspecified |
|
0.30 |
0.18, 0.49 |
<0.001 |
| Age |
15,208 |
0.99 |
0.99, 0.99 |
<0.001 |
| Gender |
15,208 |
|
|
|
| Â Â Â Â Male |
|
— |
— |
|
| Â Â Â Â Female |
|
1.09 |
1.02, 1.17 |
0.012 |
| Race |
15,208 |
|
|
|
| Â Â Â Â White |
|
— |
— |
|
| Â Â Â Â Black |
|
0.81 |
0.69, 0.94 |
0.006 |
| Â Â Â Â Asian |
|
1.64 |
1.33, 2.03 |
<0.001 |
| Â Â Â Â Native |
|
1.20 |
0.68, 2.06 |
0.5 |
| Â Â Â Â Other |
|
0.78 |
0.65, 0.94 |
0.008 |
| Ethnicity |
14,670 |
|
|
|
| Â Â Â Â NonHispanic |
|
— |
— |
|
| Â Â Â Â Hispanic |
|
1.40 |
1.10, 1.77 |
0.005 |
| Primary Language |
15,208 |
|
|
|
| Â Â Â Â English |
|
— |
— |
|
| Â Â Â Â Other |
|
0.62 |
0.42, 0.90 |
0.015 |
| Marital Status |
15,208 |
|
|
|
| Â Â Â Â Married |
|
— |
— |
|
| Â Â Â Â Unknown |
|
0.88 |
0.81, 0.97 |
0.010 |
| Â Â Â Â Unmarried |
|
0.93 |
0.86, 1.01 |
0.084 |
| Â Â Â Â DivorcedSeparated |
|
0.83 |
0.67, 1.01 |
0.064 |
| Â Â Â Â Widow |
|
0.56 |
0.42, 0.74 |
<0.001 |
| Any Religious Affiliation |
14,268 |
|
|
|
| Â Â Â Â Yes |
|
— |
— |
|
| Â Â Â Â No |
|
0.93 |
0.87, 1.00 |
0.054 |
| Active Tobacco Use |
14,471 |
|
|
|
| Â Â Â Â No |
|
— |
— |
|
| Â Â Â Â Yes |
|
0.64 |
0.57, 0.71 |
<0.001 |
| Charlson Comorbidity Index |
14,773 |
1.01 |
1.00, 1.02 |
0.015 |
| Immunocompromised |
7,836 |
1.74 |
1.58, 1.91 |
<0.001 |
| Population Density |
14,579 |
1.00 |
1.00, 1.00 |
0.8 |
| Percent Republican |
12,943 |
0.99 |
0.99, 0.99 |
<0.001 |
| Total SVI |
14,920 |
0.37 |
0.32, 0.43 |
<0.001 |
| Soceioeconomic Status |
14,870 |
0.34 |
0.30, 0.40 |
<0.001 |
| Household Composition |
14,921 |
0.38 |
0.33, 0.43 |
<0.001 |
| Minority Status and Language |
14,929 |
1.31 |
1.16, 1.48 |
<0.001 |
| Housing and Transportation |
14,898 |
0.54 |
0.48, 0.61 |
<0.001 |
NULL
Flu 2021
tbl_uv_ex3 <-
tbl_uvregression(
vax_clean1[c("flu_2021", "ibd_3", "age_yrs", "gender", "race_5", "ethnic_3", "lang_3", "mstat_5", "relig_affil", "act_tob", "max_ch", "IC", "pop_dens", "r_pct", "RPL_THEMES", "RPL_THEME1", "RPL_THEME2", "RPL_THEME3", "RPL_THEME4")],
method = glm,
y = flu_2021,
method.args = list(family = binomial),
label = list(ibd_3 ~ "IBD Diagnosis", age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Primary Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", pop_dens ~ "Population Density", r_pct ~ "Percent Republican", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", IC ~ "Immunocompromised"),
exponentiate = TRUE
)
print(tbl_uv_ex3, method = render)
`...` must be empty.
✖ Problematic argument:
• method = render
| Characteristic |
N |
OR |
95% CI |
p-value |
| IBD Diagnosis |
15,208 |
|
|
|
| Â Â Â Â CD |
|
— |
— |
|
| Â Â Â Â UC |
|
1.18 |
1.09, 1.28 |
<0.001 |
| Â Â Â Â Unspecified |
|
0.23 |
0.10, 0.43 |
<0.001 |
| Age |
15,208 |
1.01 |
1.00, 1.01 |
<0.001 |
| Gender |
15,208 |
|
|
|
| Â Â Â Â Male |
|
— |
— |
|
| Â Â Â Â Female |
|
1.16 |
1.08, 1.26 |
<0.001 |
| Race |
15,208 |
|
|
|
| Â Â Â Â White |
|
— |
— |
|
| Â Â Â Â Black |
|
0.76 |
0.64, 0.90 |
0.002 |
| Â Â Â Â Asian |
|
1.95 |
1.56, 2.42 |
<0.001 |
| Â Â Â Â Native |
|
1.02 |
0.51, 1.87 |
>0.9 |
| Â Â Â Â Other |
|
0.74 |
0.59, 0.91 |
0.005 |
| Ethnicity |
14,670 |
|
|
|
| Â Â Â Â NonHispanic |
|
— |
— |
|
| Â Â Â Â Hispanic |
|
1.03 |
0.78, 1.36 |
0.8 |
| Primary Language |
15,208 |
|
|
|
| Â Â Â Â English |
|
— |
— |
|
| Â Â Â Â Other |
|
0.65 |
0.41, 0.99 |
0.054 |
| Marital Status |
15,208 |
|
|
|
| Â Â Â Â Married |
|
— |
— |
|
| Â Â Â Â Unknown |
|
0.76 |
0.69, 0.85 |
<0.001 |
| Â Â Â Â Unmarried |
|
0.69 |
0.63, 0.75 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
|
0.79 |
0.63, 0.99 |
0.043 |
| Â Â Â Â Widow |
|
1.07 |
0.82, 1.39 |
0.6 |
| Any Religious Affiliation |
14,268 |
|
|
|
| Â Â Â Â Yes |
|
— |
— |
|
| Â Â Â Â No |
|
0.90 |
0.83, 0.98 |
0.012 |
| Active Tobacco Use |
14,471 |
|
|
|
| Â Â Â Â No |
|
— |
— |
|
| Â Â Â Â Yes |
|
0.46 |
0.40, 0.53 |
<0.001 |
| Charlson Comorbidity Index |
14,773 |
1.05 |
1.04, 1.06 |
<0.001 |
| Immunocompromised |
7,836 |
1.13 |
1.02, 1.25 |
0.019 |
| Population Density |
14,579 |
1.00 |
1.00, 1.00 |
0.3 |
| Percent Republican |
12,943 |
0.98 |
0.98, 0.98 |
<0.001 |
| Total SVI |
14,920 |
0.27 |
0.22, 0.31 |
<0.001 |
| Soceioeconomic Status |
14,870 |
0.23 |
0.19, 0.27 |
<0.001 |
| Household Composition |
14,921 |
0.24 |
0.20, 0.28 |
<0.001 |
| Minority Status and Language |
14,929 |
1.59 |
1.39, 1.83 |
<0.001 |
| Housing and Transportation |
14,898 |
0.48 |
0.42, 0.55 |
<0.001 |
NULL
Total Flu Multivariable Model
RPL_THEMES Poisson Model
totalflu_SVI <- glm(total_flu ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch
+ pop_dens + r_pct + RPL_THEMES,
family = poisson,
data = vax_clean1)
summary(totalflu_SVI)
Call:
glm(formula = total_flu ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
pop_dens + r_pct + RPL_THEMES, family = poisson, data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-3.650 -1.861 -0.546 1.044 4.238
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.787e+00 3.622e-02 49.333 < 2e-16 ***
ibd_3UC -3.237e-02 1.305e-02 -2.480 0.013137 *
ibd_3Unspecified -9.004e-01 1.089e-01 -8.268 < 2e-16 ***
age_yrs -6.021e-03 4.370e-04 -13.777 < 2e-16 ***
genderFemale 8.448e-02 1.300e-02 6.500 8.03e-11 ***
race_5Black -1.494e-01 2.980e-02 -5.013 5.35e-07 ***
race_5Asian 1.294e-01 3.785e-02 3.419 0.000628 ***
race_5Native 8.935e-02 1.048e-01 0.853 0.393748
race_5Other -1.646e-01 4.125e-02 -3.989 6.63e-05 ***
ethnic_3Hispanic 1.494e-01 4.600e-02 3.247 0.001166 **
lang_3Other -3.328e-01 7.679e-02 -4.333 1.47e-05 ***
mstat_5Unknown -2.775e-01 1.897e-02 -14.629 < 2e-16 ***
mstat_5Unmarried -1.470e-01 1.713e-02 -8.584 < 2e-16 ***
mstat_5DivorcedSeparated -1.346e-01 3.819e-02 -3.523 0.000427 ***
mstat_5Widow -1.393e-01 4.675e-02 -2.979 0.002894 **
relig_affilNo -6.447e-02 1.340e-02 -4.810 1.51e-06 ***
act_tobYes -2.459e-01 2.247e-02 -10.945 < 2e-16 ***
max_ch 2.773e-02 1.333e-03 20.804 < 2e-16 ***
pop_dens -1.348e-05 2.370e-06 -5.686 1.30e-08 ***
r_pct -9.507e-03 4.188e-04 -22.702 < 2e-16 ***
RPL_THEMES -5.890e-01 2.716e-02 -21.686 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for poisson family taken to be 1)
Null deviance: 31304 on 10973 degrees of freedom
Residual deviance: 29047 on 10953 degrees of freedom
(4234 observations deleted due to missingness)
AIC: 49531
Number of Fisher Scoring iterations: 6
broom::glance(totalflu_SVI)
broom::tidy(totalflu_SVI, exponentiate = TRUE)
model_performance(totalflu_SVI)
# Indices of model performance
AIC | BIC | Nagelkerke's R2 | RMSE | Sigma | Score_log | Score_spherical
-------------------------------------------------------------------------------------
49530.535 | 49683.904 | 0.197 | 2.258 | 1.628 | -2.255 | 0.008
tbl_regression(totalflu_SVI, label = list(ibd_3 ~ "IBD Diagnosis", age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Primary Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", RPL_THEMES ~ "Total SVI", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use"), exponentiate = TRUE)
| Characteristic |
IRR |
95% CI |
p-value |
| IBD Diagnosis |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
0.97 |
0.94, 0.99 |
0.013 |
| Â Â Â Â Unspecified |
0.41 |
0.33, 0.50 |
<0.001 |
| Age |
0.99 |
0.99, 1.0 |
<0.001 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.09 |
1.06, 1.12 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.86 |
0.81, 0.91 |
<0.001 |
| Â Â Â Â Asian |
1.14 |
1.06, 1.22 |
<0.001 |
| Â Â Â Â Native |
1.09 |
0.88, 1.33 |
0.4 |
| Â Â Â Â Other |
0.85 |
0.78, 0.92 |
<0.001 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.16 |
1.06, 1.27 |
0.001 |
| Primary Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.72 |
0.61, 0.83 |
<0.001 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.76 |
0.73, 0.79 |
<0.001 |
| Â Â Â Â Unmarried |
0.86 |
0.83, 0.89 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.87 |
0.81, 0.94 |
<0.001 |
| Â Â Â Â Widow |
0.87 |
0.79, 0.95 |
0.003 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.94 |
0.91, 0.96 |
<0.001 |
| Active Tobacco Use |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.78 |
0.75, 0.82 |
<0.001 |
| Charlson Comorbidity Index |
1.03 |
1.03, 1.03 |
<0.001 |
| pop_dens |
1.00 |
1.00, 1.00 |
<0.001 |
| r_pct |
0.99 |
0.99, 0.99 |
<0.001 |
| Total SVI |
0.55 |
0.53, 0.59 |
<0.001 |
# Residual plots
totalflu_res <- resid(totalflu_SVI)
plot(fitted(totalflu_SVI), totalflu_res, col='steelblue', pch=16,
xlab='Predicted Vaccines', ylab='Standardized Residuals', main='Poisson')
abline(0,0)

# Poisson model assumes that variance is equal to the mean. If variance is significantly different than the mean, NB regression is better. Here was see that the standardized residuals fall outside the -2 to 2 range, indicating the NB regression is more appropriate.
library(AER)
dispersiontest(totalflu_SVI, trafo=1)
Overdispersion test
data: totalflu_SVI
z = 59.183, p-value < 2.2e-16
alternative hypothesis: true alpha is greater than 0
sample estimates:
alpha
1.354895
RPL_THEMES Negative Binomial Model
library(MASS)
totalflu_SVI.nb <- glm.nb(total_flu ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + RPL_THEMES,
data = vax_clean1)
summary(totalflu_SVI.nb)
Call:
glm.nb(formula = total_flu ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + pop_dens + r_pct + RPL_THEMES, data = vax_clean1, init.theta = 2.161938564,
link = log)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.6392 -1.2142 -0.1269 0.5989 2.6103
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.399e+00 7.007e-02 19.966 < 2e-16 ***
ibd_3UC 1.402e-02 2.455e-02 0.571 0.567929
ibd_3Unspecified -7.809e-01 1.980e-01 -3.944 8.02e-05 ***
age_yrs 2.534e-04 8.060e-04 0.314 0.753184
genderFemale 1.103e-01 2.314e-02 4.767 1.87e-06 ***
race_5Black -2.280e-01 5.004e-02 -4.557 5.20e-06 ***
race_5Asian 1.487e-01 6.731e-02 2.209 0.027184 *
race_5Native 1.217e-01 1.819e-01 0.669 0.503579
race_5Other -2.122e-01 6.872e-02 -3.088 0.002014 **
ethnic_3Hispanic 2.018e-01 7.985e-02 2.527 0.011496 *
lang_3Other -4.398e-01 1.281e-01 -3.433 0.000597 ***
mstat_5Unknown -2.758e-01 3.334e-02 -8.271 < 2e-16 ***
mstat_5Unmarried -1.444e-01 3.086e-02 -4.681 2.85e-06 ***
mstat_5DivorcedSeparated -1.106e-01 7.141e-02 -1.549 0.121416
mstat_5Widow -2.899e-01 9.143e-02 -3.171 0.001518 **
relig_affilNo -9.577e-02 2.381e-02 -4.022 5.77e-05 ***
act_tobYes -1.722e-01 3.857e-02 -4.464 8.05e-06 ***
max_ch 2.148e-02 2.544e-03 8.441 < 2e-16 ***
IC 3.020e-01 2.635e-02 11.462 < 2e-16 ***
pop_dens -1.282e-05 3.503e-06 -3.658 0.000254 ***
r_pct -7.897e-03 7.438e-04 -10.617 < 2e-16 ***
RPL_THEMES -4.568e-01 4.780e-02 -9.556 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for Negative Binomial(2.1619) family taken to be 1)
Null deviance: 8459.2 on 6407 degrees of freedom
Residual deviance: 7817.7 on 6386 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 27267
Number of Fisher Scoring iterations: 1
Theta: 2.1619
Std. Err.: 0.0838
2 x log-likelihood: -27221.3070
broom::glance(totalflu_SVI.nb)
broom::tidy(totalflu_SVI.nb, exponentiate = TRUE)
tbl_regression(totalflu_SVI.nb, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_THEMES ~ "Total SVI", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "race", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use"), exponentiate = TRUE)
| Characteristic |
IRR |
95% CI |
p-value |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.01 |
0.97, 1.06 |
0.6 |
| Â Â Â Â Unspecified |
0.46 |
0.31, 0.67 |
<0.001 |
| Age |
1.00 |
1.00, 1.00 |
0.8 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.12 |
1.07, 1.17 |
<0.001 |
| race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.80 |
0.72, 0.88 |
<0.001 |
| Â Â Â Â Asian |
1.16 |
1.02, 1.32 |
0.027 |
| Â Â Â Â Native |
1.13 |
0.79, 1.62 |
0.5 |
| Â Â Â Â Other |
0.81 |
0.71, 0.92 |
0.002 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.22 |
1.05, 1.43 |
0.011 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.64 |
0.50, 0.83 |
<0.001 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.76 |
0.71, 0.81 |
<0.001 |
| Â Â Â Â Unmarried |
0.87 |
0.81, 0.92 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.90 |
0.78, 1.03 |
0.12 |
| Â Â Â Â Widow |
0.75 |
0.63, 0.90 |
0.002 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.91 |
0.87, 0.95 |
<0.001 |
| Active Tobacco Use |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.84 |
0.78, 0.91 |
<0.001 |
| Charlson Comorbidity Index |
1.02 |
1.02, 1.03 |
<0.001 |
| IC |
1.35 |
1.28, 1.43 |
<0.001 |
| Population density |
1.00 |
1.00, 1.00 |
<0.001 |
| Percent Rebuplican |
0.99 |
0.99, 0.99 |
<0.001 |
| Total SVI |
0.63 |
0.58, 0.70 |
<0.001 |
# NB Residual Plot
totalflu_res.nb <- resid(totalflu_SVI.nb)
plot(fitted(totalflu_SVI.nb), totalflu_res.nb, col='steelblue', pch=16,
xlab='Predicted Vaccines', ylab='Standardized Residuals', main='Negative Binomial')
abline(0,0)

# NB regression more appropriate because residuals of the model are smaller
# Likelihood ratio test
pchisq(2 * (logLik(totalflu_SVI.nb) - logLik(totalflu_SVI)), df = 1, lower.tail = FALSE)
'log Lik.' 0 (df=23)
# p-value of loglik is < 0.05 so NB regression is the more appropriate model
# Model performance
model_performance(totalflu_SVI.nb)
# Indices of model performance
AIC | BIC | Nagelkerke's R2 | RMSE | Sigma | Score_log | Score_spherical
-------------------------------------------------------------------------------------
27267.307 | 27422.909 | 0.130 | 2.247 | 1.106 | -2.124 | 0.011
performance::check_model(totalflu_SVI.nb, panel = TRUE)

# Margins
cplot(totalflu_SVI.nb, "RPL_THEMES", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given SVI")

NA
NA
SVI Quartile Poisson Model
totalflu_4 <- glm(total_flu ~ age_yrs + gender + race_5 + ethnic_3 + lang_3 + mstat_5
+ relig_affil+ act_tob + max_ch + pop_dens + r_pct + RPL_4,
family = poisson,
data = vax_clean1)
summary(totalflu_4)
broom::glance(totalflu_4)
broom::tidy(totalflu_4, exponentiate = TRUE)
model_performance(totalflu_4)
tbl_regression(totalflu_4, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_4 ~ "SVI Quartile", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "race", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use"), exponentiate = TRUE)
# Residual plots
totalflu_4_res <- resid(totalflu_4)
plot(fitted(totalflu_4), totalflu_4_res, col='steelblue', pch=16,
xlab='Predicted Vaccines', ylab='Standardized Residuals', main='Poisson')
abline(0,0)
# Poisson model assumes that variance is equal to the mean. If variance is significantly different than the mean, NB regression is better. Here was see that the standardized residuals fall outside the -2 to 2 range, indicating the NB regression is more appropriate.
library(AER)
dispersiontest(totalflu_4, trafo=1)
SVI Quartile Negative Binomial Model
totalflu_SVI_4.nb <- glm.nb(total_flu ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil
+ act_tob + max_ch + IC + r_pct + pop_dens + RPL_4,
data = vax_clean1)
summary(totalflu_SVI_4.nb)
Call:
glm.nb(formula = total_flu ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + r_pct + pop_dens + RPL_4, data = vax_clean1, init.theta = 2.153357942,
link = log)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.5988 -1.2244 -0.1288 0.5968 2.5981
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.354e+00 6.952e-02 19.473 < 2e-16 ***
ibd_3UC 1.655e-02 2.458e-02 0.673 0.500657
ibd_3Unspecified -8.046e-01 1.983e-01 -4.058 4.95e-05 ***
age_yrs 2.265e-04 8.069e-04 0.281 0.778949
genderFemale 1.108e-01 2.317e-02 4.782 1.73e-06 ***
race_5Black -2.394e-01 5.019e-02 -4.771 1.83e-06 ***
race_5Asian 1.535e-01 6.741e-02 2.277 0.022801 *
race_5Native 1.137e-01 1.823e-01 0.624 0.532809
race_5Other -2.166e-01 6.881e-02 -3.147 0.001648 **
ethnic_3Hispanic 1.972e-01 7.995e-02 2.467 0.013623 *
lang_3Other -4.502e-01 1.282e-01 -3.510 0.000447 ***
mstat_5Unknown -2.797e-01 3.337e-02 -8.380 < 2e-16 ***
mstat_5Unmarried -1.466e-01 3.088e-02 -4.748 2.06e-06 ***
mstat_5DivorcedSeparated -1.154e-01 7.144e-02 -1.615 0.106238
mstat_5Widow -2.930e-01 9.153e-02 -3.202 0.001366 **
relig_affilNo -9.551e-02 2.384e-02 -4.007 6.15e-05 ***
act_tobYes -1.764e-01 3.857e-02 -4.575 4.77e-06 ***
max_ch 2.143e-02 2.548e-03 8.411 < 2e-16 ***
IC 2.996e-01 2.638e-02 11.358 < 2e-16 ***
r_pct -7.863e-03 7.470e-04 -10.526 < 2e-16 ***
pop_dens -1.311e-05 3.521e-06 -3.724 0.000196 ***
RPL_4Second -1.441e-01 2.733e-02 -5.272 1.35e-07 ***
RPL_4Third -1.959e-01 3.271e-02 -5.989 2.11e-09 ***
RPL_4Fourth -3.464e-01 4.526e-02 -7.653 1.96e-14 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for Negative Binomial(2.1534) family taken to be 1)
Null deviance: 8445.5 on 6407 degrees of freedom
Residual deviance: 7814.8 on 6384 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 27281
Number of Fisher Scoring iterations: 1
Theta: 2.1534
Std. Err.: 0.0832
2 x log-likelihood: -27230.7460
broom::glance(totalflu_SVI_4.nb)
broom::tidy(totalflu_SVI_4.nb, exponentiate = TRUE)
tbl_regression(totalflu_SVI_4.nb, label = list(RPL_4 ~ "SVI Quartile", age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", race_5 ~ "Race", r_pct ~ "Percent Rebuplican", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", r_pct ~ "Percent Republican", ibd_3 ~ "IBD Type", IC ~ "Immunocompromised", mstat_5 ~ "Marital Status"), exponentiate = TRUE)
| Characteristic |
IRR |
95% CI |
p-value |
| IBD Type |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.02 |
0.97, 1.07 |
0.5 |
| Â Â Â Â Unspecified |
0.45 |
0.30, 0.66 |
<0.001 |
| Age |
1.00 |
1.00, 1.00 |
0.8 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.12 |
1.07, 1.17 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.79 |
0.71, 0.87 |
<0.001 |
| Â Â Â Â Asian |
1.17 |
1.02, 1.33 |
0.023 |
| Â Â Â Â Native |
1.12 |
0.79, 1.61 |
0.5 |
| Â Â Â Â Other |
0.81 |
0.70, 0.92 |
0.002 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.22 |
1.04, 1.42 |
0.014 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.64 |
0.50, 0.82 |
<0.001 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.76 |
0.71, 0.81 |
<0.001 |
| Â Â Â Â Unmarried |
0.86 |
0.81, 0.92 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.89 |
0.77, 1.03 |
0.11 |
| Â Â Â Â Widow |
0.75 |
0.62, 0.89 |
0.001 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.91 |
0.87, 0.95 |
<0.001 |
| Active Tobacco Use |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.84 |
0.78, 0.90 |
<0.001 |
| Charlson Comorbidity Index |
1.02 |
1.02, 1.03 |
<0.001 |
| Immunocompromised |
1.35 |
1.28, 1.42 |
<0.001 |
| Percent Republican |
0.99 |
0.99, 0.99 |
<0.001 |
| Population density |
1.00 |
1.00, 1.00 |
<0.001 |
| SVI Quartile |
|
|
|
| Â Â Â Â First |
— |
— |
|
| Â Â Â Â Second |
0.87 |
0.82, 0.91 |
<0.001 |
| Â Â Â Â Third |
0.82 |
0.77, 0.88 |
<0.001 |
| Â Â Â Â Fourth |
0.71 |
0.65, 0.77 |
<0.001 |
# NB Residual Plot
totalflu_SVI_4.nb_res <- resid(totalflu_SVI_4.nb)
plot(fitted(totalflu_SVI_4.nb), totalflu_SVI_4.nb_res, col='steelblue', pch=16,
xlab='Predicted Vaccines', ylab='Standardized Residuals', main='Negative Binomial')
abline(0,0)

# NB regression more appropriate because residuals of the model are smaller
# Likelihood ratio test
pchisq(2 * (logLik(totalflu_SVI_4.nb) - logLik(totalflu_SVI_4.nb)), df = 1, lower.tail = FALSE)
'log Lik.' 1 (df=25)
# p-value of loglik is < 0.05 so NB regression is the more appropriate model
# Model performance
model_performance(totalflu_SVI_4.nb)
# Indices of model performance
AIC | BIC | Nagelkerke's R2 | RMSE | Sigma | Score_log | Score_spherical
-------------------------------------------------------------------------------------
27280.746 | 27449.879 | 0.128 | 2.249 | 1.106 | -2.125 | 0.011
performance::check_model(totalflu_SVI_4.nb, panel = TRUE)

# Margins
cplot(totalflu_SVI_4.nb, "RPL_4", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given SVI Quartile")

All Themes Poisson Model
totalflu_themes <- glm(total_flu ~ age_yrs + gender + race_5 + ethnic_3 + lang_3 + mstat_5
+ relig_affil + act_tob + max_ch + pop_dens + r_pct + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 + RPL_THEME4,
family = poisson,
data = vax_clean1)
summary(totalflu_themes)
broom::glance(totalflu_themes)
broom::tidy(totalflu_themes, exponentiate = TRUE)
model_performance(totalflu_themes)
tbl_regression(totalflu_themes, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "Race", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use"), exponentiate = TRUE)
# Residual plots
totalflu_res <- resid(totalflu_themes)
plot(fitted(totalflu_themes), totalflu_res, col='steelblue', pch=16,
xlab='Predicted Vaccines', ylab='Standardized Residuals', main='Poisson')
abline(0,0)
# Poisson model assumes that variance is equal to the mean. If variance is significantly different than the mean, NB regression is better. Here was see that the standardized residuals fall outside the -2 to 2 range, indicating the NB regression is more appropriate.
library(AER)
dispersiontest(totalflu_SVI, trafo=1)
All Themes Negative Binomial Model
totalflu_themes.nb <- glm.nb(total_flu ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil
+ act_tob + max_ch + IC + r_pct + pop_dens +
RPL_THEME1 + RPL_THEME2 + RPL_THEME3 + RPL_THEME4,
data = vax_clean1)
summary(totalflu_themes.nb)
Call:
glm.nb(formula = total_flu ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + r_pct + pop_dens + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 +
RPL_THEME4, data = vax_clean1, init.theta = 2.181681817,
link = log)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.6324 -1.2325 -0.1297 0.5927 2.6832
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.340e+00 8.292e-02 16.162 < 2e-16 ***
ibd_3UC 1.203e-02 2.450e-02 0.491 0.623433
ibd_3Unspecified -7.880e-01 1.982e-01 -3.977 6.99e-05 ***
age_yrs 3.360e-04 8.045e-04 0.418 0.676159
genderFemale 1.118e-01 2.310e-02 4.839 1.30e-06 ***
race_5Black -2.113e-01 5.028e-02 -4.203 2.64e-05 ***
race_5Asian 1.166e-01 6.768e-02 1.723 0.084897 .
race_5Native 1.344e-01 1.812e-01 0.742 0.458126
race_5Other -2.185e-01 6.864e-02 -3.183 0.001459 **
ethnic_3Hispanic 1.926e-01 7.971e-02 2.416 0.015705 *
lang_3Other -4.632e-01 1.280e-01 -3.618 0.000297 ***
mstat_5Unknown -2.756e-01 3.330e-02 -8.278 < 2e-16 ***
mstat_5Unmarried -1.437e-01 3.081e-02 -4.664 3.09e-06 ***
mstat_5DivorcedSeparated -1.078e-01 7.128e-02 -1.513 0.130259
mstat_5Widow -2.897e-01 9.119e-02 -3.177 0.001490 **
relig_affilNo -9.473e-02 2.383e-02 -3.976 7.00e-05 ***
act_tobYes -1.721e-01 3.854e-02 -4.467 7.95e-06 ***
max_ch 2.160e-02 2.538e-03 8.512 < 2e-16 ***
IC 3.010e-01 2.632e-02 11.439 < 2e-16 ***
r_pct -6.007e-03 8.895e-04 -6.753 1.44e-11 ***
pop_dens -1.232e-05 3.522e-06 -3.498 0.000469 ***
RPL_THEME1 -2.292e-01 6.739e-02 -3.401 0.000671 ***
RPL_THEME2 -2.930e-01 5.944e-02 -4.929 8.27e-07 ***
RPL_THEME3 3.503e-02 4.815e-02 0.727 0.466963
RPL_THEME4 -5.557e-02 5.035e-02 -1.104 0.269790
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for Negative Binomial(2.1817) family taken to be 1)
Null deviance: 8490.6 on 6407 degrees of freedom
Residual deviance: 7820.8 on 6383 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 27248
Number of Fisher Scoring iterations: 1
Theta: 2.1817
Std. Err.: 0.0849
2 x log-likelihood: -27196.1650
broom::glance(totalflu_themes.nb)
broom::tidy(totalflu_themes.nb, exponentiate = TRUE)
model_performance(totalflu_themes.nb)
# Indices of model performance
AIC | BIC | Nagelkerke's R2 | RMSE | Sigma | Score_log | Score_spherical
-------------------------------------------------------------------------------------
27248.165 | 27424.063 | 0.135 | 2.243 | 1.107 | -2.122 | 0.011
tbl_regression(totalflu_themes.nb, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", race_5 ~ "Race", r_pct ~ "Percent Rebuplican", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", r_pct ~ "Percent Republican", ibd_3 ~ "IBD Type", IC ~ "Immunocompromised", mstat_5 ~ "Marital Status"), exponentiate = TRUE)
| Characteristic |
IRR |
95% CI |
p-value |
| IBD Type |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.01 |
0.96, 1.06 |
0.6 |
| Â Â Â Â Unspecified |
0.45 |
0.31, 0.67 |
<0.001 |
| Age |
1.00 |
1.00, 1.00 |
0.7 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.12 |
1.07, 1.17 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.81 |
0.73, 0.89 |
<0.001 |
| Â Â Â Â Asian |
1.12 |
0.98, 1.28 |
0.085 |
| Â Â Â Â Native |
1.14 |
0.80, 1.64 |
0.5 |
| Â Â Â Â Other |
0.80 |
0.70, 0.92 |
0.001 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.21 |
1.04, 1.42 |
0.016 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.63 |
0.49, 0.81 |
<0.001 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.76 |
0.71, 0.81 |
<0.001 |
| Â Â Â Â Unmarried |
0.87 |
0.82, 0.92 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.90 |
0.78, 1.03 |
0.13 |
| Â Â Â Â Widow |
0.75 |
0.63, 0.90 |
0.001 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.91 |
0.87, 0.95 |
<0.001 |
| Active Tobacco Use |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.84 |
0.78, 0.91 |
<0.001 |
| Charlson Comorbidity Index |
1.02 |
1.02, 1.03 |
<0.001 |
| Immunocompromised |
1.35 |
1.28, 1.42 |
<0.001 |
| Percent Republican |
0.99 |
0.99, 1.00 |
<0.001 |
| Population density |
1.00 |
1.00, 1.00 |
<0.001 |
| Soceioeconomic Status |
0.80 |
0.70, 0.91 |
<0.001 |
| Household Composition |
0.75 |
0.66, 0.84 |
<0.001 |
| Minority Status and Language |
1.04 |
0.94, 1.14 |
0.5 |
| Housing and Transportation |
0.95 |
0.86, 1.04 |
0.3 |
# NB Residual Plot
totalflu_res.nb <- resid(totalflu_themes.nb)
plot(fitted(totalflu_themes.nb), totalflu_res.nb, col='steelblue', pch=16,
xlab='Predicted Vaccines', ylab='Standardized Residuals', main='Negative Binomial')
abline(0,0)

# NB regression more appropriate because residuals of the model are smaller
# Likelihood ratio test
pchisq(2 * (logLik(totalflu_themes.nb) - logLik(totalflu_themes.nb)), df = 1, lower.tail = FALSE)
'log Lik.' 1 (df=26)
# p-value of loglik is < 0.05 so NB regression is the more appropriate model
# Model performance
model_performance(totalflu_themes.nb)
# Indices of model performance
AIC | BIC | Nagelkerke's R2 | RMSE | Sigma | Score_log | Score_spherical
-------------------------------------------------------------------------------------
27248.165 | 27424.063 | 0.135 | 2.243 | 1.107 | -2.122 | 0.011
performance::check_model(totalflu_themes.nb, panel = TRUE)

# Margins
cplot(totalflu_themes.nb, "RPL_THEME1", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME1")

cplot(totalflu_themes.nb, "RPL_THEME2", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME2")

cplot(totalflu_themes.nb, "RPL_THEME3", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME3")

cplot(totalflu_themes.nb, "RPL_THEME4", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME4")

Flu 2019 + Total SVI: Multivaraible Model
All variables
Flu2019_SVI <- glm(flu_2019 ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + RPL_THEMES,
family = "binomial",
data = vax_clean1)
summary(Flu2019_SVI )
Call:
glm(formula = flu_2019 ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + pop_dens + r_pct + RPL_THEMES, family = "binomial",
data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9215 -1.0401 -0.7805 1.1957 2.1263
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 8.637e-01 1.628e-01 5.306 1.12e-07 ***
ibd_3UC 5.478e-02 5.618e-02 0.975 0.329508
ibd_3Unspecified -8.824e-01 4.354e-01 -2.027 0.042713 *
age_yrs -1.024e-02 1.855e-03 -5.521 3.38e-08 ***
genderFemale 1.813e-01 5.281e-02 3.433 0.000596 ***
race_5Black -5.902e-01 1.150e-01 -5.133 2.85e-07 ***
race_5Asian 3.933e-01 1.587e-01 2.478 0.013197 *
race_5Native 8.523e-02 4.273e-01 0.199 0.841898
race_5Other -4.284e-01 1.552e-01 -2.760 0.005787 **
ethnic_3Hispanic 4.062e-01 1.852e-01 2.193 0.028282 *
lang_3Other -7.432e-01 2.924e-01 -2.542 0.011031 *
mstat_5Unknown -3.358e-01 7.544e-02 -4.452 8.51e-06 ***
mstat_5Unmarried -3.921e-01 7.128e-02 -5.501 3.77e-08 ***
mstat_5DivorcedSeparated -1.565e-01 1.633e-01 -0.958 0.337854
mstat_5Widow -6.860e-01 2.244e-01 -3.057 0.002232 **
relig_affilNo -2.040e-01 5.421e-02 -3.764 0.000167 ***
act_tobYes -1.906e-01 8.595e-02 -2.218 0.026548 *
max_ch 2.549e-02 6.003e-03 4.246 2.18e-05 ***
IC 6.439e-01 6.050e-02 10.643 < 2e-16 ***
pop_dens -2.822e-05 8.967e-06 -3.147 0.001649 **
r_pct -1.396e-02 1.748e-03 -7.988 1.37e-15 ***
RPL_THEMES -7.494e-01 1.086e-01 -6.901 5.18e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 8733.5 on 6407 degrees of freedom
Residual deviance: 8347.1 on 6386 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 8391.1
Number of Fisher Scoring iterations: 4
broom::glance(Flu2019_SVI )
broom::tidy(Flu2019_SVI , exponentiate = TRUE)
tbl_regression(Flu2019_SVI, label = list(ibd_3 ~ "IBD Type", age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "Race", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", IC ~ "Immunocompromised", RPL_THEMES ~ "Total SVI"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| IBD Type |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.06 |
0.95, 1.18 |
0.3 |
| Â Â Â Â Unspecified |
0.41 |
0.16, 0.92 |
0.043 |
| Age |
0.99 |
0.99, 0.99 |
<0.001 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.20 |
1.08, 1.33 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.55 |
0.44, 0.69 |
<0.001 |
| Â Â Â Â Asian |
1.48 |
1.09, 2.03 |
0.013 |
| Â Â Â Â Native |
1.09 |
0.46, 2.52 |
0.8 |
| Â Â Â Â Other |
0.65 |
0.48, 0.88 |
0.006 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.50 |
1.04, 2.16 |
0.028 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.48 |
0.26, 0.83 |
0.011 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.71 |
0.62, 0.83 |
<0.001 |
| Â Â Â Â Unmarried |
0.68 |
0.59, 0.78 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.86 |
0.62, 1.18 |
0.3 |
| Â Â Â Â Widow |
0.50 |
0.32, 0.77 |
0.002 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.82 |
0.73, 0.91 |
<0.001 |
| Active Tobacco Use |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.83 |
0.70, 0.98 |
0.027 |
| Charlson Comorbidity Index |
1.03 |
1.01, 1.04 |
<0.001 |
| Immunocompromised |
1.90 |
1.69, 2.14 |
<0.001 |
| Population density |
1.00 |
1.00, 1.00 |
0.002 |
| Percent Rebuplican |
0.99 |
0.98, 0.99 |
<0.001 |
| Total SVI |
0.47 |
0.38, 0.58 |
<0.001 |
# Model performance
model_performance(Flu2019_SVI)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
8391.150 | 8539.986 | 0.059 | 0.479 | 1.143 | 0.651 | -Inf | 1.561e-04 | 0.540
performance::check_model(Flu2019_SVI, panel = TRUE)

# Margins
cplot(Flu2019_SVI, "RPL_THEMES", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given SVI")

Age and RPL_THEMES as Quadratic
Flu2019_SVI.2 <- glm(flu_2019 ~ I(age_yrs^2) + ibd_3 + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + I(RPL_THEMES^2),
family = "binomial",
data = vax_clean1)
summary(Flu2019_SVI.2 )
Call:
glm(formula = flu_2019 ~ I(age_yrs^2) + ibd_3 + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + pop_dens + r_pct + I(RPL_THEMES^2), family = "binomial",
data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9693 -1.0458 -0.7808 1.1944 2.2159
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 5.890e-01 1.397e-01 4.216 2.49e-05 ***
I(age_yrs^2) -1.201e-04 1.902e-05 -6.314 2.72e-10 ***
ibd_3UC 5.445e-02 5.620e-02 0.969 0.332605
ibd_3Unspecified -9.000e-01 4.344e-01 -2.072 0.038291 *
genderFemale 1.741e-01 5.278e-02 3.298 0.000974 ***
race_5Black -5.927e-01 1.157e-01 -5.123 3.01e-07 ***
race_5Asian 3.867e-01 1.586e-01 2.438 0.014776 *
race_5Native 6.873e-02 4.267e-01 0.161 0.872021
race_5Other -4.216e-01 1.552e-01 -2.716 0.006604 **
ethnic_3Hispanic 4.143e-01 1.850e-01 2.239 0.025158 *
lang_3Other -7.430e-01 2.926e-01 -2.539 0.011111 *
mstat_5Unknown -3.359e-01 7.447e-02 -4.511 6.46e-06 ***
mstat_5Unmarried -3.934e-01 6.927e-02 -5.680 1.35e-08 ***
mstat_5DivorcedSeparated -1.712e-01 1.636e-01 -1.047 0.295158
mstat_5Widow -5.852e-01 2.265e-01 -2.584 0.009761 **
relig_affilNo -2.159e-01 5.431e-02 -3.974 7.06e-05 ***
act_tobYes -2.062e-01 8.589e-02 -2.400 0.016384 *
max_ch 2.801e-02 6.068e-03 4.615 3.92e-06 ***
IC 6.364e-01 6.040e-02 10.537 < 2e-16 ***
pop_dens -2.963e-05 9.136e-06 -3.244 0.001180 **
r_pct -1.404e-02 1.755e-03 -8.001 1.23e-15 ***
I(RPL_THEMES^2) -7.787e-01 1.243e-01 -6.264 3.74e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 8733.5 on 6407 degrees of freedom
Residual deviance: 8346.6 on 6386 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 8390.6
Number of Fisher Scoring iterations: 4
broom::glance(Flu2019_SVI.2 )
broom::tidy(Flu2019_SVI.2 , exponentiate = TRUE)
tbl_regression(Flu2019_SVI.2, label = list(gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", r_pct ~ "Percent Republican", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| I(age_yrs^2) |
1.00 |
1.00, 1.00 |
<0.001 |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.06 |
0.95, 1.18 |
0.3 |
| Â Â Â Â Unspecified |
0.41 |
0.16, 0.90 |
0.038 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.19 |
1.07, 1.32 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.55 |
0.44, 0.69 |
<0.001 |
| Â Â Â Â Asian |
1.47 |
1.08, 2.01 |
0.015 |
| Â Â Â Â Native |
1.07 |
0.46, 2.48 |
0.9 |
| Â Â Â Â Other |
0.66 |
0.48, 0.89 |
0.007 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.51 |
1.05, 2.18 |
0.025 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.48 |
0.26, 0.83 |
0.011 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.71 |
0.62, 0.83 |
<0.001 |
| Â Â Â Â Unmarried |
0.67 |
0.59, 0.77 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.84 |
0.61, 1.16 |
0.3 |
| Â Â Â Â Widow |
0.56 |
0.35, 0.86 |
0.010 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.81 |
0.72, 0.90 |
<0.001 |
| act_tob |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.81 |
0.69, 0.96 |
0.016 |
| Charlson Comorbidity Index |
1.03 |
1.02, 1.04 |
<0.001 |
| IC |
1.89 |
1.68, 2.13 |
<0.001 |
| Population Density |
1.00 |
1.00, 1.00 |
0.001 |
| Percent Republican |
0.99 |
0.98, 0.99 |
<0.001 |
| I(RPL_THEMES^2) |
0.46 |
0.36, 0.59 |
<0.001 |
## Standard Residuals
Flu2019_SVI.2.std <- rstandard(Flu2019_SVI.2)
plot(Flu2019_SVI.2.std, ylab="Standardized Residuals")

## Margins
cplot(Flu2019_SVI.2, "RPL_THEMES", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given SVI")

## Model performance graphs
model_performance(Flu2019_SVI.2 )
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
--------------------------------------------------------------------------------------------------
1.787e+05 | 1.789e+05 | 0.059 | 0.479 | 1.143 | 0.651 | -Inf | 1.561e-04 | 0.540
performance::check_model(Flu2019_SVI.2, panel = TRUE)

Interaction between race and RPL_THEMES
Flu2019_SVI.mod <- glm(flu_2019 ~ I(age_yrs^2) + ibd_3 + age_yrs + gender +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob +
max_ch + IC + pop_dens + r_pct + RPL_THEMES +
I(RPL_THEMES^2)*race_5,
family = "binomial",
data = vax_clean1)
summary(Flu2019_SVI.mod )
Call:
glm(formula = flu_2019 ~ I(age_yrs^2) + ibd_3 + age_yrs + gender +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + pop_dens + r_pct + RPL_THEMES + I(RPL_THEMES^2) * race_5,
family = "binomial", data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9591 -1.0391 -0.7745 1.1986 2.1004
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.675e-01 2.190e-01 1.678 0.093368 .
I(age_yrs^2) -2.852e-04 7.359e-05 -3.876 0.000106 ***
ibd_3UC 5.511e-02 5.635e-02 0.978 0.328102
ibd_3Unspecified -9.000e-01 4.358e-01 -2.065 0.038885 *
age_yrs 1.674e-02 7.194e-03 2.327 0.019948 *
genderFemale 1.656e-01 5.304e-02 3.122 0.001798 **
ethnic_3Hispanic 4.080e-01 1.861e-01 2.192 0.028384 *
lang_3Other -7.392e-01 2.943e-01 -2.512 0.012007 *
mstat_5Unknown -2.903e-01 7.634e-02 -3.802 0.000143 ***
mstat_5Unmarried -3.377e-01 7.263e-02 -4.650 3.32e-06 ***
mstat_5DivorcedSeparated -1.638e-01 1.639e-01 -0.999 0.317641
mstat_5Widow -4.862e-01 2.311e-01 -2.104 0.035393 *
relig_affilNo -2.216e-01 5.446e-02 -4.069 4.71e-05 ***
act_tobYes -2.106e-01 8.619e-02 -2.443 0.014568 *
max_ch 2.912e-02 6.093e-03 4.778 1.77e-06 ***
IC 6.479e-01 6.059e-02 10.693 < 2e-16 ***
pop_dens -2.923e-05 9.111e-06 -3.208 0.001338 **
r_pct -1.386e-02 1.759e-03 -7.880 3.27e-15 ***
RPL_THEMES -1.204e+00 3.650e-01 -3.297 0.000976 ***
I(RPL_THEMES^2) 5.044e-01 4.285e-01 1.177 0.239082
race_5Black -5.835e-01 1.791e-01 -3.258 0.001122 **
race_5Asian 3.050e-01 2.025e-01 1.506 0.131959
race_5Native 1.276e-01 5.639e-01 0.226 0.820917
race_5Other -4.517e-01 1.894e-01 -2.385 0.017098 *
I(RPL_THEMES^2):race_5Black -7.177e-02 3.692e-01 -0.194 0.845893
I(RPL_THEMES^2):race_5Asian 8.018e-01 1.040e+00 0.771 0.440724
I(RPL_THEMES^2):race_5Native -2.090e-01 1.922e+00 -0.109 0.913394
I(RPL_THEMES^2):race_5Other 1.525e-01 5.939e-01 0.257 0.797303
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 8733.5 on 6407 degrees of freedom
Residual deviance: 8329.8 on 6380 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 8385.8
Number of Fisher Scoring iterations: 4
broom::glance(Flu2019_SVI.mod )
broom::tidy(Flu2019_SVI.mod , exponentiate = TRUE)
tbl_regression(Flu2019_SVI.mod, label = list(gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", r_pct ~ "Percent Republican", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| I(age_yrs^2) |
1.00 |
1.00, 1.00 |
<0.001 |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.06 |
0.95, 1.18 |
0.3 |
| Â Â Â Â Unspecified |
0.41 |
0.16, 0.91 |
0.039 |
| age_yrs |
1.02 |
1.00, 1.03 |
0.020 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.18 |
1.06, 1.31 |
0.002 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.50 |
1.04, 2.17 |
0.028 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.48 |
0.26, 0.84 |
0.012 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.75 |
0.64, 0.87 |
<0.001 |
| Â Â Â Â Unmarried |
0.71 |
0.62, 0.82 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.85 |
0.61, 1.17 |
0.3 |
| Â Â Â Â Widow |
0.61 |
0.39, 0.96 |
0.035 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.80 |
0.72, 0.89 |
<0.001 |
| act_tob |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.81 |
0.68, 0.96 |
0.015 |
| Charlson Comorbidity Index |
1.03 |
1.02, 1.04 |
<0.001 |
| IC |
1.91 |
1.70, 2.15 |
<0.001 |
| Population Density |
1.00 |
1.00, 1.00 |
0.001 |
| Percent Republican |
0.99 |
0.98, 0.99 |
<0.001 |
| RPL_THEMES |
0.30 |
0.15, 0.61 |
<0.001 |
| I(RPL_THEMES^2) |
1.66 |
0.71, 3.83 |
0.2 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.56 |
0.39, 0.79 |
0.001 |
| Â Â Â Â Asian |
1.36 |
0.91, 2.02 |
0.13 |
| Â Â Â Â Native |
1.14 |
0.37, 3.50 |
0.8 |
| Â Â Â Â Other |
0.64 |
0.44, 0.92 |
0.017 |
| I(RPL_THEMES^2) * Race |
|
|
|
| Â Â Â Â I(RPL_THEMES^2) * Black |
0.93 |
0.45, 1.92 |
0.8 |
| Â Â Â Â I(RPL_THEMES^2) * Asian |
2.23 |
0.29, 17.6 |
0.4 |
| Â Â Â Â I(RPL_THEMES^2) * Native |
0.81 |
0.01, 36.7 |
>0.9 |
| Â Â Â Â I(RPL_THEMES^2) * Other |
1.16 |
0.35, 3.67 |
0.8 |
## Standard Residuals
Flu2019_SVI.mod.std <- rstandard(Flu2019_SVI.mod)
plot(Flu2019_SVI.mod.std, ylab="Standardized Residuals")

## Margins
cplot(Flu2019_SVI.mod, "RPL_THEMES", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given SVI")

## Model performance graphs
model_performance(Flu2019_SVI.mod )
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
--------------------------------------------------------------------------------------------------
1.862e+05 | 1.864e+05 | 0.061 | 0.479 | 1.143 | 0.650 | -Inf | 1.561e-04 | 0.541
performance::check_model(Flu2019_SVI.mod, panel = TRUE)

SVI as a mediator of race -> vaccination
vax_clean1 %>%
mutate(black = as_factor(race_5),
black = fct_recode(black, No = "Other",
No = "Asian",
No = "White", Yes = "Black",
No = "Native"),
black = fct_relevel(black, ref = 'No')) -> race_dich
race_dich$black<-ifelse(race_dich$black=="Yes",1,0)
race_dich %>%
mutate(svi_2 = case_when(RPL_THEMES>= 0.5 ~ '1',TRUE ~ "0")) -> themes_dich
themes_dich$svi_2 = as.numeric(themes_dich$svi_2)
#Step 1: Is there a relationship between X(race) and Y(flu vaccine). Yes - black and other patients were less likely to receive the flu vaccine than Asian and white patients
Flu2019 <- glm(flu_2019 ~ ibd_3 + age_yrs + gender + black + ethnic_3 + lang_3 +
mstat_5+ relig_affil + max_ch + IC + pop_dens + r_pct + svi_2,
family = binomial, data = themes_dich)
# Step 2: Is there a relationship between the mediator (SVI) and race? Yes, patients with higher SVI were more likely to be black
Flu2019_M <- glm(svi_2 ~ ibd_3 + age_yrs + gender + black + ethnic_3 + lang_3 +
mstat_5+ relig_affil + max_ch + IC + pop_dens + r_pct + flu_2019,
family = binomial,
data = themes_dich)
summary(Flu2019_M )
Call:
glm(formula = svi_2 ~ ibd_3 + age_yrs + gender + black + ethnic_3 +
lang_3 + mstat_5 + relig_affil + max_ch + IC + pop_dens +
r_pct + flu_2019, family = binomial, data = themes_dich)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.5450 -0.7870 -0.6884 0.9929 2.0203
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.072e+00 1.740e-01 -6.160 7.29e-10 ***
ibd_3UC -3.294e-01 6.191e-02 -5.320 1.04e-07 ***
ibd_3Unspecified 3.496e-01 3.460e-01 1.011 0.31219
age_yrs 9.567e-04 2.011e-03 0.476 0.63417
genderFemale 5.086e-02 5.839e-02 0.871 0.38380
black 1.383e+00 1.079e-01 12.815 < 2e-16 ***
ethnic_3Hispanic 4.339e-01 1.805e-01 2.403 0.01625 *
lang_3Other 9.716e-01 2.513e-01 3.867 0.00011 ***
mstat_5Unknown 3.319e-01 8.241e-02 4.027 5.64e-05 ***
mstat_5Unmarried 2.323e-01 7.901e-02 2.940 0.00328 **
mstat_5DivorcedSeparated 7.014e-01 1.648e-01 4.255 2.09e-05 ***
mstat_5Widow 3.793e-01 2.161e-01 1.755 0.07921 .
relig_affilNo 5.878e-02 5.977e-02 0.984 0.32536
max_ch 1.269e-02 6.604e-03 1.921 0.05468 .
IC 1.813e-02 6.665e-02 0.272 0.78561
pop_dens 2.614e-05 8.088e-06 3.232 0.00123 **
r_pct -3.789e-03 1.855e-03 -2.043 0.04106 *
flu_2019 -3.023e-01 6.039e-02 -5.006 5.55e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 7618.1 on 6451 degrees of freedom
Residual deviance: 7223.2 on 6434 degrees of freedom
(8756 observations deleted due to missingness)
AIC: 7259.2
Number of Fisher Scoring iterations: 4
broom::glance(Flu2019_M )
tbl_regression(Flu2019_M, label = list(age_yrs ~ "Age", gender~ "Gender", black ~ "Black or African American", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", r_pct ~ "Percent Republican"))
| Characteristic |
log(OR) |
95% CI |
p-value |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
-0.33 |
-0.45, -0.21 |
<0.001 |
| Â Â Â Â Unspecified |
0.35 |
-0.35, 1.0 |
0.3 |
| Age |
0.00 |
0.00, 0.00 |
0.6 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
0.05 |
-0.06, 0.17 |
0.4 |
| Black or African American |
1.4 |
1.2, 1.6 |
<0.001 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
0.43 |
0.07, 0.78 |
0.016 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.97 |
0.48, 1.5 |
<0.001 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.33 |
0.17, 0.49 |
<0.001 |
| Â Â Â Â Unmarried |
0.23 |
0.08, 0.39 |
0.003 |
| Â Â Â Â DivorcedSeparated |
0.70 |
0.37, 1.0 |
<0.001 |
| Â Â Â Â Widow |
0.38 |
-0.05, 0.80 |
0.079 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.06 |
-0.06, 0.18 |
0.3 |
| max_ch |
0.01 |
0.00, 0.03 |
0.055 |
| IC |
0.02 |
-0.11, 0.15 |
0.8 |
| Population Density |
0.00 |
0.00, 0.00 |
0.001 |
| Percent Republican |
0.00 |
-0.01, 0.00 |
0.041 |
| flu_2019 |
-0.30 |
-0.42, -0.18 |
<0.001 |
# Step 3: Mediation analysis
results <- mediate(Flu2019_M, Flu2019, treat= "black", mediator="svi_2",
boot=TRUE, sims=500)
Running nonparametric bootstrap
summary(results)
Causal Mediation Analysis
Nonparametric Bootstrap Confidence Intervals with the Percentile Method
Estimate 95% CI Lower 95% CI Upper p-value
ACME (control) -0.0224 -0.0313 -0.01 <2e-16 ***
ACME (treated) -0.0184 -0.0267 -0.01 <2e-16 ***
ADE (control) -0.1468 -0.1950 -0.10 <2e-16 ***
ADE (treated) -0.1429 -0.1898 -0.10 <2e-16 ***
Total Effect -0.1653 -0.2095 -0.12 <2e-16 ***
Prop. Mediated (control) 0.1354 0.0792 0.22 <2e-16 ***
Prop. Mediated (treated) 0.1115 0.0607 0.19 <2e-16 ***
ACME (average) -0.0204 -0.0290 -0.01 <2e-16 ***
ADE (average) -0.1449 -0.1924 -0.10 <2e-16 ***
Prop. Mediated (average) 0.1235 0.0699 0.20 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Sample Size Used: 6452
Simulations: 500
Flu 2019 + SVI Quartile
All Variables
Flu2019_SVI.4 <- glm(flu_2019 ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + RPL_4,
family = "binomial",
data = vax_clean1)
summary(Flu2019_SVI.4 )
Call:
glm(formula = flu_2019 ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + pop_dens + r_pct + RPL_4, family = "binomial", data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.8713 -1.0406 -0.7844 1.1962 2.0851
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 7.913e-01 1.613e-01 4.907 9.27e-07 ***
ibd_3UC 5.978e-02 5.619e-02 1.064 0.287360
ibd_3Unspecified -9.123e-01 4.345e-01 -2.100 0.035766 *
age_yrs -1.028e-02 1.854e-03 -5.545 2.94e-08 ***
genderFemale 1.825e-01 5.280e-02 3.456 0.000547 ***
race_5Black -6.178e-01 1.152e-01 -5.364 8.13e-08 ***
race_5Asian 4.062e-01 1.587e-01 2.559 0.010500 *
race_5Native 8.040e-02 4.279e-01 0.188 0.850970
race_5Other -4.356e-01 1.552e-01 -2.807 0.005005 **
ethnic_3Hispanic 3.963e-01 1.852e-01 2.140 0.032321 *
lang_3Other -7.620e-01 2.924e-01 -2.606 0.009170 **
mstat_5Unknown -3.403e-01 7.540e-02 -4.514 6.37e-06 ***
mstat_5Unmarried -3.947e-01 7.125e-02 -5.539 3.03e-08 ***
mstat_5DivorcedSeparated -1.653e-01 1.633e-01 -1.012 0.311482
mstat_5Widow -6.893e-01 2.243e-01 -3.073 0.002117 **
relig_affilNo -2.032e-01 5.420e-02 -3.749 0.000177 ***
act_tobYes -1.987e-01 8.584e-02 -2.315 0.020631 *
max_ch 2.555e-02 6.001e-03 4.257 2.07e-05 ***
IC 6.411e-01 6.047e-02 10.602 < 2e-16 ***
pop_dens -2.869e-05 9.012e-06 -3.183 0.001456 **
r_pct -1.380e-02 1.753e-03 -7.871 3.51e-15 ***
RPL_4Second -2.698e-01 6.236e-02 -4.327 1.51e-05 ***
RPL_4Third -3.389e-01 7.424e-02 -4.565 4.99e-06 ***
RPL_4Fourth -5.335e-01 1.016e-01 -5.251 1.51e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 8733.5 on 6407 degrees of freedom
Residual deviance: 8351.5 on 6384 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 8399.5
Number of Fisher Scoring iterations: 4
model_performance(Flu2019_SVI.4)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
8399.529 | 8561.897 | 0.058 | 0.480 | 1.144 | 0.652 | -Inf | 1.561e-04 | 0.540
broom::glance(Flu2019_SVI.4 )
broom::tidy(Flu2019_SVI.4 , exponentiate = TRUE)
tbl_regression(Flu2019_SVI.4, label = list(ibd_3 ~ "IBD Type", age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "race", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", RPL_4 ~ "SVI Quartile"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| IBD Type |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.06 |
0.95, 1.19 |
0.3 |
| Â Â Â Â Unspecified |
0.40 |
0.16, 0.89 |
0.036 |
| Age |
0.99 |
0.99, 0.99 |
<0.001 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.20 |
1.08, 1.33 |
<0.001 |
| race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.54 |
0.43, 0.67 |
<0.001 |
| Â Â Â Â Asian |
1.50 |
1.10, 2.05 |
0.010 |
| Â Â Â Â Native |
1.08 |
0.46, 2.51 |
0.9 |
| Â Â Â Â Other |
0.65 |
0.48, 0.87 |
0.005 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.49 |
1.03, 2.14 |
0.032 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.47 |
0.26, 0.81 |
0.009 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.71 |
0.61, 0.82 |
<0.001 |
| Â Â Â Â Unmarried |
0.67 |
0.59, 0.77 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.85 |
0.61, 1.17 |
0.3 |
| Â Â Â Â Widow |
0.50 |
0.32, 0.77 |
0.002 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.82 |
0.73, 0.91 |
<0.001 |
| Active Tobacco Use |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.82 |
0.69, 0.97 |
0.021 |
| Charlson Comorbidity Index |
1.03 |
1.01, 1.04 |
<0.001 |
| IC |
1.90 |
1.69, 2.14 |
<0.001 |
| Population density |
1.00 |
1.00, 1.00 |
0.001 |
| Percent Rebuplican |
0.99 |
0.98, 0.99 |
<0.001 |
| SVI Quartile |
|
|
|
| Â Â Â Â First |
— |
— |
|
| Â Â Â Â Second |
0.76 |
0.68, 0.86 |
<0.001 |
| Â Â Â Â Third |
0.71 |
0.62, 0.82 |
<0.001 |
| Â Â Â Â Fourth |
0.59 |
0.48, 0.72 |
<0.001 |
## Margins Plot
cplot(Flu2019_SVI.4, "RPL_4", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given SVI Quartile")

# Performance
model_performance(Flu2019_SVI.4)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
8399.529 | 8561.897 | 0.058 | 0.480 | 1.144 | 0.652 | -Inf | 1.561e-04 | 0.540
performance::check_model(Flu2019_SVI.4, panel = TRUE)

SVI Quartile as moderator for race -> vaccination
Flu2019_SVI.4race <- glm(flu_2019 ~ ibd_3 + age_yrs + gender + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + RPL_4*race_5,
family = "binomial",
data = vax_clean1)
summary(Flu2019_SVI.4race )
Call:
glm(formula = flu_2019 ~ ibd_3 + age_yrs + gender + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC +
pop_dens + r_pct + RPL_4 * race_5, family = "binomial", data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.6830 -1.0447 -0.7777 1.1921 2.1242
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 7.900e-01 1.621e-01 4.874 1.09e-06 ***
ibd_3UC 6.005e-02 5.631e-02 1.066 0.286284
ibd_3Unspecified -9.029e-01 4.350e-01 -2.076 0.037927 *
age_yrs -1.046e-02 1.859e-03 -5.626 1.84e-08 ***
genderFemale 1.846e-01 5.287e-02 3.492 0.000479 ***
ethnic_3Hispanic 3.894e-01 1.869e-01 2.083 0.037229 *
lang_3Other -7.340e-01 2.962e-01 -2.478 0.013200 *
mstat_5Unknown -3.386e-01 7.557e-02 -4.481 7.43e-06 ***
mstat_5Unmarried -3.983e-01 7.140e-02 -5.579 2.42e-08 ***
mstat_5DivorcedSeparated -1.898e-01 1.643e-01 -1.156 0.247857
mstat_5Widow -6.771e-01 2.243e-01 -3.019 0.002540 **
relig_affilNo -2.082e-01 5.430e-02 -3.834 0.000126 ***
act_tobYes -1.953e-01 8.600e-02 -2.271 0.023132 *
max_ch 2.569e-02 6.011e-03 4.274 1.92e-05 ***
IC 6.432e-01 6.061e-02 10.613 < 2e-16 ***
pop_dens -2.877e-05 9.085e-06 -3.166 0.001543 **
r_pct -1.386e-02 1.761e-03 -7.872 3.49e-15 ***
RPL_4Second -2.399e-01 6.587e-02 -3.642 0.000270 ***
RPL_4Third -2.875e-01 7.919e-02 -3.630 0.000283 ***
RPL_4Fourth -6.118e-01 1.164e-01 -5.256 1.47e-07 ***
race_5Black -2.534e-01 2.481e-01 -1.022 0.307009
race_5Asian 6.036e-01 2.285e-01 2.642 0.008245 **
race_5Native 1.700e-01 6.931e-01 0.245 0.806256
race_5Other -5.303e-01 2.136e-01 -2.482 0.013050 *
RPL_4Second:race_5Black -5.934e-01 3.366e-01 -1.763 0.077920 .
RPL_4Third:race_5Black -7.037e-01 3.325e-01 -2.116 0.034322 *
RPL_4Fourth:race_5Black -1.058e-01 3.198e-01 -0.331 0.740666
RPL_4Second:race_5Asian -6.452e-01 3.502e-01 -1.843 0.065384 .
RPL_4Third:race_5Asian -1.532e-01 4.413e-01 -0.347 0.728495
RPL_4Fourth:race_5Asian 1.284e+01 1.812e+02 0.071 0.943491
RPL_4Second:race_5Native -1.250e-01 9.666e-01 -0.129 0.897095
RPL_4Third:race_5Native 2.028e-01 1.583e+00 0.128 0.898058
RPL_4Fourth:race_5Native -4.199e-01 1.440e+00 -0.292 0.770570
RPL_4Second:race_5Other 4.275e-01 3.624e-01 1.180 0.238115
RPL_4Third:race_5Other -2.775e-01 4.448e-01 -0.624 0.532728
RPL_4Fourth:race_5Other 3.338e-01 4.797e-01 0.696 0.486586
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 8733.5 on 6407 degrees of freedom
Residual deviance: 8332.5 on 6372 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 8404.5
Number of Fisher Scoring iterations: 11
model_performance(Flu2019_SVI.4race)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
8404.530 | 8648.081 | 0.060 | 0.479 | 1.144 | 0.650 | -Inf | 1.561e-04 | 0.541
broom::glance(Flu2019_SVI.4race )
broom::tidy(Flu2019_SVI.4race , exponentiate = TRUE)
tbl_regression(Flu2019_SVI.4race, label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_4 ~ "SVI Quartile", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", r_pct ~ "Percent Republican"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.06 |
0.95, 1.19 |
0.3 |
| Â Â Â Â Unspecified |
0.41 |
0.16, 0.90 |
0.038 |
| Age |
0.99 |
0.99, 0.99 |
<0.001 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.20 |
1.08, 1.33 |
<0.001 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.48 |
1.02, 2.13 |
0.037 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.48 |
0.26, 0.84 |
0.013 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.71 |
0.61, 0.83 |
<0.001 |
| Â Â Â Â Unmarried |
0.67 |
0.58, 0.77 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.83 |
0.60, 1.14 |
0.2 |
| Â Â Â Â Widow |
0.51 |
0.32, 0.78 |
0.003 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.81 |
0.73, 0.90 |
<0.001 |
| act_tob |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.82 |
0.69, 0.97 |
0.023 |
| max_ch |
1.03 |
1.01, 1.04 |
<0.001 |
| IC |
1.90 |
1.69, 2.14 |
<0.001 |
| Population Density |
1.00 |
1.00, 1.00 |
0.002 |
| Percent Republican |
0.99 |
0.98, 0.99 |
<0.001 |
| SVI Quartile |
|
|
|
| Â Â Â Â First |
— |
— |
|
| Â Â Â Â Second |
0.79 |
0.69, 0.89 |
<0.001 |
| Â Â Â Â Third |
0.75 |
0.64, 0.88 |
<0.001 |
| Â Â Â Â Fourth |
0.54 |
0.43, 0.68 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.78 |
0.47, 1.26 |
0.3 |
| Â Â Â Â Asian |
1.83 |
1.18, 2.89 |
0.008 |
| Â Â Â Â Native |
1.19 |
0.30, 4.97 |
0.8 |
| Â Â Â Â Other |
0.59 |
0.38, 0.89 |
0.013 |
| SVI Quartile * Race |
|
|
|
| Â Â Â Â Second * Black |
0.55 |
0.28, 1.07 |
0.078 |
| Â Â Â Â Third * Black |
0.49 |
0.26, 0.95 |
0.034 |
| Â Â Â Â Fourth * Black |
0.90 |
0.48, 1.69 |
0.7 |
| Â Â Â Â Second * Asian |
0.52 |
0.26, 1.04 |
0.065 |
| Â Â Â Â Third * Asian |
0.86 |
0.36, 2.05 |
0.7 |
| Â Â Â Â Fourth * Asian |
377,697 |
0.00, NA |
>0.9 |
| Â Â Â Â Second * Native |
0.88 |
0.12, 5.81 |
0.9 |
| Â Â Â Â Third * Native |
1.22 |
0.04, 39.0 |
0.9 |
| Â Â Â Â Fourth * Native |
0.66 |
0.02, 10.4 |
0.8 |
| Â Â Â Â Second * Other |
1.53 |
0.75, 3.12 |
0.2 |
| Â Â Â Â Third * Other |
0.76 |
0.30, 1.76 |
0.5 |
| Â Â Â Â Fourth * Other |
1.40 |
0.53, 3.51 |
0.5 |
# Performance
performance::check_model(Flu2019_SVI.4race, panel = TRUE)

Flu 2019 + Themes: Multivaraible Model
All Variables
Flu2019_themes <- glm(flu_2019 ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + RPL_THEME1 + RPL_THEME2 + RPL_THEME3
+ RPL_THEME4,
family = "binomial",
data = vax_clean1)
summary(Flu2019_themes )
Call:
glm(formula = flu_2019 ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + pop_dens + r_pct + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 +
RPL_THEME4, family = "binomial", data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9017 -1.0388 -0.7782 1.1945 2.0910
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 7.979e-01 1.922e-01 4.151 3.31e-05 ***
ibd_3UC 5.431e-02 5.623e-02 0.966 0.334151
ibd_3Unspecified -8.795e-01 4.347e-01 -2.023 0.043061 *
age_yrs -1.014e-02 1.857e-03 -5.462 4.70e-08 ***
genderFemale 1.820e-01 5.285e-02 3.443 0.000575 ***
race_5Black -5.785e-01 1.158e-01 -4.997 5.84e-07 ***
race_5Asian 3.517e-01 1.600e-01 2.197 0.027991 *
race_5Native 9.071e-02 4.278e-01 0.212 0.832077
race_5Other -4.396e-01 1.554e-01 -2.829 0.004667 **
ethnic_3Hispanic 3.980e-01 1.854e-01 2.147 0.031818 *
lang_3Other -7.735e-01 2.926e-01 -2.643 0.008209 **
mstat_5Unknown -3.347e-01 7.552e-02 -4.431 9.37e-06 ***
mstat_5Unmarried -3.891e-01 7.136e-02 -5.452 4.98e-08 ***
mstat_5DivorcedSeparated -1.513e-01 1.634e-01 -0.926 0.354591
mstat_5Widow -6.880e-01 2.245e-01 -3.064 0.002182 **
relig_affilNo -1.976e-01 5.438e-02 -3.633 0.000280 ***
act_tobYes -1.898e-01 8.608e-02 -2.204 0.027497 *
max_ch 2.556e-02 6.008e-03 4.254 2.10e-05 ***
IC 6.411e-01 6.057e-02 10.585 < 2e-16 ***
pop_dens -2.667e-05 9.033e-06 -2.953 0.003150 **
r_pct -1.162e-02 2.075e-03 -5.599 2.16e-08 ***
RPL_THEME1 -3.882e-01 1.546e-01 -2.512 0.012014 *
RPL_THEME2 -3.310e-01 1.355e-01 -2.443 0.014571 *
RPL_THEME3 5.502e-02 1.101e-01 0.500 0.617336
RPL_THEME4 -2.061e-01 1.149e-01 -1.794 0.072851 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 8733.5 on 6407 degrees of freedom
Residual deviance: 8339.4 on 6383 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 8389.4
Number of Fisher Scoring iterations: 4
broom::glance(Flu2019_themes )
broom::tidy(Flu2019_themes , exponentiate = TRUE)
tbl_regression(Flu2019_themes, label = list(ibd_3 ~ "IBD Type", age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "Race", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| IBD Type |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.06 |
0.95, 1.18 |
0.3 |
| Â Â Â Â Unspecified |
0.41 |
0.16, 0.92 |
0.043 |
| Age |
0.99 |
0.99, 0.99 |
<0.001 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.20 |
1.08, 1.33 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.56 |
0.45, 0.70 |
<0.001 |
| Â Â Â Â Asian |
1.42 |
1.04, 1.95 |
0.028 |
| Â Â Â Â Native |
1.09 |
0.47, 2.54 |
0.8 |
| Â Â Â Â Other |
0.64 |
0.47, 0.87 |
0.005 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.49 |
1.04, 2.14 |
0.032 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.46 |
0.25, 0.80 |
0.008 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.72 |
0.62, 0.83 |
<0.001 |
| Â Â Â Â Unmarried |
0.68 |
0.59, 0.78 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.86 |
0.62, 1.18 |
0.4 |
| Â Â Â Â Widow |
0.50 |
0.32, 0.77 |
0.002 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.82 |
0.74, 0.91 |
<0.001 |
| Active Tobacco Use |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.83 |
0.70, 0.98 |
0.027 |
| Charlson Comorbidity Index |
1.03 |
1.01, 1.04 |
<0.001 |
| IC |
1.90 |
1.69, 2.14 |
<0.001 |
| Population density |
1.00 |
1.00, 1.00 |
0.003 |
| Percent Rebuplican |
0.99 |
0.98, 0.99 |
<0.001 |
| Soceioeconomic Status |
0.68 |
0.50, 0.92 |
0.012 |
| Household Composition |
0.72 |
0.55, 0.94 |
0.015 |
| Minority Status and Language |
1.06 |
0.85, 1.31 |
0.6 |
| Housing and Transportation |
0.81 |
0.65, 1.02 |
0.073 |
# Model performance
model_performance(Flu2019_themes)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
8389.397 | 8558.529 | 0.060 | 0.479 | 1.143 | 0.651 | -Inf | 1.561e-04 | 0.541
performance::check_model(Flu2019_themes, panel = TRUE)

# Margins
cplot(Flu2019_themes, "RPL_THEME1", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME1")

cplot(Flu2019_themes, "RPL_THEME2", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME2")

cplot(Flu2019_themes, "RPL_THEME3", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME3")

cplot(Flu2019_themes, "RPL_THEME4", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME4")

Interaction between Theme 1 and Race
Flu2019_themes.mod <- glm(flu_2019 ~ ibd_3 + age_yrs + gender + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + RPL_THEME1*race_5 + RPL_THEME2 + RPL_THEME3
+ RPL_THEME4,
family = "binomial",
data = vax_clean1)
summary(Flu2019_themes.mod )
Call:
glm(formula = flu_2019 ~ ibd_3 + age_yrs + gender + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC +
pop_dens + r_pct + RPL_THEME1 * race_5 + RPL_THEME2 + RPL_THEME3 +
RPL_THEME4, family = "binomial", data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9050 -1.0392 -0.7786 1.1943 2.0863
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 8.011e-01 1.927e-01 4.156 3.23e-05 ***
ibd_3UC 5.496e-02 5.627e-02 0.977 0.328693
ibd_3Unspecified -8.793e-01 4.347e-01 -2.023 0.043095 *
age_yrs -1.017e-02 1.858e-03 -5.475 4.38e-08 ***
genderFemale 1.815e-01 5.287e-02 3.433 0.000598 ***
ethnic_3Hispanic 3.975e-01 1.859e-01 2.138 0.032516 *
lang_3Other -7.853e-01 2.943e-01 -2.669 0.007613 **
mstat_5Unknown -3.353e-01 7.553e-02 -4.439 9.05e-06 ***
mstat_5Unmarried -3.891e-01 7.139e-02 -5.451 5.02e-08 ***
mstat_5DivorcedSeparated -1.520e-01 1.635e-01 -0.930 0.352525
mstat_5Widow -6.876e-01 2.245e-01 -3.062 0.002196 **
relig_affilNo -1.977e-01 5.439e-02 -3.635 0.000278 ***
act_tobYes -1.894e-01 8.612e-02 -2.199 0.027882 *
max_ch 2.563e-02 6.011e-03 4.264 2.01e-05 ***
IC 6.413e-01 6.059e-02 10.585 < 2e-16 ***
pop_dens -2.666e-05 9.058e-06 -2.944 0.003243 **
r_pct -1.172e-02 2.099e-03 -5.585 2.34e-08 ***
RPL_THEME1 -3.745e-01 1.626e-01 -2.303 0.021297 *
race_5Black -4.985e-01 2.241e-01 -2.224 0.026125 *
race_5Asian 3.647e-01 2.212e-01 1.649 0.099180 .
race_5Native 5.863e-01 8.023e-01 0.731 0.464883
race_5Other -4.815e-01 2.252e-01 -2.138 0.032503 *
RPL_THEME2 -3.259e-01 1.366e-01 -2.385 0.017073 *
RPL_THEME3 5.120e-02 1.105e-01 0.463 0.643241
RPL_THEME4 -2.100e-01 1.153e-01 -1.821 0.068649 .
RPL_THEME1:race_5Black -1.574e-01 3.814e-01 -0.413 0.679899
RPL_THEME1:race_5Asian -4.792e-02 6.888e-01 -0.070 0.944535
RPL_THEME1:race_5Native -1.383e+00 1.900e+00 -0.728 0.466645
RPL_THEME1:race_5Other 1.296e-01 5.168e-01 0.251 0.802030
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 8733.5 on 6407 degrees of freedom
Residual deviance: 8338.6 on 6379 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 8396.6
Number of Fisher Scoring iterations: 4
broom::glance(Flu2019_themes.mod )
broom::tidy(Flu2019_themes.mod , exponentiate = TRUE)
tbl_regression(Flu2019_themes.mod, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "Race", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.06 |
0.95, 1.18 |
0.3 |
| Â Â Â Â Unspecified |
0.42 |
0.16, 0.92 |
0.043 |
| Age |
0.99 |
0.99, 0.99 |
<0.001 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.20 |
1.08, 1.33 |
<0.001 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.49 |
1.03, 2.15 |
0.033 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.46 |
0.25, 0.80 |
0.008 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.72 |
0.62, 0.83 |
<0.001 |
| Â Â Â Â Unmarried |
0.68 |
0.59, 0.78 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.86 |
0.62, 1.18 |
0.4 |
| Â Â Â Â Widow |
0.50 |
0.32, 0.77 |
0.002 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.82 |
0.74, 0.91 |
<0.001 |
| act_tob |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.83 |
0.70, 0.98 |
0.028 |
| Charlson Comorbidity Index |
1.03 |
1.01, 1.04 |
<0.001 |
| IC |
1.90 |
1.69, 2.14 |
<0.001 |
| Population density |
1.00 |
1.00, 1.00 |
0.003 |
| Percent Rebuplican |
0.99 |
0.98, 0.99 |
<0.001 |
| Soceioeconomic Status |
0.69 |
0.50, 0.95 |
0.021 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.61 |
0.39, 0.94 |
0.026 |
| Â Â Â Â Asian |
1.44 |
0.94, 2.23 |
0.10 |
| Â Â Â Â Native |
1.80 |
0.39, 9.67 |
0.5 |
| Â Â Â Â Other |
0.62 |
0.40, 0.96 |
0.033 |
| Household Composition |
0.72 |
0.55, 0.94 |
0.017 |
| Minority Status and Language |
1.05 |
0.85, 1.31 |
0.6 |
| Housing and Transportation |
0.81 |
0.65, 1.02 |
0.069 |
| Soceioeconomic Status * Race |
|
|
|
| Â Â Â Â Soceioeconomic Status * Black |
0.85 |
0.40, 1.80 |
0.7 |
| Â Â Â Â Soceioeconomic Status * Asian |
0.95 |
0.24, 3.65 |
>0.9 |
| Â Â Â Â Soceioeconomic Status * Native |
0.25 |
0.00, 8.73 |
0.5 |
| Â Â Â Â Soceioeconomic Status * Other |
1.14 |
0.41, 3.10 |
0.8 |
# Model performance
model_performance(Flu2019_themes.mod)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
8396.591 | 8592.785 | 0.060 | 0.479 | 1.143 | 0.651 | -Inf | 1.561e-04 | 0.541
performance::check_model(Flu2019_themes.mod, panel = TRUE)

# Margins
cplot(Flu2019_themes.mod, "RPL_THEME1", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME1")

cplot(Flu2019_themes.mod, "RPL_THEME2", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME2")

cplot(Flu2019_themes.mod, "RPL_THEME3", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME3")

cplot(Flu2019_themes.mod, "RPL_THEME4", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME4")

Theme 1 as mediator of race -> vaccination
#Step 1: Is there a relationship between X(race) and Y(flu vaccine). Yes - black and other patients were less likely to receive the flu vaccine than Asian and white patients
race_dich %>%
mutate(theme1_2 = case_when(RPL_THEME1>= 0.5 ~ '1',TRUE ~ "0")) -> themes_dich2
themes_dich2$theme1_2 = as.numeric(themes_dich2$theme1_2)
Flu2019.0.2 <- glm(flu_2019 ~ ibd_3 + age_yrs + gender + black + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + theme1_2, family = binomial, data = themes_dich2)
# Step 2: Is there a relationship between the mediator (SVI) and race? Yes, patients with higher SVI were more likely to be black
Flu2019_M.2 <- glm(theme1_2 ~ ibd_3 + age_yrs + gender + black + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + flu_2019,
family = binomial,
data = themes_dich2)
summary(Flu2019_M )
Call:
glm(formula = svi_2 ~ ibd_3 + age_yrs + gender + black + ethnic_3 +
lang_3 + mstat_5 + relig_affil + max_ch + IC + pop_dens +
r_pct + flu_2019, family = binomial, data = themes_dich)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.5450 -0.7870 -0.6884 0.9929 2.0203
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.072e+00 1.740e-01 -6.160 7.29e-10 ***
ibd_3UC -3.294e-01 6.191e-02 -5.320 1.04e-07 ***
ibd_3Unspecified 3.496e-01 3.460e-01 1.011 0.31219
age_yrs 9.567e-04 2.011e-03 0.476 0.63417
genderFemale 5.086e-02 5.839e-02 0.871 0.38380
black 1.383e+00 1.079e-01 12.815 < 2e-16 ***
ethnic_3Hispanic 4.339e-01 1.805e-01 2.403 0.01625 *
lang_3Other 9.716e-01 2.513e-01 3.867 0.00011 ***
mstat_5Unknown 3.319e-01 8.241e-02 4.027 5.64e-05 ***
mstat_5Unmarried 2.323e-01 7.901e-02 2.940 0.00328 **
mstat_5DivorcedSeparated 7.014e-01 1.648e-01 4.255 2.09e-05 ***
mstat_5Widow 3.793e-01 2.161e-01 1.755 0.07921 .
relig_affilNo 5.878e-02 5.977e-02 0.984 0.32536
max_ch 1.269e-02 6.604e-03 1.921 0.05468 .
IC 1.813e-02 6.665e-02 0.272 0.78561
pop_dens 2.614e-05 8.088e-06 3.232 0.00123 **
r_pct -3.789e-03 1.855e-03 -2.043 0.04106 *
flu_2019 -3.023e-01 6.039e-02 -5.006 5.55e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 7618.1 on 6451 degrees of freedom
Residual deviance: 7223.2 on 6434 degrees of freedom
(8756 observations deleted due to missingness)
AIC: 7259.2
Number of Fisher Scoring iterations: 4
summary(Flu2019_M.2 )
Call:
glm(formula = theme1_2 ~ ibd_3 + age_yrs + gender + black + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC +
pop_dens + r_pct + flu_2019, family = binomial, data = themes_dich2)
Deviance Residuals:
Min 1Q Median 3Q Max
-3.7049 -0.7746 -0.6713 1.0204 2.0272
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.472e+00 1.827e-01 -8.057 7.80e-16 ***
ibd_3UC -2.901e-01 6.269e-02 -4.627 3.71e-06 ***
ibd_3Unspecified 2.641e-02 3.745e-01 0.071 0.943794
age_yrs 7.131e-04 2.036e-03 0.350 0.726181
genderFemale 4.546e-03 5.900e-02 0.077 0.938587
black 1.435e+00 1.091e-01 13.149 < 2e-16 ***
ethnic_3Hispanic 4.301e-01 1.833e-01 2.346 0.018953 *
lang_3Other 1.089e+00 2.538e-01 4.291 1.78e-05 ***
mstat_5Unknown 2.459e-01 8.319e-02 2.956 0.003113 **
mstat_5Unmarried 1.218e-01 7.983e-02 1.526 0.127104
mstat_5DivorcedSeparated 5.944e-01 1.667e-01 3.566 0.000362 ***
mstat_5Widow 7.570e-02 2.277e-01 0.332 0.739552
relig_affilNo 6.051e-02 6.044e-02 1.001 0.316763
act_tobYes 5.924e-01 8.564e-02 6.918 4.60e-12 ***
max_ch 1.356e-02 6.646e-03 2.040 0.041344 *
IC 6.700e-02 6.743e-02 0.994 0.320388
pop_dens 5.239e-05 1.070e-05 4.898 9.70e-07 ***
r_pct 3.460e-03 1.990e-03 1.739 0.082038 .
flu_2019 -3.593e-01 6.120e-02 -5.871 4.34e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 7527.9 on 6407 degrees of freedom
Residual deviance: 7089.2 on 6389 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 7127.2
Number of Fisher Scoring iterations: 4
broom::glance(Flu2019_M.2 )
tbl_regression(Flu2019_M.2, label = list(age_yrs ~ "Age", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", r_pct ~ "Percent Republican"))
| Characteristic |
log(OR) |
95% CI |
p-value |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
-0.29 |
-0.41, -0.17 |
<0.001 |
| Â Â Â Â Unspecified |
0.03 |
-0.75, 0.74 |
>0.9 |
| Age |
0.00 |
0.00, 0.00 |
0.7 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
0.00 |
-0.11, 0.12 |
>0.9 |
| black |
1.4 |
1.2, 1.6 |
<0.001 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
0.43 |
0.06, 0.78 |
0.019 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
1.1 |
0.59, 1.6 |
<0.001 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.25 |
0.08, 0.41 |
0.003 |
| Â Â Â Â Unmarried |
0.12 |
-0.03, 0.28 |
0.13 |
| Â Â Â Â DivorcedSeparated |
0.59 |
0.26, 0.92 |
<0.001 |
| Â Â Â Â Widow |
0.08 |
-0.38, 0.51 |
0.7 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.06 |
-0.06, 0.18 |
0.3 |
| act_tob |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.59 |
0.42, 0.76 |
<0.001 |
| max_ch |
0.01 |
0.00, 0.03 |
0.041 |
| IC |
0.07 |
-0.06, 0.20 |
0.3 |
| Population Density |
0.00 |
0.00, 0.00 |
<0.001 |
| Percent Republican |
0.00 |
0.00, 0.01 |
0.082 |
| flu_2019 |
-0.36 |
-0.48, -0.24 |
<0.001 |
# Step 3: Mediation analysis
results1 <- mediate(Flu2019_M.2, Flu2019.0.2, treat="black", mediator="theme1_2",
boot=TRUE, sims=500)
Running nonparametric bootstrap
summary(results1)
Causal Mediation Analysis
Nonparametric Bootstrap Confidence Intervals with the Percentile Method
Estimate 95% CI Lower 95% CI Upper p-value
ACME (control) -0.0261 -0.0363 -0.02 <2e-16 ***
ACME (treated) -0.0217 -0.0315 -0.01 <2e-16 ***
ADE (control) -0.1408 -0.1887 -0.09 <2e-16 ***
ADE (treated) -0.1364 -0.1830 -0.09 <2e-16 ***
Total Effect -0.1625 -0.2082 -0.12 <2e-16 ***
Prop. Mediated (control) 0.1605 0.0993 0.26 <2e-16 ***
Prop. Mediated (treated) 0.1338 0.0787 0.23 <2e-16 ***
ACME (average) -0.0239 -0.0335 -0.02 <2e-16 ***
ADE (average) -0.1386 -0.1859 -0.09 <2e-16 ***
Prop. Mediated (average) 0.1472 0.0883 0.25 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Sample Size Used: 6408
Simulations: 500
Flu 2021 + Total SVI: Multivaraible Model
All variables
Flu2021_SVI <- glm(flu_2021 ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + RPL_THEMES,
family = "binomial",
data = vax_clean1)
summary(Flu2021_SVI )
Call:
glm(formula = flu_2021 ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + pop_dens + r_pct + RPL_THEMES, family = "binomial",
data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9608 -0.8554 -0.6624 1.1839 2.3224
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.661e-01 1.793e-01 0.927 0.354162
ibd_3UC 4.073e-02 6.096e-02 0.668 0.504101
ibd_3Unspecified -1.406e+00 6.234e-01 -2.255 0.024121 *
age_yrs 6.469e-03 1.985e-03 3.258 0.001121 **
genderFemale 2.596e-01 5.775e-02 4.496 6.91e-06 ***
race_5Black -5.379e-01 1.274e-01 -4.222 2.42e-05 ***
race_5Asian 3.752e-01 1.612e-01 2.327 0.019945 *
race_5Native -2.313e-01 4.801e-01 -0.482 0.629985
race_5Other -4.068e-01 1.746e-01 -2.329 0.019855 *
ethnic_3Hispanic 3.722e-01 1.976e-01 1.883 0.059648 .
lang_3Other -8.604e-01 3.374e-01 -2.550 0.010776 *
mstat_5Unknown -1.564e-01 8.036e-02 -1.946 0.051702 .
mstat_5Unmarried -3.710e-01 7.695e-02 -4.822 1.42e-06 ***
mstat_5DivorcedSeparated -2.483e-01 1.783e-01 -1.392 0.163794
mstat_5Widow -4.179e-01 2.168e-01 -1.928 0.053899 .
relig_affilNo -1.242e-01 5.945e-02 -2.089 0.036697 *
act_tobYes -4.813e-01 1.032e-01 -4.665 3.08e-06 ***
max_ch 4.440e-02 6.216e-03 7.142 9.17e-13 ***
IC 4.128e-01 6.552e-02 6.300 2.98e-10 ***
pop_dens -4.865e-05 1.278e-05 -3.807 0.000141 ***
r_pct -2.568e-02 1.986e-03 -12.926 < 2e-16 ***
RPL_THEMES -9.939e-01 1.214e-01 -8.186 2.71e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 7855.1 on 6407 degrees of freedom
Residual deviance: 7318.2 on 6386 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 7362.2
Number of Fisher Scoring iterations: 5
broom::glance(Flu2021_SVI )
broom::tidy(Flu2021_SVI , exponentiate = TRUE)
tbl_regression(Flu2021_SVI, label = list(ibd_3 ~ "IBD Type", age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "Race", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", IC ~ "Immunocompromised", RPL_THEMES ~ "Total SVI"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| IBD Type |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.04 |
0.92, 1.17 |
0.5 |
| Â Â Â Â Unspecified |
0.25 |
0.06, 0.72 |
0.024 |
| Age |
1.01 |
1.00, 1.01 |
0.001 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.30 |
1.16, 1.45 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.58 |
0.45, 0.75 |
<0.001 |
| Â Â Â Â Asian |
1.46 |
1.06, 1.99 |
0.020 |
| Â Â Â Â Native |
0.79 |
0.29, 1.96 |
0.6 |
| Â Â Â Â Other |
0.67 |
0.47, 0.93 |
0.020 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.45 |
0.98, 2.13 |
0.060 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.42 |
0.21, 0.79 |
0.011 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.86 |
0.73, 1.00 |
0.052 |
| Â Â Â Â Unmarried |
0.69 |
0.59, 0.80 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.78 |
0.55, 1.10 |
0.2 |
| Â Â Â Â Widow |
0.66 |
0.43, 1.00 |
0.054 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.88 |
0.79, 0.99 |
0.037 |
| Active Tobacco Use |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.62 |
0.50, 0.75 |
<0.001 |
| Charlson Comorbidity Index |
1.05 |
1.03, 1.06 |
<0.001 |
| Immunocompromised |
1.51 |
1.33, 1.72 |
<0.001 |
| Population density |
1.00 |
1.00, 1.00 |
<0.001 |
| Percent Rebuplican |
0.97 |
0.97, 0.98 |
<0.001 |
| Total SVI |
0.37 |
0.29, 0.47 |
<0.001 |
# Model performance
model_performance(Flu2021_SVI)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
7362.208 | 7511.045 | 0.082 | 0.440 | 1.071 | 0.571 | -Inf | 1.565e-04 | 0.613
performance::check_model(Flu2021_SVI, panel = TRUE)


# Margins
cplot(Flu2021_SVI, "RPL_THEMES", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given SVI")

Age and RPL_THEMES as Quadratic
Flu2021_SVI.2 <- glm(flu_2021 ~ I(age_yrs^2) + ibd_3 + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil +
act_tob + max_ch + IC + pop_dens + r_pct + I(RPL_THEMES^2),
family = "binomial",
data = vax_clean1)
summary(Flu2021_SVI.2 )
Call:
glm(formula = flu_2021 ~ I(age_yrs^2) + ibd_3 + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + pop_dens + r_pct + I(RPL_THEMES^2), family = "binomial",
data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9699 -0.8568 -0.6634 1.1917 2.4034
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.909e-01 1.547e-01 1.234 0.217313
I(age_yrs^2) 6.237e-05 1.970e-05 3.166 0.001545 **
ibd_3UC 3.852e-02 6.095e-02 0.632 0.527353
ibd_3Unspecified -1.402e+00 6.214e-01 -2.256 0.024062 *
genderFemale 2.614e-01 5.770e-02 4.530 5.90e-06 ***
race_5Black -5.173e-01 1.281e-01 -4.038 5.39e-05 ***
race_5Asian 3.655e-01 1.611e-01 2.269 0.023276 *
race_5Native -2.471e-01 4.800e-01 -0.515 0.606776
race_5Other -4.035e-01 1.747e-01 -2.310 0.020881 *
ethnic_3Hispanic 3.774e-01 1.977e-01 1.909 0.056305 .
lang_3Other -8.693e-01 3.377e-01 -2.574 0.010052 *
mstat_5Unknown -1.764e-01 7.936e-02 -2.223 0.026245 *
mstat_5Unmarried -3.959e-01 7.480e-02 -5.292 1.21e-07 ***
mstat_5DivorcedSeparated -2.600e-01 1.785e-01 -1.457 0.145086
mstat_5Widow -4.566e-01 2.193e-01 -2.082 0.037356 *
relig_affilNo -1.228e-01 5.951e-02 -2.064 0.039018 *
act_tobYes -4.814e-01 1.031e-01 -4.670 3.01e-06 ***
max_ch 4.382e-02 6.256e-03 7.005 2.47e-12 ***
IC 4.084e-01 6.547e-02 6.238 4.42e-10 ***
pop_dens -4.975e-05 1.284e-05 -3.876 0.000106 ***
r_pct -2.576e-02 1.988e-03 -12.960 < 2e-16 ***
I(RPL_THEMES^2) -1.097e+00 1.426e-01 -7.694 1.42e-14 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 7855.1 on 6407 degrees of freedom
Residual deviance: 7324.4 on 6386 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 7368.4
Number of Fisher Scoring iterations: 5
broom::glance(Flu2021_SVI.2 )
broom::tidy(Flu2021_SVI.2 , exponentiate = TRUE)
tbl_regression(Flu2021_SVI.2, label = list(gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", r_pct ~ "Percent Republican", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| I(age_yrs^2) |
1.00 |
1.00, 1.00 |
0.002 |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.04 |
0.92, 1.17 |
0.5 |
| Â Â Â Â Unspecified |
0.25 |
0.06, 0.72 |
0.024 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.30 |
1.16, 1.45 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.60 |
0.46, 0.76 |
<0.001 |
| Â Â Â Â Asian |
1.44 |
1.05, 1.97 |
0.023 |
| Â Â Â Â Native |
0.78 |
0.29, 1.93 |
0.6 |
| Â Â Â Â Other |
0.67 |
0.47, 0.93 |
0.021 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.46 |
0.98, 2.14 |
0.056 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.42 |
0.21, 0.79 |
0.010 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.84 |
0.72, 0.98 |
0.026 |
| Â Â Â Â Unmarried |
0.67 |
0.58, 0.78 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.77 |
0.54, 1.09 |
0.15 |
| Â Â Â Â Widow |
0.63 |
0.41, 0.97 |
0.037 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.88 |
0.79, 0.99 |
0.039 |
| act_tob |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.62 |
0.50, 0.75 |
<0.001 |
| Charlson Comorbidity Index |
1.04 |
1.03, 1.06 |
<0.001 |
| IC |
1.50 |
1.32, 1.71 |
<0.001 |
| Population Density |
1.00 |
1.00, 1.00 |
<0.001 |
| Percent Republican |
0.97 |
0.97, 0.98 |
<0.001 |
| I(RPL_THEMES^2) |
0.33 |
0.25, 0.44 |
<0.001 |
## Standard Residuals
Flu2021_SVI.2.std <- rstandard(Flu2021_SVI.2)
plot(Flu2021_SVI.2.std, ylab="Standardized Residuals")

## Margins
cplot(Flu2021_SVI.2, "RPL_THEMES", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given SVI")

## Model performance graphs
model_performance(Flu2021_SVI.2 )
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
--------------------------------------------------------------------------------------------------
2.773e+05 | 2.774e+05 | 0.081 | 0.440 | 1.071 | 0.572 | -Inf | 1.569e-04 | 0.612
performance::check_model(Flu2021_SVI.2, panel = TRUE)

Interaction between race and RPL_THEMES
Flu2021_SVI.mod <- glm(flu_2021 ~ I(age_yrs^2) + ibd_3 + gender + ethnic_3
+ lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + I(RPL_THEMES^2)*race_5,
family = "binomial",
data = vax_clean1)
summary(Flu2021_SVI.mod )
Call:
glm(formula = flu_2021 ~ I(age_yrs^2) + ibd_3 + gender + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC +
pop_dens + r_pct + I(RPL_THEMES^2) * race_5, family = "binomial",
data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9555 -0.8568 -0.6648 1.1924 2.6438
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.769e-01 1.551e-01 1.140 0.254082
I(age_yrs^2) 6.294e-05 1.971e-05 3.193 0.001407 **
ibd_3UC 4.040e-02 6.100e-02 0.662 0.507809
ibd_3Unspecified -1.395e+00 6.215e-01 -2.244 0.024817 *
genderFemale 2.613e-01 5.772e-02 4.526 6.01e-06 ***
ethnic_3Hispanic 4.019e-01 1.996e-01 2.014 0.044027 *
lang_3Other -8.361e-01 3.404e-01 -2.456 0.014057 *
mstat_5Unknown -1.763e-01 7.939e-02 -2.221 0.026372 *
mstat_5Unmarried -3.947e-01 7.486e-02 -5.273 1.34e-07 ***
mstat_5DivorcedSeparated -2.546e-01 1.786e-01 -1.425 0.154076
mstat_5Widow -4.578e-01 2.194e-01 -2.087 0.036895 *
relig_affilNo -1.214e-01 5.953e-02 -2.039 0.041438 *
act_tobYes -4.760e-01 1.032e-01 -4.613 3.98e-06 ***
max_ch 4.378e-02 6.259e-03 6.995 2.66e-12 ***
IC 4.112e-01 6.551e-02 6.277 3.45e-10 ***
pop_dens -4.914e-05 1.282e-05 -3.834 0.000126 ***
r_pct -2.560e-02 1.991e-03 -12.861 < 2e-16 ***
I(RPL_THEMES^2) -1.102e+00 1.582e-01 -6.964 3.30e-12 ***
race_5Black -6.011e-01 1.942e-01 -3.096 0.001964 **
race_5Asian 2.816e-01 2.048e-01 1.375 0.169072
race_5Native 4.324e-01 7.163e-01 0.604 0.546056
race_5Other -2.716e-01 2.095e-01 -1.296 0.194931
I(RPL_THEMES^2):race_5Black 2.223e-01 4.058e-01 0.548 0.583715
I(RPL_THEMES^2):race_5Asian 7.125e-01 1.071e+00 0.666 0.505721
I(RPL_THEMES^2):race_5Native -6.121e+00 5.972e+00 -1.025 0.305348
I(RPL_THEMES^2):race_5Other -8.854e-01 8.281e-01 -1.069 0.284991
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 7855.1 on 6407 degrees of freedom
Residual deviance: 7320.2 on 6382 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 7372.2
Number of Fisher Scoring iterations: 5
broom::glance(Flu2021_SVI.mod )
broom::tidy(Flu2021_SVI.mod , exponentiate = TRUE)
tbl_regression(Flu2021_SVI.mod, label = list(gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", r_pct ~ "Percent Republican", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| I(age_yrs^2) |
1.00 |
1.00, 1.00 |
0.001 |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.04 |
0.92, 1.17 |
0.5 |
| Â Â Â Â Unspecified |
0.25 |
0.06, 0.72 |
0.025 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.30 |
1.16, 1.45 |
<0.001 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.49 |
1.01, 2.20 |
0.044 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.43 |
0.21, 0.82 |
0.014 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.84 |
0.72, 0.98 |
0.026 |
| Â Â Â Â Unmarried |
0.67 |
0.58, 0.78 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.78 |
0.54, 1.09 |
0.2 |
| Â Â Â Â Widow |
0.63 |
0.41, 0.97 |
0.037 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.89 |
0.79, 1.00 |
0.041 |
| act_tob |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.62 |
0.51, 0.76 |
<0.001 |
| Charlson Comorbidity Index |
1.04 |
1.03, 1.06 |
<0.001 |
| IC |
1.51 |
1.33, 1.72 |
<0.001 |
| Population Density |
1.00 |
1.00, 1.00 |
<0.001 |
| Percent Republican |
0.97 |
0.97, 0.98 |
<0.001 |
| I(RPL_THEMES^2) |
0.33 |
0.24, 0.45 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.55 |
0.37, 0.80 |
0.002 |
| Â Â Â Â Asian |
1.33 |
0.88, 1.98 |
0.2 |
| Â Â Â Â Native |
1.54 |
0.40, 7.13 |
0.5 |
| Â Â Â Â Other |
0.76 |
0.50, 1.14 |
0.2 |
| I(RPL_THEMES^2) * Race |
|
|
|
| Â Â Â Â I(RPL_THEMES^2) * Black |
1.25 |
0.56, 2.75 |
0.6 |
| Â Â Â Â I(RPL_THEMES^2) * Asian |
2.04 |
0.23, 16.2 |
0.5 |
| Â Â Â Â I(RPL_THEMES^2) * Native |
0.00 |
0.00, 4.03 |
0.3 |
| Â Â Â Â I(RPL_THEMES^2) * Other |
0.41 |
0.07, 1.88 |
0.3 |
## Standard Residuals
Flu2021_SVI.mod.std <- rstandard(Flu2021_SVI.mod)
plot(Flu2021_SVI.mod.std, ylab="Standardized Residuals")

## Margins
cplot(Flu2021_SVI.mod, "RPL_THEMES", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given SVI")

## Model performance graphs
model_performance(Flu2021_SVI.mod )
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
--------------------------------------------------------------------------------------------------
2.776e+05 | 2.777e+05 | 0.082 | 0.440 | 1.071 | 0.571 | -Inf | 1.583e-04 | 0.613
performance::check_model(Flu2021_SVI.mod, panel = TRUE)

SVI as a mediator of race -> vaccination
#Step 1: Is there a relationship between X(race) and Y(flu vaccine). Yes - black and other patients were less likely to receive the flu vaccine than Asian and white patients
Flu2021.0 <- glm(flu_2021 ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + svi_2,
family = binomial,
data = themes_dich)
# Step 2: Is there a relationship between the mediator (SVI) and race? Yes, patients with higher SVI were more likely to be black
Flu2021_M <- glm(svi_2 ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + flu_2021,
family = binomial,
data = themes_dich)
summary(Flu2021_M )
Call:
glm(formula = svi_2 ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC +
pop_dens + r_pct + flu_2021, family = binomial, data = themes_dich)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.4316 -0.7845 -0.6761 1.0009 2.1873
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.083e+00 1.750e-01 -6.186 6.18e-10 ***
ibd_3UC -2.927e-01 6.267e-02 -4.670 3.01e-06 ***
ibd_3Unspecified 2.999e-01 3.579e-01 0.838 0.402091
age_yrs 1.586e-03 2.032e-03 0.781 0.434951
genderFemale 6.913e-02 5.893e-02 1.173 0.240768
race_5Black 1.353e+00 1.093e-01 12.380 < 2e-16 ***
race_5Asian -4.999e-01 2.032e-01 -2.460 0.013875 *
race_5Native -3.435e-01 5.140e-01 -0.668 0.503943
race_5Other 4.604e-02 1.644e-01 0.280 0.779372
ethnic_3Hispanic 4.044e-01 1.928e-01 2.098 0.035912 *
lang_3Other 1.070e+00 2.609e-01 4.101 4.12e-05 ***
mstat_5Unknown 3.360e-01 8.300e-02 4.048 5.15e-05 ***
mstat_5Unmarried 1.911e-01 7.956e-02 2.402 0.016312 *
mstat_5DivorcedSeparated 5.985e-01 1.671e-01 3.582 0.000341 ***
mstat_5Widow 3.512e-01 2.194e-01 1.601 0.109375
relig_affilNo 6.953e-02 6.022e-02 1.155 0.248283
act_tobYes 4.715e-01 8.654e-02 5.448 5.08e-08 ***
max_ch 1.527e-02 6.656e-03 2.294 0.021787 *
IC 9.783e-03 6.687e-02 0.146 0.883686
pop_dens 2.443e-05 7.909e-06 3.089 0.002005 **
r_pct -5.705e-03 1.898e-03 -3.006 0.002645 **
flu_2021 -3.974e-01 6.805e-02 -5.839 5.24e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 7566.5 on 6407 degrees of freedom
Residual deviance: 7117.2 on 6386 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 7161.2
Number of Fisher Scoring iterations: 4
broom::glance(Flu2021_M )
tbl_regression(Flu2021_M, label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", r_pct ~ "Percent Republican"))
| Characteristic |
log(OR) |
95% CI |
p-value |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
-0.29 |
-0.42, -0.17 |
<0.001 |
| Â Â Â Â Unspecified |
0.30 |
-0.43, 0.99 |
0.4 |
| Age |
0.00 |
0.00, 0.01 |
0.4 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
0.07 |
-0.05, 0.18 |
0.2 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
1.4 |
1.1, 1.6 |
<0.001 |
| Â Â Â Â Asian |
-0.50 |
-0.91, -0.11 |
0.014 |
| Â Â Â Â Native |
-0.34 |
-1.5, 0.59 |
0.5 |
| Â Â Â Â Other |
0.05 |
-0.28, 0.36 |
0.8 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
0.40 |
0.02, 0.78 |
0.036 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
1.1 |
0.56, 1.6 |
<0.001 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.34 |
0.17, 0.50 |
<0.001 |
| Â Â Â Â Unmarried |
0.19 |
0.04, 0.35 |
0.016 |
| Â Â Â Â DivorcedSeparated |
0.60 |
0.27, 0.92 |
<0.001 |
| Â Â Â Â Widow |
0.35 |
-0.09, 0.77 |
0.11 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.07 |
-0.05, 0.19 |
0.2 |
| act_tob |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.47 |
0.30, 0.64 |
<0.001 |
| max_ch |
0.02 |
0.00, 0.03 |
0.022 |
| IC |
0.01 |
-0.12, 0.14 |
0.9 |
| Population Density |
0.00 |
0.00, 0.00 |
0.002 |
| Percent Republican |
-0.01 |
-0.01, 0.00 |
0.003 |
| flu_2021 |
-0.40 |
-0.53, -0.26 |
<0.001 |
# Step 3: Mediation analysis
results3 <- mediate(Flu2021_M, Flu2021.0, treat="race_5", mediator="svi_2",
boot=TRUE, sims=500)
Warning: treatment and control values do not match factor levels; using White and Black as control and treatment, respectivelyRunning nonparametric bootstrap
summary(results3)
Causal Mediation Analysis
Nonparametric Bootstrap Confidence Intervals with the Percentile Method
Estimate 95% CI Lower 95% CI Upper p-value
ACME (control) -0.0222 -0.0322 -0.02 <2e-16 ***
ACME (treated) -0.0166 -0.0244 -0.01 <2e-16 ***
ADE (control) -0.1114 -0.1532 -0.07 <2e-16 ***
ADE (treated) -0.1058 -0.1445 -0.07 <2e-16 ***
Total Effect -0.1280 -0.1667 -0.09 <2e-16 ***
Prop. Mediated (control) 0.1734 0.1089 0.27 <2e-16 ***
Prop. Mediated (treated) 0.1300 0.0761 0.23 <2e-16 ***
ACME (average) -0.0194 -0.0280 -0.01 <2e-16 ***
ADE (average) -0.1086 -0.1484 -0.07 <2e-16 ***
Prop. Mediated (average) 0.1517 0.0936 0.25 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Sample Size Used: 6408
Simulations: 500
Flu 2021 + SVI Quartile
All Variables
Flu2021_SVI.4 <- glm(flu_2021 ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + RPL_4,
family = "binomial",
data = vax_clean1)
summary(Flu2021_SVI.4 )
Call:
glm(formula = flu_2021 ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + pop_dens + r_pct + RPL_4, family = "binomial", data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9280 -0.8541 -0.6670 1.1948 2.3382
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 4.640e-02 1.782e-01 0.260 0.79460
ibd_3UC 4.442e-02 6.090e-02 0.729 0.46581
ibd_3Unspecified -1.433e+00 6.209e-01 -2.308 0.02101 *
age_yrs 6.364e-03 1.983e-03 3.209 0.00133 **
genderFemale 2.594e-01 5.768e-02 4.497 6.90e-06 ***
race_5Black -5.645e-01 1.277e-01 -4.420 9.85e-06 ***
race_5Asian 3.826e-01 1.611e-01 2.375 0.01754 *
race_5Native -2.427e-01 4.803e-01 -0.505 0.61331
race_5Other -4.083e-01 1.746e-01 -2.338 0.01938 *
ethnic_3Hispanic 3.641e-01 1.975e-01 1.843 0.06528 .
lang_3Other -8.814e-01 3.371e-01 -2.614 0.00894 **
mstat_5Unknown -1.657e-01 8.024e-02 -2.065 0.03894 *
mstat_5Unmarried -3.778e-01 7.683e-02 -4.918 8.75e-07 ***
mstat_5DivorcedSeparated -2.675e-01 1.782e-01 -1.501 0.13327
mstat_5Widow -4.241e-01 2.165e-01 -1.959 0.05010 .
relig_affilNo -1.235e-01 5.938e-02 -2.079 0.03760 *
act_tobYes -4.955e-01 1.030e-01 -4.811 1.50e-06 ***
max_ch 4.414e-02 6.207e-03 7.111 1.15e-12 ***
IC 4.076e-01 6.542e-02 6.230 4.66e-10 ***
pop_dens -5.103e-05 1.295e-05 -3.940 8.15e-05 ***
r_pct -2.570e-02 1.996e-03 -12.878 < 2e-16 ***
RPL_4Second -2.265e-01 6.734e-02 -3.363 0.00077 ***
RPL_4Third -3.653e-01 8.194e-02 -4.458 8.27e-06 ***
RPL_4Fourth -7.648e-01 1.188e-01 -6.438 1.21e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 7855.1 on 6407 degrees of freedom
Residual deviance: 7333.0 on 6384 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 7381
Number of Fisher Scoring iterations: 5
model_performance(Flu2021_SVI.4)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
7380.951 | 7543.319 | 0.080 | 0.441 | 1.072 | 0.572 | -Inf | 1.574e-04 | 0.612
broom::glance(Flu2021_SVI.4 )
broom::tidy(Flu2021_SVI.4 , exponentiate = TRUE)
tbl_regression(Flu2021_SVI.4, label = list(ibd_3 ~ "IBD Type", age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "Race", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", IC ~ "Immunocompromised", RPL_4 ~ "SVI Quartile"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| IBD Type |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.05 |
0.93, 1.18 |
0.5 |
| Â Â Â Â Unspecified |
0.24 |
0.06, 0.69 |
0.021 |
| Age |
1.01 |
1.00, 1.01 |
0.001 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.30 |
1.16, 1.45 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.57 |
0.44, 0.73 |
<0.001 |
| Â Â Â Â Asian |
1.47 |
1.07, 2.01 |
0.018 |
| Â Â Â Â Native |
0.78 |
0.29, 1.94 |
0.6 |
| Â Â Â Â Other |
0.66 |
0.47, 0.93 |
0.019 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.44 |
0.97, 2.11 |
0.065 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.41 |
0.20, 0.78 |
0.009 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.85 |
0.72, 0.99 |
0.039 |
| Â Â Â Â Unmarried |
0.69 |
0.59, 0.80 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.77 |
0.54, 1.08 |
0.13 |
| Â Â Â Â Widow |
0.65 |
0.42, 0.99 |
0.050 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.88 |
0.79, 0.99 |
0.038 |
| Active Tobacco Use |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.61 |
0.50, 0.74 |
<0.001 |
| Charlson Comorbidity Index |
1.05 |
1.03, 1.06 |
<0.001 |
| Immunocompromised |
1.50 |
1.32, 1.71 |
<0.001 |
| Population density |
1.00 |
1.00, 1.00 |
<0.001 |
| Percent Rebuplican |
0.97 |
0.97, 0.98 |
<0.001 |
| SVI Quartile |
|
|
|
| Â Â Â Â First |
— |
— |
|
| Â Â Â Â Second |
0.80 |
0.70, 0.91 |
<0.001 |
| Â Â Â Â Third |
0.69 |
0.59, 0.81 |
<0.001 |
| Â Â Â Â Fourth |
0.47 |
0.37, 0.59 |
<0.001 |
## Margins Plot
cplot(Flu2021_SVI.4, "RPL_4", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given SVI Quartile")

# Performance
model_performance(Flu2021_SVI.4)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
7380.951 | 7543.319 | 0.080 | 0.441 | 1.072 | 0.572 | -Inf | 1.574e-04 | 0.612
performance::check_model(Flu2021_SVI.4, panel = TRUE)

SVI Quartile as moderator for race -> vaccination
Flu2021_SVI.4race <- glm(flu_2021 ~ ibd_3 + age_yrs + gender + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + RPL_4*race_5,
family = "binomial",
data = vax_clean1)
summary(Flu2021_SVI.4race )
Call:
glm(formula = flu_2021 ~ ibd_3 + age_yrs + gender + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC +
pop_dens + r_pct + RPL_4 * race_5, family = "binomial", data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9995 -0.8550 -0.6673 1.1936 2.4968
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.392e-02 1.790e-01 0.190 0.84970
ibd_3UC 4.714e-02 6.098e-02 0.773 0.43950
ibd_3Unspecified -1.430e+00 6.208e-01 -2.304 0.02124 *
age_yrs 6.397e-03 1.986e-03 3.221 0.00128 **
genderFemale 2.594e-01 5.773e-02 4.494 6.98e-06 ***
ethnic_3Hispanic 3.929e-01 1.993e-01 1.971 0.04872 *
lang_3Other -8.549e-01 3.397e-01 -2.517 0.01185 *
mstat_5Unknown -1.647e-01 8.035e-02 -2.050 0.04033 *
mstat_5Unmarried -3.760e-01 7.692e-02 -4.887 1.02e-06 ***
mstat_5DivorcedSeparated -2.728e-01 1.787e-01 -1.526 0.12689
mstat_5Widow -4.298e-01 2.167e-01 -1.984 0.04728 *
relig_affilNo -1.241e-01 5.945e-02 -2.088 0.03679 *
act_tobYes -4.909e-01 1.031e-01 -4.763 1.91e-06 ***
max_ch 4.430e-02 6.216e-03 7.126 1.03e-12 ***
IC 4.128e-01 6.551e-02 6.302 2.94e-10 ***
pop_dens -5.179e-05 1.305e-05 -3.968 7.24e-05 ***
r_pct -2.582e-02 2.005e-03 -12.881 < 2e-16 ***
RPL_4Second -2.106e-01 7.130e-02 -2.954 0.00313 **
RPL_4Third -3.252e-01 8.744e-02 -3.719 0.00020 ***
RPL_4Fourth -7.602e-01 1.359e-01 -5.596 2.20e-08 ***
race_5Black -3.669e-01 2.665e-01 -1.377 0.16855
race_5Asian 3.266e-01 2.239e-01 1.458 0.14475
race_5Native 4.527e-01 7.037e-01 0.643 0.52008
race_5Other -2.387e-01 2.269e-01 -1.052 0.29274
RPL_4Second:race_5Black -2.305e-01 3.596e-01 -0.641 0.52151
RPL_4Third:race_5Black -3.828e-01 3.573e-01 -1.071 0.28395
RPL_4Fourth:race_5Black -1.545e-01 3.574e-01 -0.432 0.66561
RPL_4Second:race_5Asian 2.071e-01 3.502e-01 0.591 0.55437
RPL_4Third:race_5Asian -2.730e-01 4.626e-01 -0.590 0.55507
RPL_4Fourth:race_5Asian 1.763e+00 1.284e+00 1.373 0.16982
RPL_4Second:race_5Native -9.909e-01 1.096e+00 -0.904 0.36618
RPL_4Third:race_5Native -1.210e+01 2.291e+02 -0.053 0.95786
RPL_4Fourth:race_5Native -1.163e+01 1.816e+02 -0.064 0.94894
RPL_4Second:race_5Other -4.882e-01 4.200e-01 -1.162 0.24505
RPL_4Third:race_5Other -1.312e-01 4.735e-01 -0.277 0.78177
RPL_4Fourth:race_5Other -5.747e-01 6.756e-01 -0.851 0.39502
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 7855.1 on 6407 degrees of freedom
Residual deviance: 7323.6 on 6372 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 7395.6
Number of Fisher Scoring iterations: 11
model_performance(Flu2021_SVI.4race)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
7395.583 | 7639.134 | 0.081 | 0.440 | 1.072 | 0.571 | -Inf | 3.770e-04 | 0.612
broom::glance(Flu2021_SVI.4race )
broom::tidy(Flu2021_SVI.4race , exponentiate = TRUE)
tbl_regression(Flu2021_SVI.4race, label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_4 ~ "SVI Quartile", mstat_5 ~ "Marital Status", pop_dens ~ "Population Density", r_pct ~ "Percent Republican"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.05 |
0.93, 1.18 |
0.4 |
| Â Â Â Â Unspecified |
0.24 |
0.06, 0.70 |
0.021 |
| Age |
1.01 |
1.00, 1.01 |
0.001 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.30 |
1.16, 1.45 |
<0.001 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.48 |
1.00, 2.18 |
0.049 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.43 |
0.21, 0.80 |
0.012 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.85 |
0.72, 0.99 |
0.040 |
| Â Â Â Â Unmarried |
0.69 |
0.59, 0.80 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.76 |
0.53, 1.07 |
0.13 |
| Â Â Â Â Widow |
0.65 |
0.42, 0.99 |
0.047 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.88 |
0.79, 0.99 |
0.037 |
| act_tob |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.61 |
0.50, 0.75 |
<0.001 |
| max_ch |
1.05 |
1.03, 1.06 |
<0.001 |
| IC |
1.51 |
1.33, 1.72 |
<0.001 |
| Population Density |
1.00 |
1.00, 1.00 |
<0.001 |
| Percent Republican |
0.97 |
0.97, 0.98 |
<0.001 |
| SVI Quartile |
|
|
|
| Â Â Â Â First |
— |
— |
|
| Â Â Â Â Second |
0.81 |
0.70, 0.93 |
0.003 |
| Â Â Â Â Third |
0.72 |
0.61, 0.86 |
<0.001 |
| Â Â Â Â Fourth |
0.47 |
0.36, 0.61 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.69 |
0.40, 1.15 |
0.2 |
| Â Â Â Â Asian |
1.39 |
0.89, 2.15 |
0.14 |
| Â Â Â Â Native |
1.57 |
0.39, 6.74 |
0.5 |
| Â Â Â Â Other |
0.79 |
0.50, 1.22 |
0.3 |
| SVI Quartile * Race |
|
|
|
| Â Â Â Â Second * Black |
0.79 |
0.39, 1.61 |
0.5 |
| Â Â Â Â Third * Black |
0.68 |
0.34, 1.38 |
0.3 |
| Â Â Â Â Fourth * Black |
0.86 |
0.43, 1.74 |
0.7 |
| Â Â Â Â Second * Asian |
1.23 |
0.62, 2.44 |
0.6 |
| Â Â Â Â Third * Asian |
0.76 |
0.30, 1.85 |
0.6 |
| Â Â Â Â Fourth * Asian |
5.83 |
0.50, 134 |
0.2 |
| Â Â Â Â Second * Native |
0.37 |
0.04, 2.91 |
0.4 |
| Â Â Â Â Third * Native |
0.00 |
|
>0.9 |
| Â Â Â Â Fourth * Native |
0.00 |
|
>0.9 |
| Â Â Â Â Second * Other |
0.61 |
0.26, 1.37 |
0.2 |
| Â Â Â Â Third * Other |
0.88 |
0.33, 2.15 |
0.8 |
| Â Â Â Â Fourth * Other |
0.56 |
0.12, 1.88 |
0.4 |
# Performance
performance::check_model(Flu2021_SVI.4race, panel = TRUE)

Flu 2019 + Themes: Multivaraible Model
All Variables
Flu2021_themes <- glm(flu_2021 ~ ibd_3 + age_yrs + gender + race_5 + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 +
RPL_THEME4,
family = "binomial",
data = vax_clean1)
summary(Flu2021_themes )
Call:
glm(formula = flu_2021 ~ ibd_3 + age_yrs + gender + race_5 +
ethnic_3 + lang_3 + mstat_5 + relig_affil + act_tob + max_ch +
IC + pop_dens + r_pct + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 +
RPL_THEME4, family = "binomial", data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9355 -0.8561 -0.6565 1.1821 2.3496
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 6.612e-02 2.128e-01 0.311 0.755988
ibd_3UC 3.806e-02 6.109e-02 0.623 0.533222
ibd_3Unspecified -1.391e+00 6.225e-01 -2.235 0.025450 *
age_yrs 6.660e-03 1.989e-03 3.348 0.000815 ***
genderFemale 2.598e-01 5.783e-02 4.493 7.01e-06 ***
race_5Black -5.098e-01 1.283e-01 -3.973 7.09e-05 ***
race_5Asian 3.117e-01 1.626e-01 1.917 0.055192 .
race_5Native -2.316e-01 4.816e-01 -0.481 0.630507
race_5Other -4.250e-01 1.751e-01 -2.427 0.015209 *
ethnic_3Hispanic 3.543e-01 1.980e-01 1.790 0.073452 .
lang_3Other -9.111e-01 3.371e-01 -2.703 0.006871 **
mstat_5Unknown -1.564e-01 8.052e-02 -1.942 0.052125 .
mstat_5Unmarried -3.715e-01 7.711e-02 -4.818 1.45e-06 ***
mstat_5DivorcedSeparated -2.432e-01 1.787e-01 -1.361 0.173476
mstat_5Widow -4.194e-01 2.170e-01 -1.933 0.053263 .
relig_affilNo -1.190e-01 5.970e-02 -1.993 0.046230 *
act_tobYes -4.832e-01 1.034e-01 -4.675 2.94e-06 ***
max_ch 4.454e-02 6.228e-03 7.152 8.53e-13 ***
IC 4.097e-01 6.566e-02 6.240 4.37e-10 ***
pop_dens -4.908e-05 1.341e-05 -3.661 0.000251 ***
r_pct -2.187e-02 2.346e-03 -9.326 < 2e-16 ***
RPL_THEME1 -3.862e-01 1.729e-01 -2.234 0.025503 *
RPL_THEME2 -6.723e-01 1.503e-01 -4.472 7.73e-06 ***
RPL_THEME3 6.391e-02 1.196e-01 0.534 0.593024
RPL_THEME4 -1.870e-01 1.267e-01 -1.475 0.140132
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 7855.1 on 6407 degrees of freedom
Residual deviance: 7302.3 on 6383 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 7352.3
Number of Fisher Scoring iterations: 5
broom::glance(Flu2021_themes )
broom::tidy(Flu2021_themes , exponentiate = TRUE)
tbl_regression(Flu2021_themes, label = list(ibd_3 ~ "IBD Type", age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "Race", max_ch ~ "Charlson Comorbidity Index", act_tob ~ "Active Tobacco Use", IC ~ "Immunocompromised", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| IBD Type |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.04 |
0.92, 1.17 |
0.5 |
| Â Â Â Â Unspecified |
0.25 |
0.06, 0.73 |
0.025 |
| Age |
1.01 |
1.00, 1.01 |
<0.001 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.30 |
1.16, 1.45 |
<0.001 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.60 |
0.47, 0.77 |
<0.001 |
| Â Â Â Â Asian |
1.37 |
0.99, 1.88 |
0.055 |
| Â Â Â Â Native |
0.79 |
0.29, 1.97 |
0.6 |
| Â Â Â Â Other |
0.65 |
0.46, 0.92 |
0.015 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.43 |
0.96, 2.09 |
0.073 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.40 |
0.20, 0.75 |
0.007 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.86 |
0.73, 1.00 |
0.052 |
| Â Â Â Â Unmarried |
0.69 |
0.59, 0.80 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.78 |
0.55, 1.11 |
0.2 |
| Â Â Â Â Widow |
0.66 |
0.43, 1.00 |
0.053 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.89 |
0.79, 1.00 |
0.046 |
| Active Tobacco Use |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.62 |
0.50, 0.75 |
<0.001 |
| Charlson Comorbidity Index |
1.05 |
1.03, 1.06 |
<0.001 |
| Immunocompromised |
1.51 |
1.33, 1.71 |
<0.001 |
| Population density |
1.00 |
1.00, 1.00 |
<0.001 |
| Percent Rebuplican |
0.98 |
0.97, 0.98 |
<0.001 |
| Soceioeconomic Status |
0.68 |
0.48, 0.95 |
0.026 |
| Household Composition |
0.51 |
0.38, 0.69 |
<0.001 |
| Minority Status and Language |
1.07 |
0.84, 1.35 |
0.6 |
| Housing and Transportation |
0.83 |
0.65, 1.06 |
0.14 |
# Model performance
model_performance(Flu2021_themes)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
7352.332 | 7521.465 | 0.085 | 0.439 | 1.070 | 0.570 | -Inf | 1.570e-04 | 0.614
performance::check_model(Flu2021_themes, panel = TRUE)

# Margins
cplot(Flu2021_themes, "RPL_THEME1", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME1")

cplot(Flu2021_themes, "RPL_THEME2", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME2")

cplot(Flu2021_themes, "RPL_THEME3", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME3")

cplot(Flu2021_themes, "RPL_THEME4", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME4")

Interaction between Theme 1 and Race
Flu2021_themes.mod <- glm(flu_2021 ~ ibd_3 + age_yrs + gender + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC
+ pop_dens + r_pct + RPL_THEME1*race_5 + RPL_THEME2 + RPL_THEME3 + RPL_THEME4,
family = "binomial",
data = vax_clean1)
summary(Flu2021_themes.mod )
Call:
glm(formula = flu_2021 ~ ibd_3 + age_yrs + gender + ethnic_3 +
lang_3 + mstat_5 + relig_affil + act_tob + max_ch + IC +
pop_dens + r_pct + RPL_THEME1 * race_5 + RPL_THEME2 + RPL_THEME3 +
RPL_THEME4, family = "binomial", data = vax_clean1)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9491 -0.8568 -0.6563 1.1822 2.4726
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 5.073e-02 2.133e-01 0.238 0.811999
ibd_3UC 4.051e-02 6.112e-02 0.663 0.507433
ibd_3Unspecified -1.380e+00 6.224e-01 -2.218 0.026581 *
age_yrs 6.714e-03 1.991e-03 3.373 0.000744 ***
genderFemale 2.598e-01 5.786e-02 4.490 7.13e-06 ***
ethnic_3Hispanic 3.756e-01 1.995e-01 1.883 0.059749 .
lang_3Other -8.832e-01 3.399e-01 -2.598 0.009374 **
mstat_5Unknown -1.570e-01 8.055e-02 -1.949 0.051254 .
mstat_5Unmarried -3.701e-01 7.715e-02 -4.798 1.61e-06 ***
mstat_5DivorcedSeparated -2.437e-01 1.787e-01 -1.363 0.172743
mstat_5Widow -4.221e-01 2.170e-01 -1.945 0.051775 .
relig_affilNo -1.179e-01 5.972e-02 -1.975 0.048253 *
act_tobYes -4.840e-01 1.034e-01 -4.679 2.88e-06 ***
max_ch 4.442e-02 6.229e-03 7.132 9.91e-13 ***
IC 4.106e-01 6.569e-02 6.250 4.11e-10 ***
pop_dens -4.791e-05 1.337e-05 -3.582 0.000340 ***
r_pct -2.198e-02 2.369e-03 -9.278 < 2e-16 ***
RPL_THEME1 -3.155e-01 1.811e-01 -1.742 0.081501 .
race_5Black -4.209e-01 2.420e-01 -1.739 0.081996 .
race_5Asian 4.026e-01 2.232e-01 1.804 0.071228 .
race_5Native 7.990e-01 9.603e-01 0.832 0.405402
race_5Other -2.103e-01 2.474e-01 -0.850 0.395350
RPL_THEME2 -6.785e-01 1.517e-01 -4.473 7.70e-06 ***
RPL_THEME3 5.248e-02 1.200e-01 0.437 0.661880
RPL_THEME4 -1.892e-01 1.272e-01 -1.487 0.136965
RPL_THEME1:race_5Black -2.000e-01 4.207e-01 -0.475 0.634606
RPL_THEME1:race_5Asian -4.183e-01 7.289e-01 -0.574 0.566054
RPL_THEME1:race_5Native -3.618e+00 3.146e+00 -1.150 0.250098
RPL_THEME1:race_5Other -7.803e-01 6.574e-01 -1.187 0.235272
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 7855.1 on 6407 degrees of freedom
Residual deviance: 7298.7 on 6379 degrees of freedom
(8800 observations deleted due to missingness)
AIC: 7356.7
Number of Fisher Scoring iterations: 5
broom::glance(Flu2021_themes.mod )
broom::tidy(Flu2021_themes.mod , exponentiate = TRUE)
tbl_regression(Flu2021_themes.mod, label = list(age_yrs ~ "Age", pop_dens ~ "Population density", gender~ "Gender", ethnic_3 ~ "Ethnicity", lang_3 ~ "Preferred Language", relig_affil ~ "Any Religious Affiliation", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", mstat_5 ~ "Marital Status", r_pct ~ "Percent Rebuplican", race_5 ~ "Race", max_ch ~ "Charlson Comorbidity Index"), exponentiate = TRUE)
| Characteristic |
OR |
95% CI |
p-value |
| ibd_3 |
|
|
|
| Â Â Â Â CD |
— |
— |
|
| Â Â Â Â UC |
1.04 |
0.92, 1.17 |
0.5 |
| Â Â Â Â Unspecified |
0.25 |
0.06, 0.73 |
0.027 |
| Age |
1.01 |
1.00, 1.01 |
<0.001 |
| Gender |
|
|
|
| Â Â Â Â Male |
— |
— |
|
| Â Â Â Â Female |
1.30 |
1.16, 1.45 |
<0.001 |
| Ethnicity |
|
|
|
| Â Â Â Â NonHispanic |
— |
— |
|
| Â Â Â Â Hispanic |
1.46 |
0.98, 2.14 |
0.060 |
| Preferred Language |
|
|
|
| Â Â Â Â English |
— |
— |
|
| Â Â Â Â Other |
0.41 |
0.20, 0.78 |
0.009 |
| Marital Status |
|
|
|
| Â Â Â Â Married |
— |
— |
|
| Â Â Â Â Unknown |
0.85 |
0.73, 1.00 |
0.051 |
| Â Â Â Â Unmarried |
0.69 |
0.59, 0.80 |
<0.001 |
| Â Â Â Â DivorcedSeparated |
0.78 |
0.55, 1.11 |
0.2 |
| Â Â Â Â Widow |
0.66 |
0.43, 1.00 |
0.052 |
| Any Religious Affiliation |
|
|
|
| Â Â Â Â Yes |
— |
— |
|
| Â Â Â Â No |
0.89 |
0.79, 1.00 |
0.048 |
| act_tob |
|
|
|
| Â Â Â Â No |
— |
— |
|
| Â Â Â Â Yes |
0.62 |
0.50, 0.75 |
<0.001 |
| Charlson Comorbidity Index |
1.05 |
1.03, 1.06 |
<0.001 |
| IC |
1.51 |
1.33, 1.72 |
<0.001 |
| Population density |
1.00 |
1.00, 1.00 |
<0.001 |
| Percent Rebuplican |
0.98 |
0.97, 0.98 |
<0.001 |
| Soceioeconomic Status |
0.73 |
0.51, 1.04 |
0.082 |
| Race |
|
|
|
| Â Â Â Â White |
— |
— |
|
| Â Â Â Â Black |
0.66 |
0.40, 1.05 |
0.082 |
| Â Â Â Â Asian |
1.50 |
0.96, 2.32 |
0.071 |
| Â Â Â Â Native |
2.22 |
0.38, 19.2 |
0.4 |
| Â Â Â Â Other |
0.81 |
0.49, 1.31 |
0.4 |
| Household Composition |
0.51 |
0.38, 0.68 |
<0.001 |
| Minority Status and Language |
1.05 |
0.83, 1.33 |
0.7 |
| Housing and Transportation |
0.83 |
0.64, 1.06 |
0.14 |
| Soceioeconomic Status * Race |
|
|
|
| Â Â Â Â Soceioeconomic Status * Black |
0.82 |
0.36, 1.87 |
0.6 |
| Â Â Â Â Soceioeconomic Status * Asian |
0.66 |
0.15, 2.68 |
0.6 |
| Â Â Â Â Soceioeconomic Status * Native |
0.03 |
0.00, 3.71 |
0.3 |
| Â Â Â Â Soceioeconomic Status * Other |
0.46 |
0.12, 1.58 |
0.2 |
# Model performance
model_performance(Flu2021_themes.mod)
# Indices of model performance
AIC | BIC | Tjur's R2 | RMSE | Sigma | Log_loss | Score_log | Score_spherical | PCP
------------------------------------------------------------------------------------------------
7356.665 | 7552.859 | 0.085 | 0.439 | 1.070 | 0.569 | -Inf | 1.566e-04 | 0.614
performance::check_model(Flu2021_themes.mod, panel = TRUE)

# Margins
cplot(Flu2021_themes.mod, "RPL_THEME1", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME1")

cplot(Flu2021_themes.mod, "RPL_THEME2", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME2")

cplot(Flu2021_themes.mod, "RPL_THEME3", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME3")

cplot(Flu2021_themes.mod, "RPL_THEME4", what = "prediction", main = "Predicted Likelihood of Flu Vaccine Given THEME4")

LS0tCnRpdGxlOiAiRmx1IE1vZGVscyIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZXM6IHBhcGVyCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKZWRpdG9yX29wdGlvbnM6CiAgY2h1bmtfb3V0cHV0X3R5cGU6IGlubGluZQpkYXRlOiAnMjAyMi0xMS0yJwotLS0KIyBMb2FkIFBhY2thZ2VzIApgYGB7cn0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoY29kZWJvb2tyKQpsaWJyYXJ5KHN1bW1hcnl0b29scykKbGlicmFyeShicm9vbSkgCmxpYnJhcnkocGVyZm9ybWFuY2UpCmxpYnJhcnkoZ3QpCmxpYnJhcnkoZ3RzdW1tYXJ5KQpsaWJyYXJ5KGphbml0b3IpCmxpYnJhcnkoZm9yY2F0cykKbGlicmFyeShoZXJlKQpsaWJyYXJ5KG1hcmdpbnMpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShtZWRpYXRpb24pCmBgYAoKIyBJbXBvcnQgRGF0YSAKYGBge3J9CmxvYWQoIn4vRGVza3RvcC9SLUNvZGUvU0RPSF9BTEwvVmF4X2RhdGFzZXQucmRhIikKdmlldyh2YXhfZGF0YXNldCkKYGBgCgoKCiMgQ29kZWJvb2sgCmBgYHtyfQp2YXhfZGF0YXNldCAlPiUgCmRwbHlyOjpzZWxlY3QoaWJkXzMsIGFnZV95cnMsIGdlbmRlciwgcmFjZV81LCBldGhuaWNfMywgbGFuZ18zLCByZWxpZ19hZmZpbCwgbXN0YXRfNSwgbWF4X2NoLCBTVEFURSwgcl9wY3QsIElDLCBwb3BfZGVucywgUlBMX1RIRU1FUywgUlBMXzQsIFJQTF9USEVNRTEsIFJQTF9USEVNRTIsIFJQTF9USEVNRTMsIFJQTF9USEVNRTQsIGFjdF90b2IsIHJfcGN0LCBmbHVfMjAxNSwgZmx1XzIwMTYsIGZsdV8yMDE3LCBmbHVfMjAxOCwgZmx1XzIwMTksIGZsdV8yMDIwLCBmbHVfMjAyMSwgZmx1XzIwMjIsIHRvdGFsX2ZsdSwgcHJldm5hciwgcHZheCwgYW55X3BuZXVtLCBhbnlfcG5ldW0sIHRvdGFsX2Nvdl92YXgsIHRvdGFsX3NoaW5ncml4KSAtPiB2YXhfY2xlYW4xCnByaW50KGRmU3VtbWFyeSh2YXhfY2xlYW4xKSwgbWV0aG9kID0gJ3JlbmRlcicpCgoKCmBgYApgYGB7cn0Kc2F2ZSh2YXhfY2xlYW4xLCBmaWxlID0gInZheF9jbGVhbjEucmRhIikKYGBgCgojIFBhdGllbnQgQ2hhcmFjdGVyaXN0aWNzIHsudGFic2V0fQoKIyMgQmFzZWxpbmUgQ2hhcmFjdGVyaXN0aWNzIApgYGB7cn0KdmF4X2NsZWFuMSAlPiUgCiAgZHBseXI6OnNlbGVjdChpYmRfMywgYWdlX3lycywgZ2VuZGVyLCByYWNlXzUsIGV0aG5pY18zLCBsYW5nXzMsIHJlbGlnX2FmZmlsLCBtc3RhdF81LCBhY3RfdG9iLCBtYXhfY2gsIElDLCBwb3BfZGVucyxyX3BjdCwgUlBMX1RIRU1FUywgUlBMXzQsIFJQTF9USEVNRTEsIFJQTF9USEVNRTIsIFJQTF9USEVNRTMsIFJQTF9USEVNRTQpIC0+IGJhc2VsaW5lCmJhc2VsaW5lICU+JSB0Ymxfc3VtbWFyeShsYWJlbCA9IGxpc3QoaWJkXzMgfiAiSUJEIERpYWdub3NpcyIsIGFnZV95cnMgfiAiQWdlIiwgZ2VuZGVyfiAiR2VuZGVyIiwgcmFjZV81IH4gIlJhY2UiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJpbWFyeSBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgUlBMX1RIRU1FUyB+ICJUb3RhbCBTVkkiLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIFJQTF80IH4gIlNWSSBRdWFydGlsZXMiLCByX3BjdCB+ICJQZXJjZW50IFJlcHVibGljYW4iLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiLCBhY3RfdG9iIH4gIkFjdGl2ZSBUb2JhY2NvIFVzZSIsIElDID0gIkltbXVub2NvbXByb21pc2VkIiksCiAgICAgICAgc3RhdGlzdGljID0gbGlzdChhbGxfY29udGludW91cygpIH4gInttZWFufSAoe3NkfSkiKSwKICAgICAgICBtaXNzaW5nX3RleHQgPSAiKE1pc3NpbmcpIikKYGBgCgojIyBCYXNlbGluZSBjaGFyYWN0ZXJpc3RpY3MgYnkgU1ZJIFF1YXJ0aWxlCmBgYHtyfQpiYXNlbGluZSAlPiUgdGJsX3N1bW1hcnkoYnkgPSBSUExfNCwKICAgICAgICAgbGFiZWwgPSBsaXN0KGliZF8zIH4gIklCRCBEaWFnbm9zaXMiLCBhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByaW1hcnkgTGFuZ3VhZ2UiLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIFJQTF9USEVNRVMgfiAiVG90YWwgU1ZJIiwgUlBMX1RIRU1FMSB+ICJTb2NlaW9lY29ub21pYyBTdGF0dXMiLCBSUExfVEhFTUUyIH4gIkhvdXNlaG9sZCBDb21wb3NpdGlvbiIsIFJQTF9USEVNRTMgfiAiTWlub3JpdHkgU3RhdHVzIGFuZCBMYW5ndWFnZSIsIFJQTF9USEVNRTQgfiAiSG91c2luZyBhbmQgVHJhbnNwb3J0YXRpb24iLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIERlbnNpdHkiLCBSUExfNCB+ICJTVkkgUXVhcnRpbGVzIiwgcl9wY3QgfiAiUGVyY2VudCBSZXB1YmxpY2FuIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiwgYWN0X3RvYiB+ICJBY3RpdmUgVG9iYWNjbyBVc2UiLCBJQyB+ICJJbW11bm9jb21wcm9taXNlZCIpLAogICAgICAgIHN0YXRpc3RpYyA9IGxpc3QoYWxsX2NvbnRpbnVvdXMoKSB+ICJ7bWVhbn0gKHtzZH0pIiksCiAgICAgICAgbWlzc2luZ190ZXh0ID0gIihNaXNzaW5nKSIpICU+JSBhZGRfcCgpCmBgYAoKCgojIEJpdmFyaWF0ZSBBbmFseXNpcyB7LnRhYnNldH0KCiMjIFRvdGFsIEZsdSAKYGBge3J9CnRibF91dl9leDEgPC0KICB0YmxfdXZyZWdyZXNzaW9uKAogICAgdmF4X2NsZWFuMVtjKCJ0b3RhbF9mbHUiLCAiaWJkXzMiLCAiYWdlX3lycyIsICJnZW5kZXIiLCAicmFjZV81IiwgImV0aG5pY18zIiwgImxhbmdfMyIsICJtc3RhdF81IiwgInJlbGlnX2FmZmlsIiwgImFjdF90b2IiLCAibWF4X2NoIiwgIklDIiwgInBvcF9kZW5zIiwgInJfcGN0IiwgIlJQTF9USEVNRVMiLCAiUlBMX1RIRU1FMSIsICJSUExfVEhFTUUyIiwgIlJQTF9USEVNRTMiLCAiUlBMX1RIRU1FNCIpXSwKICAgIG1ldGhvZCA9IGdsbS5uYiwKICAgIHkgPSB0b3RhbF9mbHUsCiAgICBsYWJlbCA9IGxpc3QoaWJkXzMgfiAiSUJEIERpYWdub3NpcyIsIGFnZV95cnMgfiAiQWdlIiwgZ2VuZGVyfiAiR2VuZGVyIiwgcmFjZV81IH4gIlJhY2UiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJpbWFyeSBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgUlBMX1RIRU1FUyB+ICJUb3RhbCBTVkkiLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIGFjdF90b2IgfiAiQWN0aXZlIFRvYmFjY28gVXNlIiwgSUMgfiAiSW1tdW5vY29tcHJvbWlzZWQiKSwKICBleHBvbmVudGlhdGUgPSBUUlVFKQpwcmludCh0YmxfdXZfZXgxLCBtZXRob2QgPSByZW5kZXIpCmBgYAoKCiMjIEZsdSAyMDE5CmBgYHtyfQp0YmxfdXZfZXgyIDwtCiAgdGJsX3V2cmVncmVzc2lvbigKICAgIHZheF9jbGVhbjFbYygiZmx1XzIwMTkiLCAiaWJkXzMiLCAiYWdlX3lycyIsICJnZW5kZXIiLCAicmFjZV81IiwgImV0aG5pY18zIiwgImxhbmdfMyIsICJtc3RhdF81IiwgInJlbGlnX2FmZmlsIiwgImFjdF90b2IiLCAibWF4X2NoIiwgIklDIiwgInBvcF9kZW5zIiwgInJfcGN0IiwgIlJQTF9USEVNRVMiLCAiUlBMX1RIRU1FMSIsICJSUExfVEhFTUUyIiwgIlJQTF9USEVNRTMiLCAiUlBMX1RIRU1FNCIpXSwKICAgIG1ldGhvZCA9IGdsbSwKICAgIHkgPSBmbHVfMjAxOSwKICAgIG1ldGhvZC5hcmdzID0gbGlzdChmYW1pbHkgPSBiaW5vbWlhbCksCiAgICBsYWJlbCA9IGxpc3QoaWJkXzMgfiAiSUJEIERpYWdub3NpcyIsIGFnZV95cnMgfiAiQWdlIiwgZ2VuZGVyfiAiR2VuZGVyIiwgcmFjZV81IH4gIlJhY2UiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJpbWFyeSBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgUlBMX1RIRU1FUyB+ICJUb3RhbCBTVkkiLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIGFjdF90b2IgfiAiQWN0aXZlIFRvYmFjY28gVXNlIiwgSUMgfiAiSW1tdW5vY29tcHJvbWlzZWQiKSwKICAgIGV4cG9uZW50aWF0ZSA9IFRSVUUKICApCnByaW50KHRibF91dl9leDIsIG1ldGhvZCA9IHJlbmRlcikKCmBgYAoKIyMgRmx1IDIwMjEgCmBgYHtyfQp0YmxfdXZfZXgzIDwtCiAgdGJsX3V2cmVncmVzc2lvbigKICAgIHZheF9jbGVhbjFbYygiZmx1XzIwMjEiLCAiaWJkXzMiLCAiYWdlX3lycyIsICJnZW5kZXIiLCAicmFjZV81IiwgImV0aG5pY18zIiwgImxhbmdfMyIsICJtc3RhdF81IiwgInJlbGlnX2FmZmlsIiwgImFjdF90b2IiLCAibWF4X2NoIiwgIklDIiwgInBvcF9kZW5zIiwgInJfcGN0IiwgIlJQTF9USEVNRVMiLCAiUlBMX1RIRU1FMSIsICJSUExfVEhFTUUyIiwgIlJQTF9USEVNRTMiLCAiUlBMX1RIRU1FNCIpXSwKICAgIG1ldGhvZCA9IGdsbSwKICAgIHkgPSBmbHVfMjAyMSwKICAgIG1ldGhvZC5hcmdzID0gbGlzdChmYW1pbHkgPSBiaW5vbWlhbCksCiAgICBsYWJlbCA9IGxpc3QoaWJkXzMgfiAiSUJEIERpYWdub3NpcyIsIGFnZV95cnMgfiAiQWdlIiwgZ2VuZGVyfiAiR2VuZGVyIiwgcmFjZV81IH4gIlJhY2UiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJpbWFyeSBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgUlBMX1RIRU1FUyB+ICJUb3RhbCBTVkkiLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIGFjdF90b2IgfiAiQWN0aXZlIFRvYmFjY28gVXNlIiwgSUMgfiAiSW1tdW5vY29tcHJvbWlzZWQiKSwKICAgIGV4cG9uZW50aWF0ZSA9IFRSVUUKICApCnByaW50KHRibF91dl9leDMsIG1ldGhvZCA9IHJlbmRlcikKCmBgYAoKIyBUb3RhbCBGbHUgTXVsdGl2YXJpYWJsZSBNb2RlbCB7LnRhYnNldH0KCiMjIFJQTF9USEVNRVMgUG9pc3NvbiBNb2RlbCAKYGBge3J9CnRvdGFsZmx1X1NWSSA8LSBnbG0odG90YWxfZmx1IH4gaWJkXzMgKyBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyAKICAgICAgICAgICAgICAgICAgICAgIGxhbmdfMyArIG1zdGF0XzUgKyByZWxpZ19hZmZpbCArIGFjdF90b2IgKyBtYXhfY2ggCiAgICAgICAgICAgICAgICAgICAgICArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfVEhFTUVTLAogICAgICAgICAgICAgICBmYW1pbHkgPSBwb2lzc29uLAogICAgICAgICAgICAgICBkYXRhID0gdmF4X2NsZWFuMSkgCnN1bW1hcnkodG90YWxmbHVfU1ZJKQpicm9vbTo6Z2xhbmNlKHRvdGFsZmx1X1NWSSkKYnJvb206OnRpZHkodG90YWxmbHVfU1ZJLCBleHBvbmVudGlhdGUgPSBUUlVFKQptb2RlbF9wZXJmb3JtYW5jZSh0b3RhbGZsdV9TVkkpCnRibF9yZWdyZXNzaW9uKHRvdGFsZmx1X1NWSSwgbGFiZWwgPSBsaXN0KGliZF8zIH4gIklCRCBEaWFnbm9zaXMiLCBhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByaW1hcnkgTGFuZ3VhZ2UiLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIFJQTF9USEVNRVMgfiAiVG90YWwgU1ZJIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiwgYWN0X3RvYiB+ICJBY3RpdmUgVG9iYWNjbyBVc2UiKSwgZXhwb25lbnRpYXRlID0gVFJVRSkKCiMgUmVzaWR1YWwgcGxvdHMgCnRvdGFsZmx1X3JlcyA8LSByZXNpZCh0b3RhbGZsdV9TVkkpCnBsb3QoZml0dGVkKHRvdGFsZmx1X1NWSSksIHRvdGFsZmx1X3JlcywgY29sPSdzdGVlbGJsdWUnLCBwY2g9MTYsCiAgICAgeGxhYj0nUHJlZGljdGVkIFZhY2NpbmVzJywgeWxhYj0nU3RhbmRhcmRpemVkIFJlc2lkdWFscycsIG1haW49J1BvaXNzb24nKQphYmxpbmUoMCwwKQojIFBvaXNzb24gbW9kZWwgYXNzdW1lcyB0aGF0IHZhcmlhbmNlIGlzIGVxdWFsIHRvIHRoZSBtZWFuLiBJZiB2YXJpYW5jZSBpcyBzaWduaWZpY2FudGx5IGRpZmZlcmVudCB0aGFuIHRoZSBtZWFuLCBOQiByZWdyZXNzaW9uIGlzIGJldHRlci4gSGVyZSB3YXMgc2VlIHRoYXQgdGhlIHN0YW5kYXJkaXplZCByZXNpZHVhbHMgZmFsbCBvdXRzaWRlIHRoZSAtMiB0byAyIHJhbmdlLCBpbmRpY2F0aW5nIHRoZSBOQiByZWdyZXNzaW9uIGlzIG1vcmUgYXBwcm9wcmlhdGUuIAoKbGlicmFyeShBRVIpCmRpc3BlcnNpb250ZXN0KHRvdGFsZmx1X1NWSSwgdHJhZm89MSkKYGBgCgoKIyMgUlBMX1RIRU1FUyBOZWdhdGl2ZSBCaW5vbWlhbCBNb2RlbCAKYGBge3J9CmxpYnJhcnkoTUFTUykKdG90YWxmbHVfU1ZJLm5iIDwtIGdsbS5uYih0b3RhbF9mbHUgfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIAogICAgICAgICAgICAgICAgICAgICAgbGFuZ18zICsgbXN0YXRfNSArIHJlbGlnX2FmZmlsICsgYWN0X3RvYiArIG1heF9jaCArIElDCiAgICAgICAgICAgICAgICAgICAgICArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfVEhFTUVTLAogICAgICAgICAgICAgICBkYXRhID0gdmF4X2NsZWFuMSkgCnN1bW1hcnkodG90YWxmbHVfU1ZJLm5iKQpicm9vbTo6Z2xhbmNlKHRvdGFsZmx1X1NWSS5uYikKYnJvb206OnRpZHkodG90YWxmbHVfU1ZJLm5iLCBleHBvbmVudGlhdGUgPSBUUlVFKQp0YmxfcmVncmVzc2lvbih0b3RhbGZsdV9TVkkubmIsIGxhYmVsID0gbGlzdChpYmRfMyB+ICJJQkQgVHlwZSIsIGFnZV95cnMgfiAiQWdlIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBkZW5zaXR5IiwgZ2VuZGVyfiAiR2VuZGVyIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcl9wY3QgfiAiUGVyY2VudCBSZWJ1cGxpY2FuIiwgcmFjZV81IH4gInJhY2UiLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiLCBhY3RfdG9iIH4gIkFjdGl2ZSBUb2JhY2NvIFVzZSIsIFJQTF9USEVNRVMgfiAiVG90YWwgU1ZJIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgojIE5CIFJlc2lkdWFsIFBsb3QKdG90YWxmbHVfcmVzLm5iIDwtIHJlc2lkKHRvdGFsZmx1X1NWSS5uYikKcGxvdChmaXR0ZWQodG90YWxmbHVfU1ZJLm5iKSwgdG90YWxmbHVfcmVzLm5iLCBjb2w9J3N0ZWVsYmx1ZScsIHBjaD0xNiwKICAgICB4bGFiPSdQcmVkaWN0ZWQgVmFjY2luZXMnLCB5bGFiPSdTdGFuZGFyZGl6ZWQgUmVzaWR1YWxzJywgbWFpbj0nTmVnYXRpdmUgQmlub21pYWwnKQphYmxpbmUoMCwwKQojIE5CIHJlZ3Jlc3Npb24gbW9yZSBhcHByb3ByaWF0ZSBiZWNhdXNlIHJlc2lkdWFscyBvZiB0aGUgbW9kZWwgYXJlIHNtYWxsZXIgCgojIExpa2VsaWhvb2QgcmF0aW8gdGVzdCAKcGNoaXNxKDIgKiAobG9nTGlrKHRvdGFsZmx1X1NWSS5uYikgLSBsb2dMaWsodG90YWxmbHVfU1ZJKSksIGRmID0gMSwgbG93ZXIudGFpbCA9IEZBTFNFKQojIHAtdmFsdWUgb2YgbG9nbGlrIGlzIDwgMC4wNSBzbyBOQiByZWdyZXNzaW9uIGlzIHRoZSBtb3JlIGFwcHJvcHJpYXRlIG1vZGVsIAoKIyBNb2RlbCBwZXJmb3JtYW5jZSAKbW9kZWxfcGVyZm9ybWFuY2UodG90YWxmbHVfU1ZJLm5iKQpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwodG90YWxmbHVfU1ZJLm5iLCBwYW5lbCA9IFRSVUUpCgojIE1hcmdpbnMgCmNwbG90KHRvdGFsZmx1X1NWSS5uYiwgIlJQTF9USEVNRVMiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFNWSSIpCgoKYGBgCgoKIyMgU1ZJIFF1YXJ0aWxlIFBvaXNzb24gTW9kZWwgCmBgYHtyfQp0b3RhbGZsdV80IDwtIGdsbSh0b3RhbF9mbHUgfiBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyBsYW5nXzMgKyBtc3RhdF81CiAgICAgICAgICAgICAgICArIHJlbGlnX2FmZmlsKyBhY3RfdG9iICsgbWF4X2NoICsgcG9wX2RlbnMgKyByX3BjdCArIFJQTF80LAogICAgICAgICAgICAgICBmYW1pbHkgPSBwb2lzc29uLAogICAgICAgICAgICAgICBkYXRhID0gdmF4X2NsZWFuMSkgCnN1bW1hcnkodG90YWxmbHVfNCkKYnJvb206OmdsYW5jZSh0b3RhbGZsdV80KQpicm9vbTo6dGlkeSh0b3RhbGZsdV80LCBleHBvbmVudGlhdGUgPSBUUlVFKQptb2RlbF9wZXJmb3JtYW5jZSh0b3RhbGZsdV80KQp0YmxfcmVncmVzc2lvbih0b3RhbGZsdV80LCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIGRlbnNpdHkiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIFJQTF80IH4gIlNWSSBRdWFydGlsZSIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCByX3BjdCB+ICJQZXJjZW50IFJlYnVwbGljYW4iLCByYWNlXzUgfiAicmFjZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIGFjdF90b2IgfiAiQWN0aXZlIFRvYmFjY28gVXNlIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgojIFJlc2lkdWFsIHBsb3RzIAp0b3RhbGZsdV80X3JlcyA8LSByZXNpZCh0b3RhbGZsdV80KQpwbG90KGZpdHRlZCh0b3RhbGZsdV80KSwgdG90YWxmbHVfNF9yZXMsIGNvbD0nc3RlZWxibHVlJywgcGNoPTE2LAogICAgIHhsYWI9J1ByZWRpY3RlZCBWYWNjaW5lcycsIHlsYWI9J1N0YW5kYXJkaXplZCBSZXNpZHVhbHMnLCBtYWluPSdQb2lzc29uJykKYWJsaW5lKDAsMCkKIyBQb2lzc29uIG1vZGVsIGFzc3VtZXMgdGhhdCB2YXJpYW5jZSBpcyBlcXVhbCB0byB0aGUgbWVhbi4gSWYgdmFyaWFuY2UgaXMgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgdGhhbiB0aGUgbWVhbiwgTkIgcmVncmVzc2lvbiBpcyBiZXR0ZXIuIEhlcmUgd2FzIHNlZSB0aGF0IHRoZSBzdGFuZGFyZGl6ZWQgcmVzaWR1YWxzIGZhbGwgb3V0c2lkZSB0aGUgLTIgdG8gMiByYW5nZSwgaW5kaWNhdGluZyB0aGUgTkIgcmVncmVzc2lvbiBpcyBtb3JlIGFwcHJvcHJpYXRlLiAKCmxpYnJhcnkoQUVSKQpkaXNwZXJzaW9udGVzdCh0b3RhbGZsdV80LCB0cmFmbz0xKQpgYGAKCgojIyBTVkkgUXVhcnRpbGUgTmVnYXRpdmUgQmlub21pYWwgTW9kZWwgCmBgYHtyfQp0b3RhbGZsdV9TVklfNC5uYiA8LSBnbG0ubmIodG90YWxfZmx1IH4gaWJkXzMgKyBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhuaWNfMyArIGxhbmdfMyAgKyBtc3RhdF81ICsgcmVsaWdfYWZmaWwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFjdF90b2IgKyBtYXhfY2ggKyBJQyArIHJfcGN0ICsgcG9wX2RlbnMgKyBSUExfNCwKICAgICAgICAgICAgICAgZGF0YSA9IHZheF9jbGVhbjEpIApzdW1tYXJ5KHRvdGFsZmx1X1NWSV80Lm5iKQpicm9vbTo6Z2xhbmNlKHRvdGFsZmx1X1NWSV80Lm5iKQpicm9vbTo6dGlkeSh0b3RhbGZsdV9TVklfNC5uYiwgZXhwb25lbnRpYXRlID0gVFJVRSkKdGJsX3JlZ3Jlc3Npb24odG90YWxmbHVfU1ZJXzQubmIsIGxhYmVsID0gbGlzdChSUExfNCB+ICJTVkkgUXVhcnRpbGUiLCBhZ2VfeXJzIH4gIkFnZSIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gZGVuc2l0eSIsIGdlbmRlcn4gIkdlbmRlciIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJQcmVmZXJyZWQgTGFuZ3VhZ2UiLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgcmFjZV81IH4gIlJhY2UiLCByX3BjdCB+ICJQZXJjZW50IFJlYnVwbGljYW4iLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiLCBhY3RfdG9iIH4gIkFjdGl2ZSBUb2JhY2NvIFVzZSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIGliZF8zIH4gIklCRCBUeXBlIiwgSUMgfiAiSW1tdW5vY29tcHJvbWlzZWQiLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgojIE5CIFJlc2lkdWFsIFBsb3QKdG90YWxmbHVfU1ZJXzQubmJfcmVzIDwtIHJlc2lkKHRvdGFsZmx1X1NWSV80Lm5iKQpwbG90KGZpdHRlZCh0b3RhbGZsdV9TVklfNC5uYiksIHRvdGFsZmx1X1NWSV80Lm5iX3JlcywgY29sPSdzdGVlbGJsdWUnLCBwY2g9MTYsCiAgICAgeGxhYj0nUHJlZGljdGVkIFZhY2NpbmVzJywgeWxhYj0nU3RhbmRhcmRpemVkIFJlc2lkdWFscycsIG1haW49J05lZ2F0aXZlIEJpbm9taWFsJykKYWJsaW5lKDAsMCkKIyBOQiByZWdyZXNzaW9uIG1vcmUgYXBwcm9wcmlhdGUgYmVjYXVzZSByZXNpZHVhbHMgb2YgdGhlIG1vZGVsIGFyZSBzbWFsbGVyIAoKIyBMaWtlbGlob29kIHJhdGlvIHRlc3QgCnBjaGlzcSgyICogKGxvZ0xpayh0b3RhbGZsdV9TVklfNC5uYikgLSBsb2dMaWsodG90YWxmbHVfU1ZJXzQubmIpKSwgZGYgPSAxLCBsb3dlci50YWlsID0gRkFMU0UpCiMgcC12YWx1ZSBvZiBsb2dsaWsgaXMgPCAwLjA1IHNvIE5CIHJlZ3Jlc3Npb24gaXMgdGhlIG1vcmUgYXBwcm9wcmlhdGUgbW9kZWwgCgojIE1vZGVsIHBlcmZvcm1hbmNlIAptb2RlbF9wZXJmb3JtYW5jZSh0b3RhbGZsdV9TVklfNC5uYikKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKHRvdGFsZmx1X1NWSV80Lm5iLCBwYW5lbCA9IFRSVUUpCgojIE1hcmdpbnMgCmNwbG90KHRvdGFsZmx1X1NWSV80Lm5iLCAiUlBMXzQiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFNWSSBRdWFydGlsZSIpCmBgYAoKCiMjIEFsbCBUaGVtZXMgUG9pc3NvbiBNb2RlbCAKYGBge3J9CnRvdGFsZmx1X3RoZW1lcyA8LSBnbG0odG90YWxfZmx1ICB+IGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIGxhbmdfMyArIG1zdGF0XzUKICAgICAgICAgICAgICAgICsgcmVsaWdfYWZmaWwgKyBhY3RfdG9iICsgbWF4X2NoICsgcG9wX2RlbnMgKyByX3BjdCArIFJQTF9USEVNRTEgKyBSUExfVEhFTUUyICsgUlBMX1RIRU1FMyArIFJQTF9USEVNRTQsCiAgICAgICAgICAgICAgIGZhbWlseSA9IHBvaXNzb24sCiAgICAgICAgICAgICAgIGRhdGEgPSB2YXhfY2xlYW4xKSAKc3VtbWFyeSh0b3RhbGZsdV90aGVtZXMpCmJyb29tOjpnbGFuY2UodG90YWxmbHVfdGhlbWVzKQpicm9vbTo6dGlkeSh0b3RhbGZsdV90aGVtZXMsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKHRvdGFsZmx1X3RoZW1lcykKdGJsX3JlZ3Jlc3Npb24odG90YWxmbHVfdGhlbWVzLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIGRlbnNpdHkiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCByX3BjdCB+ICJQZXJjZW50IFJlYnVwbGljYW4iLCByYWNlXzUgfiAiUmFjZSIsIFJQTF9USEVNRTEgfiAiU29jZWlvZWNvbm9taWMgU3RhdHVzIiwgUlBMX1RIRU1FMiB+ICJIb3VzZWhvbGQgQ29tcG9zaXRpb24iLCBSUExfVEhFTUUzIH4gIk1pbm9yaXR5IFN0YXR1cyBhbmQgTGFuZ3VhZ2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiwgYWN0X3RvYiB+ICJBY3RpdmUgVG9iYWNjbyBVc2UiKSwgZXhwb25lbnRpYXRlID0gVFJVRSkKCiMgUmVzaWR1YWwgcGxvdHMgCnRvdGFsZmx1X3JlcyA8LSByZXNpZCh0b3RhbGZsdV90aGVtZXMpCnBsb3QoZml0dGVkKHRvdGFsZmx1X3RoZW1lcyksIHRvdGFsZmx1X3JlcywgY29sPSdzdGVlbGJsdWUnLCBwY2g9MTYsCiAgICAgeGxhYj0nUHJlZGljdGVkIFZhY2NpbmVzJywgeWxhYj0nU3RhbmRhcmRpemVkIFJlc2lkdWFscycsIG1haW49J1BvaXNzb24nKQphYmxpbmUoMCwwKQojIFBvaXNzb24gbW9kZWwgYXNzdW1lcyB0aGF0IHZhcmlhbmNlIGlzIGVxdWFsIHRvIHRoZSBtZWFuLiBJZiB2YXJpYW5jZSBpcyBzaWduaWZpY2FudGx5IGRpZmZlcmVudCB0aGFuIHRoZSBtZWFuLCBOQiByZWdyZXNzaW9uIGlzIGJldHRlci4gSGVyZSB3YXMgc2VlIHRoYXQgdGhlIHN0YW5kYXJkaXplZCByZXNpZHVhbHMgZmFsbCBvdXRzaWRlIHRoZSAtMiB0byAyIHJhbmdlLCBpbmRpY2F0aW5nIHRoZSBOQiByZWdyZXNzaW9uIGlzIG1vcmUgYXBwcm9wcmlhdGUuIAoKbGlicmFyeShBRVIpCmRpc3BlcnNpb250ZXN0KHRvdGFsZmx1X1NWSSwgdHJhZm89MSkKYGBgCgoKIyMgQWxsIFRoZW1lcyBOZWdhdGl2ZSBCaW5vbWlhbCBNb2RlbCAKYGBge3J9CnRvdGFsZmx1X3RoZW1lcy5uYiA8LSBnbG0ubmIodG90YWxfZmx1IH4gaWJkXzMgKyBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhuaWNfMyArIGxhbmdfMyAgKyBtc3RhdF81ICsgcmVsaWdfYWZmaWwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFjdF90b2IgKyBtYXhfY2ggKyBJQyArIHJfcGN0ICsgcG9wX2RlbnMgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBMX1RIRU1FMSArIFJQTF9USEVNRTIgKyBSUExfVEhFTUUzICsgUlBMX1RIRU1FNCwgCiAgICAgICAgICAgICAgIGRhdGEgPSB2YXhfY2xlYW4xKSAKc3VtbWFyeSh0b3RhbGZsdV90aGVtZXMubmIpCmJyb29tOjpnbGFuY2UodG90YWxmbHVfdGhlbWVzLm5iKQpicm9vbTo6dGlkeSh0b3RhbGZsdV90aGVtZXMubmIsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKHRvdGFsZmx1X3RoZW1lcy5uYikKdGJsX3JlZ3Jlc3Npb24odG90YWxmbHVfdGhlbWVzLm5iLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIGRlbnNpdHkiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIFJQTF9USEVNRTEgfiAiU29jZWlvZWNvbm9taWMgU3RhdHVzIiwgUlBMX1RIRU1FMiB+ICJIb3VzZWhvbGQgQ29tcG9zaXRpb24iLCBSUExfVEhFTUUzIH4gIk1pbm9yaXR5IFN0YXR1cyBhbmQgTGFuZ3VhZ2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiwgcmFjZV81IH4gIlJhY2UiLCByX3BjdCB+ICJQZXJjZW50IFJlYnVwbGljYW4iLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiLCBhY3RfdG9iIH4gIkFjdGl2ZSBUb2JhY2NvIFVzZSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIsIGliZF8zIH4gIklCRCBUeXBlIiwgSUMgfiAiSW1tdW5vY29tcHJvbWlzZWQiLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgojIE5CIFJlc2lkdWFsIFBsb3QKdG90YWxmbHVfcmVzLm5iIDwtIHJlc2lkKHRvdGFsZmx1X3RoZW1lcy5uYikKcGxvdChmaXR0ZWQodG90YWxmbHVfdGhlbWVzLm5iKSwgdG90YWxmbHVfcmVzLm5iLCBjb2w9J3N0ZWVsYmx1ZScsIHBjaD0xNiwKICAgICB4bGFiPSdQcmVkaWN0ZWQgVmFjY2luZXMnLCB5bGFiPSdTdGFuZGFyZGl6ZWQgUmVzaWR1YWxzJywgbWFpbj0nTmVnYXRpdmUgQmlub21pYWwnKQphYmxpbmUoMCwwKQojIE5CIHJlZ3Jlc3Npb24gbW9yZSBhcHByb3ByaWF0ZSBiZWNhdXNlIHJlc2lkdWFscyBvZiB0aGUgbW9kZWwgYXJlIHNtYWxsZXIgCgojIExpa2VsaWhvb2QgcmF0aW8gdGVzdCAKcGNoaXNxKDIgKiAobG9nTGlrKHRvdGFsZmx1X3RoZW1lcy5uYikgLSBsb2dMaWsodG90YWxmbHVfdGhlbWVzLm5iKSksIGRmID0gMSwgbG93ZXIudGFpbCA9IEZBTFNFKQojIHAtdmFsdWUgb2YgbG9nbGlrIGlzIDwgMC4wNSBzbyBOQiByZWdyZXNzaW9uIGlzIHRoZSBtb3JlIGFwcHJvcHJpYXRlIG1vZGVsIAoKIyBNb2RlbCBwZXJmb3JtYW5jZSAKbW9kZWxfcGVyZm9ybWFuY2UodG90YWxmbHVfdGhlbWVzLm5iKQpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwodG90YWxmbHVfdGhlbWVzLm5iLCBwYW5lbCA9IFRSVUUpCgojIE1hcmdpbnMgCmNwbG90KHRvdGFsZmx1X3RoZW1lcy5uYiwgIlJQTF9USEVNRTEiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FMSIpCmNwbG90KHRvdGFsZmx1X3RoZW1lcy5uYiwgIlJQTF9USEVNRTIiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FMiIpCmNwbG90KHRvdGFsZmx1X3RoZW1lcy5uYiwgIlJQTF9USEVNRTMiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FMyIpCmNwbG90KHRvdGFsZmx1X3RoZW1lcy5uYiwgIlJQTF9USEVNRTQiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FNCIpCmBgYAoKCgojIEZsdSAyMDE5ICsgVG90YWwgU1ZJOiBNdWx0aXZhcmFpYmxlIE1vZGVsIHsudGFic2V0fQoKIyMgQWxsIHZhcmlhYmxlcyAKYGBge3J9CkZsdTIwMTlfU1ZJIDwtIGdsbShmbHVfMjAxOSB+IGliZF8zICsgYWdlX3lycyArIGdlbmRlciArIHJhY2VfNSArIGV0aG5pY18zICsgCiAgICAgICAgICAgICAgICAgICAgICBsYW5nXzMgKyBtc3RhdF81ICsgcmVsaWdfYWZmaWwgKyBhY3RfdG9iICsgbWF4X2NoICsgSUMKICAgICAgICAgICAgICAgICAgICAgICsgcG9wX2RlbnMgKyByX3BjdCArIFJQTF9USEVNRVMsCiAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwKICAgICAgICAgICAgICBkYXRhID0gdmF4X2NsZWFuMSkKc3VtbWFyeShGbHUyMDE5X1NWSSApCmJyb29tOjpnbGFuY2UoRmx1MjAxOV9TVkkgKQpicm9vbTo6dGlkeShGbHUyMDE5X1NWSSAsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCnRibF9yZWdyZXNzaW9uKEZsdTIwMTlfU1ZJLCBsYWJlbCA9IGxpc3QoaWJkXzMgfiAiSUJEIFR5cGUiLCBhZ2VfeXJzIH4gIkFnZSIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gZGVuc2l0eSIsIGdlbmRlcn4gIkdlbmRlciIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJQcmVmZXJyZWQgTGFuZ3VhZ2UiLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHJfcGN0IH4gIlBlcmNlbnQgUmVidXBsaWNhbiIsIHJhY2VfNSB+ICJSYWNlIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiwgYWN0X3RvYiB+ICJBY3RpdmUgVG9iYWNjbyBVc2UiLCBJQyB+ICJJbW11bm9jb21wcm9taXNlZCIsIFJQTF9USEVNRVMgfiAiVG90YWwgU1ZJIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgojIE1vZGVsIHBlcmZvcm1hbmNlIAptb2RlbF9wZXJmb3JtYW5jZShGbHUyMDE5X1NWSSkKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKEZsdTIwMTlfU1ZJLCBwYW5lbCA9IFRSVUUpCgojIE1hcmdpbnMgCmNwbG90KEZsdTIwMTlfU1ZJLCAiUlBMX1RIRU1FUyIsIHdoYXQgPSAicHJlZGljdGlvbiIsIG1haW4gPSAiUHJlZGljdGVkIExpa2VsaWhvb2Qgb2YgRmx1IFZhY2NpbmUgR2l2ZW4gU1ZJIikKYGBgCgoKIyMgQWdlIGFuZCBSUExfVEhFTUVTIGFzIFF1YWRyYXRpYyAKYGBge3J9CkZsdTIwMTlfU1ZJLjIgPC0gZ2xtKGZsdV8yMDE5IH4gSShhZ2VfeXJzXjIpICsgaWJkXzMgICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyAKICAgICAgICAgICAgICAgICAgICAgIGxhbmdfMyArIG1zdGF0XzUgKyByZWxpZ19hZmZpbCArIGFjdF90b2IgKyBtYXhfY2ggKyBJQwogICAgICAgICAgICAgICAgICAgICAgKyBwb3BfZGVucyArIHJfcGN0ICsgIEkoUlBMX1RIRU1FU14yKSwKICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLAogICAgICAgICAgICAgIGRhdGEgPSB2YXhfY2xlYW4xKQpzdW1tYXJ5KEZsdTIwMTlfU1ZJLjIgKQpicm9vbTo6Z2xhbmNlKEZsdTIwMTlfU1ZJLjIgKQpicm9vbTo6dGlkeShGbHUyMDE5X1NWSS4yICwgZXhwb25lbnRpYXRlID0gVFJVRSkKdGJsX3JlZ3Jlc3Npb24oRmx1MjAxOV9TVkkuMiwgbGFiZWwgPSBsaXN0KGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBEZW5zaXR5Iiwgcl9wY3QgfiAiUGVyY2VudCBSZXB1YmxpY2FuIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgoKIyMgU3RhbmRhcmQgUmVzaWR1YWxzIApGbHUyMDE5X1NWSS4yLnN0ZCA8LSByc3RhbmRhcmQoRmx1MjAxOV9TVkkuMikKcGxvdChGbHUyMDE5X1NWSS4yLnN0ZCwgeWxhYj0iU3RhbmRhcmRpemVkIFJlc2lkdWFscyIpCgojIyBNYXJnaW5zIApjcGxvdChGbHUyMDE5X1NWSS4yLCAiUlBMX1RIRU1FUyIsIHdoYXQgPSAicHJlZGljdGlvbiIsIG1haW4gPSAiUHJlZGljdGVkIExpa2VsaWhvb2Qgb2YgRmx1IFZhY2NpbmUgR2l2ZW4gU1ZJIikKCiMjIE1vZGVsIHBlcmZvcm1hbmNlIGdyYXBocwptb2RlbF9wZXJmb3JtYW5jZShGbHUyMDE5X1NWSS4yICkKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKEZsdTIwMTlfU1ZJLjIsIHBhbmVsID0gVFJVRSkKYGBgCgojIyBJbnRlcmFjdGlvbiBiZXR3ZWVuIHJhY2UgYW5kIFJQTF9USEVNRVMgCmBgYHtyfQpGbHUyMDE5X1NWSS5tb2QgPC0gZ2xtKGZsdV8yMDE5IH4gSShhZ2VfeXJzXjIpICsgaWJkXzMgKyBhZ2VfeXJzICsgZ2VuZGVyICArIAogICAgICAgICAgICAgICAgICAgICAgICAgZXRobmljXzMgKyBsYW5nXzMgKyBtc3RhdF81ICsgcmVsaWdfYWZmaWwgKyBhY3RfdG9iICsgCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfY2ggKyBJQyArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfVEhFTUVTICsKICAgICAgICAgICAgICAgICAgICAgICAgIEkoUlBMX1RIRU1FU14yKSpyYWNlXzUsCiAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwKICAgICAgICAgICAgICBkYXRhID0gdmF4X2NsZWFuMSkKc3VtbWFyeShGbHUyMDE5X1NWSS5tb2QgKQpicm9vbTo6Z2xhbmNlKEZsdTIwMTlfU1ZJLm1vZCApCmJyb29tOjp0aWR5KEZsdTIwMTlfU1ZJLm1vZCAsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCnRibF9yZWdyZXNzaW9uKEZsdTIwMTlfU1ZJLm1vZCwgbGFiZWwgPSBsaXN0KGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBEZW5zaXR5Iiwgcl9wY3QgfiAiUGVyY2VudCBSZXB1YmxpY2FuIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgojIyBTdGFuZGFyZCBSZXNpZHVhbHMgCkZsdTIwMTlfU1ZJLm1vZC5zdGQgPC0gcnN0YW5kYXJkKEZsdTIwMTlfU1ZJLm1vZCkKcGxvdChGbHUyMDE5X1NWSS5tb2Quc3RkLCB5bGFiPSJTdGFuZGFyZGl6ZWQgUmVzaWR1YWxzIikKCiMjIE1hcmdpbnMgCmNwbG90KEZsdTIwMTlfU1ZJLm1vZCwgIlJQTF9USEVNRVMiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFNWSSIpCgojIyBNb2RlbCBwZXJmb3JtYW5jZSBncmFwaHMKbW9kZWxfcGVyZm9ybWFuY2UoRmx1MjAxOV9TVkkubW9kICkKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKEZsdTIwMTlfU1ZJLm1vZCwgcGFuZWwgPSBUUlVFKQpgYGAKCiMjIFNWSSBhcyBhIG1lZGlhdG9yIG9mIHJhY2UgLT4gdmFjY2luYXRpb24gKGJpdmFyaWF0ZSkKYGBge3J9CmxpYnJhcnkobWVkaWF0aW9uKQptb2RlbC4wIDwtIGdsbShmbHVfMjAxOSB+IHJhY2VfNSwgZmFtaWx5ID0gYmlub21pYWwsIGRhdGEgPSB2YXhfY2xlYW4xKQptb2RlbC5tIDwtIGxtKFJQTF9USEVNRVMgfiByYWNlXzUsIGRhdGEgPSB2YXhfY2xlYW4xKQptb2RlbC55IDwtIGdsbShmbHVfMjAxOSB+IHJhY2VfNSArIFJQTF9USEVNRVMsIGZhbWlseSA9IGJpbm9taWFsLCBkYXRhID0gdmF4X2NsZWFuMSkKcmVzdWx0czEgPC0gbWVkaWF0ZShtb2RlbC5tLCBtb2RlbC55LCB0cmVhdCA9ICJyYWNlXzUiLCBtZWRpYXRvciA9ICJSUExfVEhFTUVTIiwgCiAgICAgICAgICAgICAgICAgICAgYm9vdCA9IFRSVUUsIHNpbXMgPSA1MDApCnN1bW1hcnkocmVzdWx0czEpCmBgYAoKCiMjIFNWSSBhcyBhIG1lZGlhdG9yIG9mIHJhY2UgLT4gdmFjY2luYXRpb24gCmBgYHtyfQoKdmF4X2NsZWFuMSAlPiUgCm11dGF0ZShibGFjayA9IGFzX2ZhY3RvcihyYWNlXzUpLAogICAgICAgICBibGFjayA9IGZjdF9yZWNvZGUoYmxhY2ssIE5vID0gIk90aGVyIiwKICAgICAgICAgICAgICAgICAgTm8gPSAiQXNpYW4iLAogICAgICAgICAgICAgICAgICBObyA9ICJXaGl0ZSIsIFllcyA9ICJCbGFjayIsCiAgICAgICAgICAgICAgICAgIE5vID0gIk5hdGl2ZSIpLAogICAgICAgICBibGFjayA9IGZjdF9yZWxldmVsKGJsYWNrLCByZWYgPSAnTm8nKSkgLT4gcmFjZV9kaWNoCnJhY2VfZGljaCRibGFjazwtaWZlbHNlKHJhY2VfZGljaCRibGFjaz09IlllcyIsMSwwKQpyYWNlX2RpY2ggJT4lIAogIG11dGF0ZShzdmlfMiA9IGNhc2Vfd2hlbihSUExfVEhFTUVTPj0gMC41IH4gJzEnLFRSVUUgfiAiMCIpKSAtPiAgdGhlbWVzX2RpY2gKdGhlbWVzX2RpY2gkc3ZpXzIgPSBhcy5udW1lcmljKHRoZW1lc19kaWNoJHN2aV8yKQojU3RlcCAxOiBJcyB0aGVyZSBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIFgocmFjZSkgYW5kIFkoZmx1IHZhY2NpbmUpLiBZZXMgLSBibGFjayBhbmQgb3RoZXIgcGF0aWVudHMgd2VyZSBsZXNzIGxpa2VseSB0byByZWNlaXZlIHRoZSBmbHUgdmFjY2luZSB0aGFuIEFzaWFuIGFuZCB3aGl0ZSBwYXRpZW50cwpGbHUyMDE5IDwtIGdsbShmbHVfMjAxOSB+IGliZF8zICsgYWdlX3lycyArIGdlbmRlciArIGJsYWNrICsgZXRobmljXzMgKyBsYW5nXzMgKwogICAgICAgICAgICAgICAgICAgbXN0YXRfNSsgcmVsaWdfYWZmaWwgKyBtYXhfY2ggKyBJQyArIHBvcF9kZW5zICsgcl9wY3QgKyBzdmlfMiwKICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbCwgZGF0YSA9IHRoZW1lc19kaWNoKQoKIyBTdGVwIDI6IElzIHRoZXJlIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIG1lZGlhdG9yIChTVkkpIGFuZCByYWNlPyBZZXMsIHBhdGllbnRzIHdpdGggaGlnaGVyIFNWSSB3ZXJlIG1vcmUgbGlrZWx5IHRvIGJlIGJsYWNrIApGbHUyMDE5X00gPC0gZ2xtKHN2aV8yIH4gaWJkXzMgKyBhZ2VfeXJzICsgZ2VuZGVyICsgYmxhY2sgKyBldGhuaWNfMyArIGxhbmdfMyArCiAgICAgICAgICAgICAgICAgICBtc3RhdF81KyByZWxpZ19hZmZpbCArIG1heF9jaCArIElDICsgcG9wX2RlbnMgKyByX3BjdCArIGZsdV8yMDE5LAogICAgICAgICAgICAgICAgIGZhbWlseSA9IGJpbm9taWFsLCAKICAgICAgICAgICAgICAgICBkYXRhID0gdGhlbWVzX2RpY2gpCnN1bW1hcnkoRmx1MjAxOV9NICkKYnJvb206OmdsYW5jZShGbHUyMDE5X00gKQp0YmxfcmVncmVzc2lvbihGbHUyMDE5X00sIGxhYmVsID0gbGlzdChhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIGJsYWNrIH4gIkJsYWNrIG9yIEFmcmljYW4gQW1lcmljYW4iLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIERlbnNpdHkiLCByX3BjdCB+ICJQZXJjZW50IFJlcHVibGljYW4iKSkKCiMgU3RlcCAzOiBNZWRpYXRpb24gYW5hbHlzaXMKcmVzdWx0cyA8LSBtZWRpYXRlKEZsdTIwMTlfTSwgRmx1MjAxOSwgdHJlYXQ9ICJibGFjayIsIG1lZGlhdG9yPSJzdmlfMiIsCiAgICAgICAgICAgICAgICAgICBib290PVRSVUUsIHNpbXM9NTAwKQpzdW1tYXJ5KHJlc3VsdHMpCmBgYAoKCiMgRmx1IDIwMTkgKyBTVkkgUXVhcnRpbGUgey50YWJzZXR9CiMjIEFsbCBWYXJpYWJsZXMKYGBge3J9CkZsdTIwMTlfU1ZJLjQgPC0gZ2xtKGZsdV8yMDE5IH4gaWJkXzMgKyBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyAKICAgICAgICAgICAgICAgICAgICAgIGxhbmdfMyArIG1zdGF0XzUgKyByZWxpZ19hZmZpbCArIGFjdF90b2IgKyBtYXhfY2ggKyBJQwogICAgICAgICAgICAgICAgICAgICAgKyBwb3BfZGVucyArIHJfcGN0ICsgUlBMXzQsCiAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwKICAgICAgICAgICAgICBkYXRhID0gdmF4X2NsZWFuMSkKc3VtbWFyeShGbHUyMDE5X1NWSS40ICkKbW9kZWxfcGVyZm9ybWFuY2UoRmx1MjAxOV9TVkkuNCkKYnJvb206OmdsYW5jZShGbHUyMDE5X1NWSS40ICkKYnJvb206OnRpZHkoRmx1MjAxOV9TVkkuNCAsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCnRibF9yZWdyZXNzaW9uKEZsdTIwMTlfU1ZJLjQsIGxhYmVsID0gbGlzdChpYmRfMyB+ICJJQkQgVHlwZSIsIGFnZV95cnMgfiAiQWdlIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBkZW5zaXR5IiwgZ2VuZGVyfiAiR2VuZGVyIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcl9wY3QgfiAiUGVyY2VudCBSZWJ1cGxpY2FuIiwgcmFjZV81IH4gIlJhY2UiLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiLCBhY3RfdG9iIH4gIkFjdGl2ZSBUb2JhY2NvIFVzZSIsIFJQTF80IH4gIlNWSSBRdWFydGlsZSIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyMgTWFyZ2lucyBQbG90CmNwbG90KEZsdTIwMTlfU1ZJLjQsICJSUExfNCIsIHdoYXQgPSAicHJlZGljdGlvbiIsIG1haW4gPSAiUHJlZGljdGVkIExpa2VsaWhvb2Qgb2YgRmx1IFZhY2NpbmUgR2l2ZW4gU1ZJIFF1YXJ0aWxlIikKCiMgUGVyZm9ybWFuY2UgCm1vZGVsX3BlcmZvcm1hbmNlKEZsdTIwMTlfU1ZJLjQpCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChGbHUyMDE5X1NWSS40LCBwYW5lbCA9IFRSVUUpCmBgYAoKCiMjIFNWSSBRdWFydGlsZSBhcyBtb2RlcmF0b3IgZm9yIHJhY2UgLT4gdmFjY2luYXRpb24KYGBge3J9CkZsdTIwMTlfU1ZJLjRyYWNlIDwtIGdsbShmbHVfMjAxOSB+IGliZF8zICsgYWdlX3lycyArIGdlbmRlciArIGV0aG5pY18zICsgCiAgICAgICAgICAgICAgICAgICAgICBsYW5nXzMgKyBtc3RhdF81ICsgcmVsaWdfYWZmaWwgKyBhY3RfdG9iICsgbWF4X2NoICsgSUMKICAgICAgICAgICAgICAgICAgICAgICsgcG9wX2RlbnMgKyByX3BjdCArIFJQTF80KnJhY2VfNSwKICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLAogICAgICAgICAgICAgIGRhdGEgPSB2YXhfY2xlYW4xKQpzdW1tYXJ5KEZsdTIwMTlfU1ZJLjRyYWNlICkKbW9kZWxfcGVyZm9ybWFuY2UoRmx1MjAxOV9TVkkuNHJhY2UpCmJyb29tOjpnbGFuY2UoRmx1MjAxOV9TVkkuNHJhY2UgKQpicm9vbTo6dGlkeShGbHUyMDE5X1NWSS40cmFjZSAsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCnRibF9yZWdyZXNzaW9uKEZsdTIwMTlfU1ZJLjRyYWNlLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCByYWNlXzUgfiAiUmFjZSIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJQcmVmZXJyZWQgTGFuZ3VhZ2UiLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgUlBMXzQgfiAiU1ZJIFF1YXJ0aWxlIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyBQZXJmb3JtYW5jZSAKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKEZsdTIwMTlfU1ZJLjRyYWNlLCBwYW5lbCA9IFRSVUUpCmBgYAoKCiMgRmx1IDIwMTkgKyBUaGVtZXM6IE11bHRpdmFyYWlibGUgTW9kZWwgey50YWJzZXR9CiMjIEFsbCBWYXJpYWJsZXMgCmBgYHtyfQpGbHUyMDE5X3RoZW1lcyA8LSBnbG0oZmx1XzIwMTkgfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIAogICAgICAgICAgICAgICAgICAgICAgbGFuZ18zICsgbXN0YXRfNSArIHJlbGlnX2FmZmlsICsgYWN0X3RvYiArIG1heF9jaCArIElDCiAgICAgICAgICAgICAgICAgICAgICArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfVEhFTUUxICsgUlBMX1RIRU1FMiArIFJQTF9USEVNRTMKICAgICAgICAgICAgICAgICAgICAgICsgUlBMX1RIRU1FNCwKICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLAogICAgICAgICAgICAgIGRhdGEgPSB2YXhfY2xlYW4xKQpzdW1tYXJ5KEZsdTIwMTlfdGhlbWVzICkKYnJvb206OmdsYW5jZShGbHUyMDE5X3RoZW1lcyApCmJyb29tOjp0aWR5KEZsdTIwMTlfdGhlbWVzICwgZXhwb25lbnRpYXRlID0gVFJVRSkKdGJsX3JlZ3Jlc3Npb24oRmx1MjAxOV90aGVtZXMsIGxhYmVsID0gbGlzdChpYmRfMyB+ICJJQkQgVHlwZSIsIGFnZV95cnMgfiAiQWdlIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBkZW5zaXR5IiwgZ2VuZGVyfiAiR2VuZGVyIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcl9wY3QgfiAiUGVyY2VudCBSZWJ1cGxpY2FuIiwgcmFjZV81IH4gIlJhY2UiLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiLCBhY3RfdG9iIH4gIkFjdGl2ZSBUb2JhY2NvIFVzZSIsIFJQTF9USEVNRTEgfiAiU29jZWlvZWNvbm9taWMgU3RhdHVzIiwgUlBMX1RIRU1FMiB+ICJIb3VzZWhvbGQgQ29tcG9zaXRpb24iLCBSUExfVEhFTUUzIH4gIk1pbm9yaXR5IFN0YXR1cyBhbmQgTGFuZ3VhZ2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgojIE1vZGVsIHBlcmZvcm1hbmNlIAptb2RlbF9wZXJmb3JtYW5jZShGbHUyMDE5X3RoZW1lcykKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKEZsdTIwMTlfdGhlbWVzLCBwYW5lbCA9IFRSVUUpCgojIE1hcmdpbnMgCmNwbG90KEZsdTIwMTlfdGhlbWVzLCAiUlBMX1RIRU1FMSIsIHdoYXQgPSAicHJlZGljdGlvbiIsIG1haW4gPSAiUHJlZGljdGVkIExpa2VsaWhvb2Qgb2YgRmx1IFZhY2NpbmUgR2l2ZW4gVEhFTUUxIikKY3Bsb3QoRmx1MjAxOV90aGVtZXMsICJSUExfVEhFTUUyIiwgd2hhdCA9ICJwcmVkaWN0aW9uIiwgbWFpbiA9ICJQcmVkaWN0ZWQgTGlrZWxpaG9vZCBvZiBGbHUgVmFjY2luZSBHaXZlbiBUSEVNRTIiKQpjcGxvdChGbHUyMDE5X3RoZW1lcywgIlJQTF9USEVNRTMiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FMyIpCmNwbG90KEZsdTIwMTlfdGhlbWVzLCAiUlBMX1RIRU1FNCIsIHdoYXQgPSAicHJlZGljdGlvbiIsIG1haW4gPSAiUHJlZGljdGVkIExpa2VsaWhvb2Qgb2YgRmx1IFZhY2NpbmUgR2l2ZW4gVEhFTUU0IikKYGBgCiMjIEludGVyYWN0aW9uIGJldHdlZW4gVGhlbWUgMSBhbmQgUmFjZSAKYGBge3J9CkZsdTIwMTlfdGhlbWVzLm1vZCA8LSBnbG0oZmx1XzIwMTkgfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgKyBldGhuaWNfMyArIAogICAgICAgICAgICAgICAgICAgICAgbGFuZ18zICsgbXN0YXRfNSArIHJlbGlnX2FmZmlsICsgYWN0X3RvYiArIG1heF9jaCArIElDCiAgICAgICAgICAgICAgICAgICAgICArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfVEhFTUUxKnJhY2VfNSArIFJQTF9USEVNRTIgKyBSUExfVEhFTUUzCiAgICAgICAgICAgICAgICAgICAgICArIFJQTF9USEVNRTQsCiAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwKICAgICAgICAgICAgICBkYXRhID0gdmF4X2NsZWFuMSkKc3VtbWFyeShGbHUyMDE5X3RoZW1lcy5tb2QgKQpicm9vbTo6Z2xhbmNlKEZsdTIwMTlfdGhlbWVzLm1vZCApCmJyb29tOjp0aWR5KEZsdTIwMTlfdGhlbWVzLm1vZCAsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCnRibF9yZWdyZXNzaW9uKEZsdTIwMTlfdGhlbWVzLm1vZCwgbGFiZWwgPSBsaXN0KGFnZV95cnMgfiAiQWdlIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBkZW5zaXR5IiwgZ2VuZGVyfiAiR2VuZGVyIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCByX3BjdCB+ICJQZXJjZW50IFJlYnVwbGljYW4iLCByYWNlXzUgfiAiUmFjZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyBNb2RlbCBwZXJmb3JtYW5jZSAKbW9kZWxfcGVyZm9ybWFuY2UoRmx1MjAxOV90aGVtZXMubW9kKQpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoRmx1MjAxOV90aGVtZXMubW9kLCBwYW5lbCA9IFRSVUUpCgojIE1hcmdpbnMgCmNwbG90KEZsdTIwMTlfdGhlbWVzLm1vZCwgIlJQTF9USEVNRTEiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FMSIpCmNwbG90KEZsdTIwMTlfdGhlbWVzLm1vZCwgIlJQTF9USEVNRTIiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FMiIpCmNwbG90KEZsdTIwMTlfdGhlbWVzLm1vZCwgIlJQTF9USEVNRTMiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FMyIpCmNwbG90KEZsdTIwMTlfdGhlbWVzLm1vZCwgIlJQTF9USEVNRTQiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FNCIpCmBgYAoKCiMjIFRoZW1lIDEgYXMgbWVkaWF0b3Igb2YgcmFjZSAtPiB2YWNjaW5hdGlvbiAKYGBge3J9CiNTdGVwIDE6IElzIHRoZXJlIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gWChyYWNlKSBhbmQgWShmbHUgdmFjY2luZSkuIFllcyAtIGJsYWNrIGFuZCBvdGhlciBwYXRpZW50cyB3ZXJlIGxlc3MgbGlrZWx5IHRvIHJlY2VpdmUgdGhlIGZsdSB2YWNjaW5lIHRoYW4gQXNpYW4gYW5kIHdoaXRlIHBhdGllbnRzCgoKcmFjZV9kaWNoICU+JSAKICBtdXRhdGUodGhlbWUxXzIgPSBjYXNlX3doZW4oUlBMX1RIRU1FMT49IDAuNSB+ICcxJyxUUlVFIH4gIjAiKSkgLT4gIHRoZW1lc19kaWNoMgp0aGVtZXNfZGljaDIkdGhlbWUxXzIgPSBhcy5udW1lcmljKHRoZW1lc19kaWNoMiR0aGVtZTFfMikKRmx1MjAxOS4wLjIgPC0gZ2xtKGZsdV8yMDE5IH4gaWJkXzMgKyBhZ2VfeXJzICsgZ2VuZGVyICsgYmxhY2sgKyBldGhuaWNfMyArIAogICAgICAgICAgICAgICAgICAgICAgbGFuZ18zICsgbXN0YXRfNSArIHJlbGlnX2FmZmlsICsgYWN0X3RvYiArIG1heF9jaCArIElDCiAgICAgICAgICAgICAgICAgICAgICArIHBvcF9kZW5zICsgcl9wY3QgKyB0aGVtZTFfMiwgZmFtaWx5ID0gYmlub21pYWwsIGRhdGEgPSB0aGVtZXNfZGljaDIpCgojIFN0ZXAgMjogSXMgdGhlcmUgYSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgbWVkaWF0b3IgKFNWSSkgYW5kIHJhY2U/IFllcywgcGF0aWVudHMgd2l0aCBoaWdoZXIgU1ZJIHdlcmUgbW9yZSBsaWtlbHkgdG8gYmUgYmxhY2sgCkZsdTIwMTlfTS4yIDwtIGdsbSh0aGVtZTFfMiB+IGliZF8zICsgYWdlX3lycyArIGdlbmRlciArIGJsYWNrICsgZXRobmljXzMgKyAKICAgICAgICAgICAgICAgICAgICAgIGxhbmdfMyArIG1zdGF0XzUgKyByZWxpZ19hZmZpbCArIGFjdF90b2IgKyBtYXhfY2ggKyBJQwogICAgICAgICAgICAgICAgICAgICAgKyBwb3BfZGVucyArIHJfcGN0ICsgZmx1XzIwMTksCiAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbCwgCiAgICAgICAgICAgICAgZGF0YSA9IHRoZW1lc19kaWNoMikKc3VtbWFyeShGbHUyMDE5X00gKQpzdW1tYXJ5KEZsdTIwMTlfTS4yICkKYnJvb206OmdsYW5jZShGbHUyMDE5X00uMiApCnRibF9yZWdyZXNzaW9uKEZsdTIwMTlfTS4yLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIERlbnNpdHkiLCByX3BjdCB+ICJQZXJjZW50IFJlcHVibGljYW4iKSkKCiMgU3RlcCAzOiBNZWRpYXRpb24gYW5hbHlzaXMKcmVzdWx0czEgPC0gbWVkaWF0ZShGbHUyMDE5X00uMiwgRmx1MjAxOS4wLjIsIHRyZWF0PSJibGFjayIsIG1lZGlhdG9yPSJ0aGVtZTFfMiIsCiAgICAgICAgICAgICAgICAgICBib290PVRSVUUsIHNpbXM9NTAwKQpzdW1tYXJ5KHJlc3VsdHMxKQpgYGAKIyBGbHUgMjAyMSArIFRvdGFsIFNWSTogTXVsdGl2YXJhaWJsZSBNb2RlbCB7LnRhYnNldH0KCiMjIEFsbCB2YXJpYWJsZXMgCmBgYHtyfQpGbHUyMDIxX1NWSSA8LSBnbG0oZmx1XzIwMjEgfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIAogICAgICAgICAgICAgICAgICAgICAgbGFuZ18zICsgbXN0YXRfNSArIHJlbGlnX2FmZmlsICsgYWN0X3RvYiArIG1heF9jaCArIElDCiAgICAgICAgICAgICAgICAgICAgICArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfVEhFTUVTLAogICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsCiAgICAgICAgICAgICAgZGF0YSA9IHZheF9jbGVhbjEpCnN1bW1hcnkoRmx1MjAyMV9TVkkgKQpicm9vbTo6Z2xhbmNlKEZsdTIwMjFfU1ZJICkKYnJvb206OnRpZHkoRmx1MjAyMV9TVkkgLCBleHBvbmVudGlhdGUgPSBUUlVFKQp0YmxfcmVncmVzc2lvbihGbHUyMDIxX1NWSSwgbGFiZWwgPSBsaXN0KGliZF8zIH4gIklCRCBUeXBlIiwgYWdlX3lycyB+ICJBZ2UiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIGRlbnNpdHkiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCByX3BjdCB+ICJQZXJjZW50IFJlYnVwbGljYW4iLCByYWNlXzUgfiAiUmFjZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIGFjdF90b2IgfiAiQWN0aXZlIFRvYmFjY28gVXNlIiwgSUMgfiAiSW1tdW5vY29tcHJvbWlzZWQiLCBSUExfVEhFTUVTIH4gIlRvdGFsIFNWSSIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyBNb2RlbCBwZXJmb3JtYW5jZSAKbW9kZWxfcGVyZm9ybWFuY2UoRmx1MjAyMV9TVkkpCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChGbHUyMDIxX1NWSSwgcGFuZWwgPSBUUlVFKQoKIyBNYXJnaW5zIApjcGxvdChGbHUyMDIxX1NWSSwgIlJQTF9USEVNRVMiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFNWSSIpCmBgYAoKCiMjIEFnZSBhbmQgUlBMX1RIRU1FUyBhcyBRdWFkcmF0aWMgCmBgYHtyfQpGbHUyMDIxX1NWSS4yIDwtIGdsbShmbHVfMjAyMSB+IEkoYWdlX3lyc14yKSArIGliZF8zICArIGdlbmRlciArIHJhY2VfNSArCiAgICAgICAgICAgICAgICAgICAgICAgZXRobmljXzMgKyBsYW5nXzMgKyBtc3RhdF81ICsgcmVsaWdfYWZmaWwgKyAKICAgICAgICAgICAgICAgICAgICAgICBhY3RfdG9iICsgbWF4X2NoICsgSUMgKyBwb3BfZGVucyArIHJfcGN0ICsgSShSUExfVEhFTUVTXjIpLAogICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsCiAgICAgICAgICAgICAgZGF0YSA9IHZheF9jbGVhbjEpCnN1bW1hcnkoRmx1MjAyMV9TVkkuMiApCmJyb29tOjpnbGFuY2UoRmx1MjAyMV9TVkkuMiApCmJyb29tOjp0aWR5KEZsdTIwMjFfU1ZJLjIgLCBleHBvbmVudGlhdGUgPSBUUlVFKQp0YmxfcmVncmVzc2lvbihGbHUyMDIxX1NWSS4yLCBsYWJlbCA9IGxpc3QoZ2VuZGVyfiAiR2VuZGVyIiwgcmFjZV81IH4gIlJhY2UiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIERlbnNpdHkiLCByX3BjdCB+ICJQZXJjZW50IFJlcHVibGljYW4iLCBtYXhfY2ggfiAiQ2hhcmxzb24gQ29tb3JiaWRpdHkgSW5kZXgiKSwgZXhwb25lbnRpYXRlID0gVFJVRSkKCgojIyBTdGFuZGFyZCBSZXNpZHVhbHMgCkZsdTIwMjFfU1ZJLjIuc3RkIDwtIHJzdGFuZGFyZChGbHUyMDIxX1NWSS4yKQpwbG90KEZsdTIwMjFfU1ZJLjIuc3RkLCB5bGFiPSJTdGFuZGFyZGl6ZWQgUmVzaWR1YWxzIikKCiMjIE1hcmdpbnMgCmNwbG90KEZsdTIwMjFfU1ZJLjIsICJSUExfVEhFTUVTIiwgd2hhdCA9ICJwcmVkaWN0aW9uIiwgbWFpbiA9ICJQcmVkaWN0ZWQgTGlrZWxpaG9vZCBvZiBGbHUgVmFjY2luZSBHaXZlbiBTVkkiKQoKIyMgTW9kZWwgcGVyZm9ybWFuY2UgZ3JhcGhzCm1vZGVsX3BlcmZvcm1hbmNlKEZsdTIwMjFfU1ZJLjIgKQpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoRmx1MjAyMV9TVkkuMiwgcGFuZWwgPSBUUlVFKQpgYGAKCiMjIEludGVyYWN0aW9uIGJldHdlZW4gcmFjZSBhbmQgUlBMX1RIRU1FUyAKYGBge3J9CkZsdTIwMjFfU1ZJLm1vZCA8LSBnbG0oZmx1XzIwMjEgfiBJKGFnZV95cnNeMikgKyBpYmRfMyArIGdlbmRlciArIGV0aG5pY18zIAogICAgICAgICAgICAgICAgICAgICAgKyBsYW5nXzMgKyBtc3RhdF81ICsgcmVsaWdfYWZmaWwgKyBhY3RfdG9iICsgbWF4X2NoICsgSUMKICAgICAgICAgICAgICAgICAgICAgICsgcG9wX2RlbnMgKyByX3BjdCArIEkoUlBMX1RIRU1FU14yKSpyYWNlXzUsCiAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwKICAgICAgICAgICAgICBkYXRhID0gdmF4X2NsZWFuMSkKc3VtbWFyeShGbHUyMDIxX1NWSS5tb2QgKQpicm9vbTo6Z2xhbmNlKEZsdTIwMjFfU1ZJLm1vZCApCmJyb29tOjp0aWR5KEZsdTIwMjFfU1ZJLm1vZCAsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCnRibF9yZWdyZXNzaW9uKEZsdTIwMjFfU1ZJLm1vZCwgbGFiZWwgPSBsaXN0KGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBEZW5zaXR5Iiwgcl9wY3QgfiAiUGVyY2VudCBSZXB1YmxpY2FuIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCgojIyBTdGFuZGFyZCBSZXNpZHVhbHMgCkZsdTIwMjFfU1ZJLm1vZC5zdGQgPC0gcnN0YW5kYXJkKEZsdTIwMjFfU1ZJLm1vZCkKcGxvdChGbHUyMDIxX1NWSS5tb2Quc3RkLCB5bGFiPSJTdGFuZGFyZGl6ZWQgUmVzaWR1YWxzIikKCiMjIE1hcmdpbnMgCmNwbG90KEZsdTIwMjFfU1ZJLm1vZCwgIlJQTF9USEVNRVMiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFNWSSIpCgojIyBNb2RlbCBwZXJmb3JtYW5jZSBncmFwaHMKbW9kZWxfcGVyZm9ybWFuY2UoRmx1MjAyMV9TVkkubW9kICkKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKEZsdTIwMjFfU1ZJLm1vZCwgcGFuZWwgPSBUUlVFKQpgYGAKCgoKIyMgU1ZJIGFzIGEgbWVkaWF0b3Igb2YgcmFjZSAtPiB2YWNjaW5hdGlvbiAoYml2YXJpYXRlKQpgYGB7cn0KbW9kZWwuMC4yIDwtIGdsbShmbHVfMjAyMSB+IHJhY2VfNSwgZmFtaWx5ID0gYmlub21pYWwsIGRhdGEgPSB2YXhfY2xlYW4xKQptb2RlbC5tLjIgPC0gbG0oUlBMX1RIRU1FUyB+IHJhY2VfNSwgZGF0YSA9IHZheF9jbGVhbjEpCm1vZGVsLnkuMiA8LSBnbG0oZmx1XzIwMjEgfiByYWNlXzUgKyBSUExfVEhFTUVTLCBmYW1pbHkgPSBiaW5vbWlhbCwgZGF0YSA9IHZheF9jbGVhbjEpCnJlc3VsdHMyIDwtIG1lZGlhdGUobW9kZWwubS4yLCBtb2RlbC55LjIsIHRyZWF0ID0gInJhY2VfNSIsIG1lZGlhdG9yID0gIlJQTF9USEVNRVMiLCAKICAgICAgICAgICAgICAgICAgICBib290ID0gVFJVRSwgc2ltcyA9IDUwMCkKc3VtbWFyeShyZXN1bHRzMikKYGBgCgojIyBTVkkgYXMgYSBtZWRpYXRvciBvZiByYWNlIC0+IHZhY2NpbmF0aW9uIApgYGB7cn0KI1N0ZXAgMTogSXMgdGhlcmUgYSByZWxhdGlvbnNoaXAgYmV0d2VlbiBYKHJhY2UpIGFuZCBZKGZsdSB2YWNjaW5lKS4gWWVzIC0gYmxhY2sgYW5kIG90aGVyIHBhdGllbnRzIHdlcmUgbGVzcyBsaWtlbHkgdG8gcmVjZWl2ZSB0aGUgZmx1IHZhY2NpbmUgdGhhbiBBc2lhbiBhbmQgd2hpdGUgcGF0aWVudHMKRmx1MjAyMS4wIDwtIGdsbShmbHVfMjAyMSB+IGliZF8zICsgYWdlX3lycyArIGdlbmRlciArIHJhY2VfNSArIGV0aG5pY18zICsgCiAgICAgICAgICAgICAgICAgICAgICBsYW5nXzMgKyBtc3RhdF81ICsgcmVsaWdfYWZmaWwgKyBhY3RfdG9iICsgbWF4X2NoICsgSUMKICAgICAgICAgICAgICAgICAgICAgICsgcG9wX2RlbnMgKyByX3BjdCArIHN2aV8yLCAKICAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbCwgCiAgICAgICAgICAgICAgICAgZGF0YSA9IHRoZW1lc19kaWNoKQoKIyBTdGVwIDI6IElzIHRoZXJlIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIG1lZGlhdG9yIChTVkkpIGFuZCByYWNlPyBZZXMsIHBhdGllbnRzIHdpdGggaGlnaGVyIFNWSSB3ZXJlIG1vcmUgbGlrZWx5IHRvIGJlIGJsYWNrIApGbHUyMDIxX00gPC0gZ2xtKHN2aV8yIH4gaWJkXzMgKyBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyAKICAgICAgICAgICAgICAgICAgICAgIGxhbmdfMyArIG1zdGF0XzUgKyByZWxpZ19hZmZpbCArIGFjdF90b2IgKyBtYXhfY2ggKyBJQwogICAgICAgICAgICAgICAgICAgICAgKyBwb3BfZGVucyArIHJfcGN0ICsgZmx1XzIwMjEsCiAgICAgICAgICAgICAgICBmYW1pbHkgPSBiaW5vbWlhbCwgCiAgICAgICAgICAgICAgZGF0YSA9IHRoZW1lc19kaWNoKQpzdW1tYXJ5KEZsdTIwMjFfTSApCmJyb29tOjpnbGFuY2UoRmx1MjAyMV9NICkKdGJsX3JlZ3Jlc3Npb24oRmx1MjAyMV9NLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCByYWNlXzUgfiAiUmFjZSIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJQcmVmZXJyZWQgTGFuZ3VhZ2UiLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIpKQoKIyBTdGVwIDM6IE1lZGlhdGlvbiBhbmFseXNpcwpyZXN1bHRzMyA8LSBtZWRpYXRlKEZsdTIwMjFfTSwgRmx1MjAyMS4wLCB0cmVhdD0icmFjZV81IiwgbWVkaWF0b3I9InN2aV8yIiwKICAgICAgICAgICAgICAgICAgIGJvb3Q9VFJVRSwgc2ltcz01MDApCnN1bW1hcnkocmVzdWx0czMpCgpgYGAKCgojIEZsdSAyMDIxICsgU1ZJIFF1YXJ0aWxlIHsudGFic2V0fQojIyBBbGwgVmFyaWFibGVzCmBgYHtyfQpGbHUyMDIxX1NWSS40IDwtIGdsbShmbHVfMjAyMSB+IGliZF8zICsgYWdlX3lycyArIGdlbmRlciArIHJhY2VfNSArIGV0aG5pY18zICsgCiAgICAgICAgICAgICAgICAgICAgICBsYW5nXzMgKyBtc3RhdF81ICsgcmVsaWdfYWZmaWwgKyBhY3RfdG9iICsgbWF4X2NoICsgSUMKICAgICAgICAgICAgICAgICAgICAgICsgcG9wX2RlbnMgKyByX3BjdCArIFJQTF80LAogICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsCiAgICAgICAgICAgICAgZGF0YSA9IHZheF9jbGVhbjEpCnN1bW1hcnkoRmx1MjAyMV9TVkkuNCApCm1vZGVsX3BlcmZvcm1hbmNlKEZsdTIwMjFfU1ZJLjQpCmJyb29tOjpnbGFuY2UoRmx1MjAyMV9TVkkuNCApCmJyb29tOjp0aWR5KEZsdTIwMjFfU1ZJLjQgLCBleHBvbmVudGlhdGUgPSBUUlVFKQp0YmxfcmVncmVzc2lvbihGbHUyMDIxX1NWSS40LCBsYWJlbCA9IGxpc3QoaWJkXzMgfiAiSUJEIFR5cGUiLCBhZ2VfeXJzIH4gIkFnZSIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gZGVuc2l0eSIsIGdlbmRlcn4gIkdlbmRlciIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJQcmVmZXJyZWQgTGFuZ3VhZ2UiLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHJfcGN0IH4gIlBlcmNlbnQgUmVidXBsaWNhbiIsIHJhY2VfNSB+ICJSYWNlIiwgbWF4X2NoIH4gIkNoYXJsc29uIENvbW9yYmlkaXR5IEluZGV4IiwgYWN0X3RvYiB+ICJBY3RpdmUgVG9iYWNjbyBVc2UiLCBJQyB+ICJJbW11bm9jb21wcm9taXNlZCIsIFJQTF80IH4gIlNWSSBRdWFydGlsZSIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyMgTWFyZ2lucyBQbG90CmNwbG90KEZsdTIwMjFfU1ZJLjQsICJSUExfNCIsIHdoYXQgPSAicHJlZGljdGlvbiIsIG1haW4gPSAiUHJlZGljdGVkIExpa2VsaWhvb2Qgb2YgRmx1IFZhY2NpbmUgR2l2ZW4gU1ZJIFF1YXJ0aWxlIikKCiMgUGVyZm9ybWFuY2UgCm1vZGVsX3BlcmZvcm1hbmNlKEZsdTIwMjFfU1ZJLjQpCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChGbHUyMDIxX1NWSS40LCBwYW5lbCA9IFRSVUUpCmBgYAoKCiMjIFNWSSBRdWFydGlsZSBhcyBtb2RlcmF0b3IgZm9yIHJhY2UgLT4gdmFjY2luYXRpb24KYGBge3J9CkZsdTIwMjFfU1ZJLjRyYWNlIDwtIGdsbShmbHVfMjAyMSB+IGliZF8zICsgYWdlX3lycyArIGdlbmRlciArIGV0aG5pY18zICsgCiAgICAgICAgICAgICAgICAgICAgICBsYW5nXzMgKyBtc3RhdF81ICsgcmVsaWdfYWZmaWwgKyBhY3RfdG9iICsgbWF4X2NoICsgSUMKICAgICAgICAgICAgICAgICAgICAgICsgcG9wX2RlbnMgKyByX3BjdCArIFJQTF80KnJhY2VfNSwKICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLAogICAgICAgICAgICAgIGRhdGEgPSB2YXhfY2xlYW4xKQpzdW1tYXJ5KEZsdTIwMjFfU1ZJLjRyYWNlICkKbW9kZWxfcGVyZm9ybWFuY2UoRmx1MjAyMV9TVkkuNHJhY2UpCmJyb29tOjpnbGFuY2UoRmx1MjAyMV9TVkkuNHJhY2UgKQpicm9vbTo6dGlkeShGbHUyMDIxX1NWSS40cmFjZSAsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCnRibF9yZWdyZXNzaW9uKEZsdTIwMjFfU1ZJLjRyYWNlLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCByYWNlXzUgfiAiUmFjZSIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJQcmVmZXJyZWQgTGFuZ3VhZ2UiLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgUlBMXzQgfiAiU1ZJIFF1YXJ0aWxlIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyBQZXJmb3JtYW5jZSAKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKEZsdTIwMjFfU1ZJLjRyYWNlLCBwYW5lbCA9IFRSVUUpCmBgYAoKCiMgRmx1IDIwMTkgKyBUaGVtZXM6IE11bHRpdmFyYWlibGUgTW9kZWwgey50YWJzZXR9CiMjIEFsbCBWYXJpYWJsZXMgCmBgYHtyfQpGbHUyMDIxX3RoZW1lcyA8LSBnbG0oZmx1XzIwMjEgfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIAogICAgICAgICAgICAgICAgICAgICAgbGFuZ18zICsgbXN0YXRfNSArIHJlbGlnX2FmZmlsICsgYWN0X3RvYiArIG1heF9jaCArIElDCiAgICAgICAgICAgICAgICAgICAgICArIHBvcF9kZW5zICsgcl9wY3QgKyBSUExfVEhFTUUxICsgUlBMX1RIRU1FMiArIFJQTF9USEVNRTMgKwogICAgICAgICAgICAgICAgICAgICAgICBSUExfVEhFTUU0LAogICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsCiAgICAgICAgICAgICAgZGF0YSA9IHZheF9jbGVhbjEpCnN1bW1hcnkoRmx1MjAyMV90aGVtZXMgKQpicm9vbTo6Z2xhbmNlKEZsdTIwMjFfdGhlbWVzICkKYnJvb206OnRpZHkoRmx1MjAyMV90aGVtZXMgLCBleHBvbmVudGlhdGUgPSBUUlVFKQp0YmxfcmVncmVzc2lvbihGbHUyMDIxX3RoZW1lcywgbGFiZWwgPSBsaXN0KGliZF8zIH4gIklCRCBUeXBlIiwgYWdlX3lycyB+ICJBZ2UiLCBwb3BfZGVucyB+ICJQb3B1bGF0aW9uIGRlbnNpdHkiLCBnZW5kZXJ+ICJHZW5kZXIiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiUHJlZmVycmVkIExhbmd1YWdlIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCByX3BjdCB+ICJQZXJjZW50IFJlYnVwbGljYW4iLCByYWNlXzUgfiAiUmFjZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIsIGFjdF90b2IgfiAiQWN0aXZlIFRvYmFjY28gVXNlIiwgSUMgfiAiSW1tdW5vY29tcHJvbWlzZWQiLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyBNb2RlbCBwZXJmb3JtYW5jZSAKbW9kZWxfcGVyZm9ybWFuY2UoRmx1MjAyMV90aGVtZXMpCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChGbHUyMDIxX3RoZW1lcywgcGFuZWwgPSBUUlVFKQoKIyBNYXJnaW5zIApjcGxvdChGbHUyMDIxX3RoZW1lcywgIlJQTF9USEVNRTEiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FMSIpCmNwbG90KEZsdTIwMjFfdGhlbWVzLCAiUlBMX1RIRU1FMiIsIHdoYXQgPSAicHJlZGljdGlvbiIsIG1haW4gPSAiUHJlZGljdGVkIExpa2VsaWhvb2Qgb2YgRmx1IFZhY2NpbmUgR2l2ZW4gVEhFTUUyIikKY3Bsb3QoRmx1MjAyMV90aGVtZXMsICJSUExfVEhFTUUzIiwgd2hhdCA9ICJwcmVkaWN0aW9uIiwgbWFpbiA9ICJQcmVkaWN0ZWQgTGlrZWxpaG9vZCBvZiBGbHUgVmFjY2luZSBHaXZlbiBUSEVNRTMiKQpjcGxvdChGbHUyMDIxX3RoZW1lcywgIlJQTF9USEVNRTQiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FNCIpCmBgYAoKCiMjIEludGVyYWN0aW9uIGJldHdlZW4gVGhlbWUgMSBhbmQgUmFjZSAKYGBge3J9CkZsdTIwMjFfdGhlbWVzLm1vZCA8LSBnbG0oZmx1XzIwMjEgfiBpYmRfMyArIGFnZV95cnMgKyBnZW5kZXIgICsgZXRobmljXzMgKyAKICAgICAgICAgICAgICAgICAgICAgIGxhbmdfMyArIG1zdGF0XzUgKyByZWxpZ19hZmZpbCArIGFjdF90b2IgKyBtYXhfY2ggKyBJQwogICAgICAgICAgICAgICAgICAgICAgKyBwb3BfZGVucyArIHJfcGN0ICsgUlBMX1RIRU1FMSpyYWNlXzUgKyBSUExfVEhFTUUyICsgUlBMX1RIRU1FMyArIFJQTF9USEVNRTQsCiAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwKICAgICAgICAgICAgICBkYXRhID0gdmF4X2NsZWFuMSkKc3VtbWFyeShGbHUyMDIxX3RoZW1lcy5tb2QgKQpicm9vbTo6Z2xhbmNlKEZsdTIwMjFfdGhlbWVzLm1vZCApCmJyb29tOjp0aWR5KEZsdTIwMjFfdGhlbWVzLm1vZCAsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCnRibF9yZWdyZXNzaW9uKEZsdTIwMjFfdGhlbWVzLm1vZCwgbGFiZWwgPSBsaXN0KGFnZV95cnMgfiAiQWdlIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBkZW5zaXR5IiwgZ2VuZGVyfiAiR2VuZGVyIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIG1zdGF0XzUgfiAiTWFyaXRhbCBTdGF0dXMiLCByX3BjdCB+ICJQZXJjZW50IFJlYnVwbGljYW4iLCByYWNlXzUgfiAiUmFjZSIsIG1heF9jaCB+ICJDaGFybHNvbiBDb21vcmJpZGl0eSBJbmRleCIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKIyBNb2RlbCBwZXJmb3JtYW5jZSAKbW9kZWxfcGVyZm9ybWFuY2UoRmx1MjAyMV90aGVtZXMubW9kKQpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoRmx1MjAyMV90aGVtZXMubW9kLCBwYW5lbCA9IFRSVUUpCgojIE1hcmdpbnMgCmNwbG90KEZsdTIwMjFfdGhlbWVzLm1vZCwgIlJQTF9USEVNRTEiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FMSIpCmNwbG90KEZsdTIwMjFfdGhlbWVzLm1vZCwgIlJQTF9USEVNRTIiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FMiIpCmNwbG90KEZsdTIwMjFfdGhlbWVzLm1vZCwgIlJQTF9USEVNRTMiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FMyIpCmNwbG90KEZsdTIwMjFfdGhlbWVzLm1vZCwgIlJQTF9USEVNRTQiLCB3aGF0ID0gInByZWRpY3Rpb24iLCBtYWluID0gIlByZWRpY3RlZCBMaWtlbGlob29kIG9mIEZsdSBWYWNjaW5lIEdpdmVuIFRIRU1FNCIpCmBgYAoKCiMjIFRoZW1lIDEgYXMgbWVkaWF0b3Igb2YgcmFjZSAtPiB2YWNjaW5hdGlvbiAKYGBge3J9CiNTdGVwIDE6IElzIHRoZXJlIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gWChyYWNlKSBhbmQgWShmbHUgdmFjY2luZSkuIFllcyAtIGJsYWNrIGFuZCBvdGhlciBwYXRpZW50cyB3ZXJlIGxlc3MgbGlrZWx5IHRvIHJlY2VpdmUgdGhlIGZsdSB2YWNjaW5lIHRoYW4gQXNpYW4gYW5kIHdoaXRlIHBhdGllbnRzCkZsdTIwMTkuMC4zIDwtIGdsbShmbHVfMjAyMSB+IGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIGxhbmdfMyArIG1zdGF0XzUKICAgICAgICAgICAgICAgICsgcmVsaWdfYWZmaWwrIG1heF9jaCArIHBvcF9kZW5zICsgcl9wY3QsIGZhbWlseSA9IGJpbm9taWFsLCBkYXRhID0gdmF4X2NsZWFuMSkKCiMgU3RlcCAyOiBJcyB0aGVyZSBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBtZWRpYXRvciAoU1ZJKSBhbmQgcmFjZT8gWWVzLCBwYXRpZW50cyB3aXRoIGhpZ2hlciBTVkkgd2VyZSBtb3JlIGxpa2VseSB0byBiZSBibGFjayAKRmx1MjAxOV9NLjMgPC0gbG0oUlBMX1RIRU1FMSB+IGFnZV95cnMgKyBnZW5kZXIgKyByYWNlXzUgKyBldGhuaWNfMyArIGxhbmdfMyArIG1zdGF0XzUKICAgICAgICAgICAgICAgICsgcmVsaWdfYWZmaWwrIG1heF9jaCArIHBvcF9kZW5zICsgcl9wY3QgKyBmbHVfMjAyMSArIFJQTF9USEVNRTIgKyBSUExfVEhFTUUzICsgUlBMX1RIRU1FNCwKICAgICAgICAgICAgICBkYXRhID0gdmF4X2NsZWFuMSkKc3VtbWFyeShGbHUyMDE5X00uMyApCnN1bW1hcnkoRmx1MjAxOV9NLjMgKQpicm9vbTo6Z2xhbmNlKEZsdTIwMTlfTS4zICkKdGJsX3JlZ3Jlc3Npb24oRmx1MjAxOV9NLjMsIGxhYmVsID0gbGlzdChhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIlByZWZlcnJlZCBMYW5ndWFnZSIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBtc3RhdF81IH4gIk1hcml0YWwgU3RhdHVzIiwgcG9wX2RlbnMgfiAiUG9wdWxhdGlvbiBEZW5zaXR5Iiwgcl9wY3QgfiAiUGVyY2VudCBSZXB1YmxpY2FuIikpCgojIFN0ZXAgMzogTWVkaWF0aW9uIGFuYWx5c2lzCnJlc3VsdHMzIDwtIG1lZGlhdGUoRmx1MjAxOV9NLjMsIEZsdTIwMjFfdGhlbWVzLCB0cmVhdD0icmFjZV81IiwgbWVkaWF0b3I9IlJQTF9USEVNRTEiLAogICAgICAgICAgICAgICAgICAgYm9vdD1UUlVFLCBzaW1zPTUwMCkKc3VtbWFyeShyZXN1bHRzMykKYGBgCgojIyBUaGVtZSAxIGFzIG1lZGlhdG9yIHdpdGhvdXQgb3RoZXIgdGhlbWVzIAoKYGBge3J9CgpGbHUyMDE5LjAuNCA8LSBnbG0oZmx1XzIwMjEgfiBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyBsYW5nXzMgKyBtc3RhdF81CiAgICAgICAgICAgICAgICArIHJlbGlnX2FmZmlsKyBtYXhfY2ggKyBwb3BfZGVucyArIHJfcGN0ICsgUlBMX1RIRU1FMSwgZmFtaWx5ID0gYmlub21pYWwsIGRhdGEgPSB2YXhfY2xlYW4xKQoKCkZsdTIwMTlfTS40IDwtIGxtKFJQTF9USEVNRTEgfiBhZ2VfeXJzICsgZ2VuZGVyICsgcmFjZV81ICsgZXRobmljXzMgKyBsYW5nXzMgKyBtc3RhdF81CiAgICAgICAgICAgICAgICArIHJlbGlnX2FmZmlsKyBtYXhfY2ggKyBwb3BfZGVucyArIHJfcGN0ICsgZmx1XzIwMjEsCiAgICAgICAgICAgICAgZGF0YSA9IHZheF9jbGVhbjEpCnN1bW1hcnkoRmx1MjAxOV9NLjQgKQpzdW1tYXJ5KEZsdTIwMTlfTS40ICkKYnJvb206OmdsYW5jZShGbHUyMDE5X00uNCApCnRibF9yZWdyZXNzaW9uKEZsdTIwMTlfTS40LCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCByYWNlXzUgfiAiUmFjZSIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJQcmVmZXJyZWQgTGFuZ3VhZ2UiLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIHBvcF9kZW5zIH4gIlBvcHVsYXRpb24gRGVuc2l0eSIsIHJfcGN0IH4gIlBlcmNlbnQgUmVwdWJsaWNhbiIpKQoKIyBTdGVwIDM6IE1lZGlhdGlvbiBhbmFseXNpcwpyZXN1bHRzNCA8LSBtZWRpYXRlKEZsdTIwMTlfTS40LCBGbHUyMDE5LjAuNCwgdHJlYXQ9InJhY2VfNSIsIG1lZGlhdG9yPSJSUExfVEhFTUUxIiwKICAgICAgICAgICAgICAgICAgIGJvb3Q9VFJVRSwgc2ltcz01MDApCnN1bW1hcnkocmVzdWx0czQpCmBgYApgYGAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo=