It has 1436 patients before filtering.
Data cleaning and preparing
Days since the beginning of the infection
# D: DIAS INICIO SIN HOSPITALIZAÇÃO
filtered <- filtered %>%
mutate(delta_days = as.numeric(DT_INTERNA - DT_SIN_PRI))
#stopifnot(all(compareNA(filtered$"DIAS.INICIO.SIN.HOSPITALIZA<U+00C7><U+00C3>O", filtered$delta_days)))
Additional risk commorbidities
# AR: COMORBIDADES ADICIONAIS
filtered <- filtered %>%
mutate(additional_risk_comorbidities =
as.integer(replace_na(CARDIOPATI, 0) == 1) +
as.integer(replace_na(HEMATOLOGI, 0) == 1) +
as.integer(replace_na(SIND_DOWN, 0) == 1) +
as.integer(replace_na(HEPATICA, 0) == 1) +
as.integer((replace_na(ASMA, 0) == 1) | (replace_na(PNEUMOPATI, 0) == 1)) +
as.integer(replace_na(DIABETES, 0) == 1) +
as.integer(replace_na(NEUROLOGIC, 0) == 1) +
as.integer(replace_na(RENAL, 0) == 1) +
as.integer(replace_na(OBESIDADE, 0) == 1))
#stopifnot(all(compareNA(filtered$COMORBIDADES.ADICIONAIS, filtered$additional_risk_comorbidities)))
Risk groups
filtered <- filtered %>%
mutate(
risk_groups = case_when(
additional_risk_comorbidities >= 2 ~ '2+',
additional_risk_comorbidities == 1 ~ '1',
TRUE ~ 'None'
),
at_least_one_risk = case_when(
additional_risk_comorbidities >= 1 ~ 1,
TRUE ~ 0
)
)
Dates of vaccines
filtered <- filtered %>%
mutate(
dose_dates = pmap(
list(
DOSE_1_COV,
DOSE_2_COV,
DOSE_ADIC,
DOSE_REF,
DOSE_2REF,
DOS_RE_BI
),
~ {
doses <- as.Date(c(...))
doses[!is.na(doses)]
}
)
)
Column that only consider vaccines that have both the date of
administration and the manufacturer.
filtered <- filtered %>%
mutate(dose_dates_with_fab = pmap(list(FAB_COV_1, DOSE_1_COV,
FAB_COV_2, DOSE_2_COV,
FAB_ADIC, DOSE_ADIC,
FAB_COVREF, DOSE_REF,
FAB_COVRF2, DOSE_2REF,
FAB_RE_BI, DOS_RE_BI),
~ {
doses <- c(
as.Date(ifelse(!is.na(..1), ..2, NA)),
as.Date(ifelse(!is.na(..3), ..4, NA)),
as.Date(ifelse(!is.na(..5), ..6, NA)),
as.Date(ifelse(!is.na(..7), ..8, NA)),
as.Date(ifelse(!is.na(..9), ..10, NA)),
as.Date(ifelse(!is.na(..11), ..12, NA))
)
doses[!is.na(doses)]
})
)
Last vaccine date
# Extract the last dose date (latest non-NA date in the list)
filtered <- filtered %>%
mutate(last_date = map(dose_dates, ~ if (length(.x) == 0) NA else max(.x, na.rm = TRUE)))
Days between vaccine date and internation
# Calculate the number of days betwenn the vaccine date and internation
filtered <- filtered %>%
mutate(days_since_last_vaccine = if_else(
(length(last_date) == 0 || all(is.na(last_date))) | is.na(DT_INTERNA),
NA,
as.numeric(as.Date(DT_INTERNA, format = "%Y-%m-%d") - as.Date(map_dbl(filtered$last_date, 1)))
))
# as.numeric( - ))
Intervals between vaccine date and internation
filtered <- filtered %>%
mutate(
last_vaccine_interval = case_when(
days_since_last_vaccine <= 183 ~ "up to 6 months",
days_since_last_vaccine <= 365 ~ "7–12 months",
days_since_last_vaccine > 365 ~ "over 1 year",
TRUE ~ NA_character_
)
)
filtered <- filtered %>%
mutate(
last_vaccine_interval_broader = case_when(
days_since_last_vaccine <= 365 ~ "up to 1 year",
days_since_last_vaccine > 365 ~ "over 1 year",
TRUE ~ NA_character_
)
)
Last vaccine year
# Extract the year from the last_date
filtered <- filtered %>%
mutate(last_year = map_dbl(last_date, ~ ifelse(is.na(.x), NA, year(.x))))
# Compute the minimum non-NA year
min_last_year <- min(filtered$last_year, na.rm = TRUE)
# Compute year range starting from 1
filtered <- filtered %>%
mutate(last_year_range = ifelse(is.na(last_year), NA, last_year - min_last_year + 1))
#stopifnot(all(
# compareNA(filtered$"ANO.DA.<U+00DA>LTIMA.DOSE.VAC_COV;.2021=1;.2022=2;.2023=3;.2024=4", filtered$last_year_range)
#))
Number of doses
# FF: N DOSES VAC_COV (preenchendo em branco com 0)
filtered <- filtered %>%
mutate(doses = map_int(dose_dates, length))
#stopifnot(all(compareNA(replace_na(filtered$N.DOSES.VAC_COV, 0), filtered$doses)))
Number of doses groups
filtered <- filtered %>%
mutate(
dose_groups = case_when(
doses >= 3 ~ '3+',
doses == 2 ~ '2',
doses == 1 ~ '1',
TRUE ~ '0'
),)
filtered <- filtered %>%
mutate(
dose_completion_groups = case_when(
doses >= 2 ~ '2+',
TRUE ~ '0-1'
),)
Types of vaccines
Define groups and check if the definition is complete
# Define vaccine groups
innactivated_vaccines <- c(
'86 - COVID-19 SINOVAC/BUTANTAN - CORONAVAC',
'CORONAVAC',
'SINOVAC',
'SINOVAC/BUTANTAN',
'SINOVAC/BUTANT',
'INSTITUTO BUTANTAN'
)
viral_vector_vaccines <- c(
'85 - COVID-19 ASTRAZENECA/FIOCRUZ - COVISHIELD',
'89 - COVID-19 ASTRAZENECA - CHADOX1-S',
'ASTRAZENECA AB',
'ASTRAZENICA/FIOCRUZ',
'FABRICANTE FUNDACAO OSWALDO CRUZ',
'88 - COVID-19 JANSSEN - AD26.COV2.S',
'JANSSEN',
'JANSSEN PHARMACEUTICA NV'
)
mrna_vaccines <- c(
'87 - COVID-19 PFIZER - COMIRNATY',
'PFIZER',
'PFIZER MANUFACTURING BELGIUM NV - BELGICA',
'PFIZER/ BIVALENTE',
'103 - COVID-19 PFIZER - COMIRNATY BIVALENTE'
)
mapped_vaccines <- c(innactivated_vaccines, viral_vector_vaccines, mrna_vaccines, '<vazio>')
# Now run assertions similar to Python
stopifnot(
identical(setdiff(unique(replace_na(filtered$FAB_COV_1, '<vazio>')), mapped_vaccines), character(0))
)
stopifnot(
identical(setdiff(unique(replace_na(filtered$FAB_COV_2, '<vazio>')), mapped_vaccines), character(0))
)
stopifnot(
identical(setdiff(unique(replace_na(filtered$FAB_ADIC, '<vazio>')), mapped_vaccines), character(0))
)
stopifnot(
identical(setdiff(unique(replace_na(filtered$FAB_COVREF, '<vazio>')), mapped_vaccines), character(0))
)
stopifnot(
identical(setdiff(unique(replace_na(filtered$FAB_COVRF2, '<vazio>')), mapped_vaccines), character(0))
)
stopifnot(
identical(setdiff(unique(replace_na(as.character(filtered$FAB_RE_BI), '<vazio>')), mapped_vaccines), character(0))
)
Create columns with the count of each valid dose given the type.
filtered <- filtered %>%
mutate(
innactivated_doses = pmap_int(
list(DOSE_1_COV, FAB_COV_1,
DOSE_2_COV, FAB_COV_2,
DOSE_ADIC, FAB_ADIC,
DOSE_REF, FAB_COVREF,
DOSE_2REF, FAB_COVRF2#,
# DOS_RE_BI, FAB_RE_BI -- currently, all DOS_RE_BI are mrna vaccines
),
~ sum(
(!is.na(..1) & ..2 %in% innactivated_vaccines),
(!is.na(..3) & ..4 %in% innactivated_vaccines),
(!is.na(..5) & ..6 %in% innactivated_vaccines),
(!is.na(..7) & ..8 %in% innactivated_vaccines),
(!is.na(..9) & ..10 %in% innactivated_vaccines)#,
#(!is.na(..11) & ..12 %in% innactivated_vaccines)
)
),
viral_vector_doses = pmap_int(
list(DOSE_1_COV, FAB_COV_1,
DOSE_2_COV, FAB_COV_2,
DOSE_ADIC, FAB_ADIC,
DOSE_REF, FAB_COVREF,
DOSE_2REF, FAB_COVRF2#,
#DOS_RE_BI, FAB_RE_BI -- currently, all DOS_RE_BI are mrna vaccines
),
~ sum(
(!is.na(..1) & ..2 %in% viral_vector_vaccines),
(!is.na(..3) & ..4 %in% viral_vector_vaccines),
(!is.na(..5) & ..6 %in% viral_vector_vaccines),
(!is.na(..7) & ..8 %in% viral_vector_vaccines),
(!is.na(..9) & ..10 %in% viral_vector_vaccines)#,
#(!is.na(..11) & ..12 %in% viral_vector_vaccines)
)
),
mrna_doses = pmap_int(
list(DOSE_1_COV, FAB_COV_1,
DOSE_2_COV, FAB_COV_2,
DOSE_ADIC, FAB_ADIC,
DOSE_REF, FAB_COVREF,
DOSE_2REF, FAB_COVRF2,
DOS_RE_BI, FAB_RE_BI),
~ sum(
(!is.na(..1) & ..2 %in% mrna_vaccines),
(!is.na(..3) & ..4 %in% mrna_vaccines),
(!is.na(..5) & ..6 %in% mrna_vaccines),
(!is.na(..7) & ..8 %in% mrna_vaccines),
(!is.na(..9) & ..10 %in% mrna_vaccines),
(!is.na(..11)) # & ..12 %in% mrna_vaccines -- all DOS_RE_BI are MRNA vaccines. It does not need to check the FAB
)
)
)
Vaccination schema
inactivated=1; mRNA=2; viral vector=3; inactivated+ mRNA=4;
inactivated + viral vector=5; mRNA+ viral vector=6; inactivated+ mRNA +
viral vector=7.
# FQ: Esquema vacinal: inativada=1; RNAm=2; vetor viral=3; inativada + RNAm=4; inativada + vetor viral=5; RNAm + vetor viral=6; inativada + RNAm + vetor viral=7
dose_df <- filtered %>%
transmute(
i = innactivated_doses,
v = viral_vector_doses,
m = mrna_doses
)
# Apply the logic row-wise
vaccinal_schema <- pmap_int(dose_df, function(i, v, m) {
if (i > 0 & v > 0 & m > 0) {
7
} else if (v > 0 & m > 0) {
6
} else if (v > 0 & i > 0) {
5
} else if (m > 0 & i > 0) {
4
} else if (v > 0) {
3
} else if (m > 0) {
2
} else if (i > 0) {
1
} else {
0
}
})
# Attach it back to the `filtered` dataframe
filtered <- filtered %>%
mutate(
vaccinal_schema = vaccinal_schema,
nominal_vaccinal_schema = recode(
vaccinal_schema,
`0` = "None",
`1` = "Inactivated only",
`2` = "mRNA only",
`3` = "Viral vector only",
`4` = "Inactivated + mRNA",
`5` = "Inactivated + Viral vector",
`6` = "mRNA + viral vector",
`7` = "Inactivated + mRNA + viral vector"
),
vaccinal_schema_count = recode(
vaccinal_schema,
`0` = 0,
`1` = 1,
`2` = 1,
`3` = 1,
`4` = 2,
`5` = 2,
`6` = 2,
`7` = 3
)
)
#stopifnot(all(
# compareNA(replace_na(filtered$`Esquema.vacinal:.inativada=1;.RNAm=2;.vetor.viral=3;.inativada.+.RNAm=4;.inativada.+.vetor.viral=5;.RNAm.+.vetor.viral=6;.inativada.+.RNAm.+.vetor.viral=7`, 0), vaccinal_schema)
#))
Schema based on inactivated
filtered <- filtered %>%
mutate(
vaccinal_schema_based_on_innactivated = pmap_chr(list(innactivated_doses, viral_vector_doses, mrna_doses), function(i, v, m) {
if (i + v + m <= 1) {
return('unvaccinated or single-dose')
} else if (v == 0 & m == 0) {
return('sequential with inactivated only')
} else if (i == 0) {
return('sequential excluding inactivated')
} else {
return('sequential with inactivated and others')
}
})
)
Age groups
filtered <- filtered %>%
mutate(
age_groups = case_when(
NU_IDADE_N >= 80 ~ '80+',
NU_IDADE_N >= 70 ~ '70-79',
TRUE ~ '60-69'
)
)
Race groups
filtered <- filtered %>%
mutate(
nominal_race = recode(
filtered$CS_RACA,
`1` = "White",
`2` = "Black",
`3` = "Yellow",
`4` = "Brown",
`5` = "Indigenous",
`9` = "Unknown"
)
)
Educational groups
filtered <- filtered %>%
mutate(
educational_attainment = case_when(
CS_ESCOL_N == 4 ~ 'bachelor',
CS_ESCOL_N < 4 ~ 'low',
TRUE ~ 'unknown'
)
)
filtered <- filtered %>%
mutate(
nominal_education = replace_na(recode(
filtered$CS_ESCOL_N,
`0` = "Elementary",
`1` = "Elementary",
`2` = "Middle",
`3` = "Highschool",
`4` = "Bachelors",
`5` = "Unknown",
`9` = "Unknown"
), "Unknown")
)
filtered <- filtered %>%
mutate(
education_level = replace_na(recode(
filtered$CS_ESCOL_N,
`0` = "Elementary", # Elementary
`1` = "Elementary", # Elementary
`2` = "Middle", # Middle
`3` = "High", # Highschool
`4` = "High", # Bachelors
`5` = "Unknown",
`9` = "Unknown"
), "Unknown")
)
Dose groups
filtered <- filtered %>%
mutate(
categorical_doses = case_when(
doses >= 5 ~ '5+',
doses == 4 ~ '4',
doses == 3 ~ '3',
doses >= 1 ~ '1-2',
TRUE ~ 'unvaccinated'
)
)
ICU admission
filtered <- filtered %>%
mutate(
icu_admission = replace_na(recode(UTI, `1` = 1, `2` = 2, `9` = 2, .default = 2), 2),
nominal_icu_admission = replace_na(recode(UTI, `1` = "Yes", `2` = "No", `9` = "No", .default = "No"), "No")
)
Invasive support ventilation
filtered <- filtered %>%
mutate(
invasive_support_ven = replace_na(recode(SUPORT_VEN, `1` = 1, `3` = 2, `9` = 2, .default = 2), 2),
nominal_invasive_support_ven = replace_na(recode(SUPORT_VEN, `1` = "Yes", `3` = "No", `9` = "No", .default = "No"), "No")
)
COVID treatment
filtered <- filtered %>%
mutate(
covid_treatment = case_when(
((TRAT_COV == 1) & !is.na(TIPO_TRAT)) ~ 1,
((TRAT_COV > 1) & !is.na(TIPO_TRAT)) ~ 2,
TRUE ~ 2
),
nominal_covid_treatment = replace_na(recode(covid_treatment, `1` = "Yes", `9` = "No", .default = "No"), "No")
)
Split by outcome
filtered <- filtered %>%
mutate(
nominal_outcome = recode(filtered$EVOLUCAO, `1` = "Survivor", `2` = "Non-survivor"),
outcome = ifelse(filtered$EVOLUCAO == 1, 1, 0)
)
survivors <- filtered %>%
filter(EVOLUCAO == 1)
nonsurvivors <- filtered %>%
filter(EVOLUCAO == 2)
Create test spreadsheet
test_dataframe <- filtered %>%
mutate(
`Outcome: Survivor = 1; Non-survivor = 2` = EVOLUCAO,
`Sex: female = 1; male = 2` = recode(CS_SEXO, `F` = 1, `M` = 2),
`ICU admission: yes = 1; no = 2` = icu_admission,
`Invasive ventilatory support: yes =1; no =2` = invasive_support_ven,
`Age group: 60-69 years = 1; 70-79 years =2; 80 years or older = 3` = recode(age_groups, `60-69` = 1, `70-79` = 2, `80+` = 3),
`Educational attainment: low (up to high school); high (Bachelor) = 2; unknown = 9` = recode(educational_attainment, `low` = 1, `bachelor` = 2, `unknown` = 9),
`Number of other risk conditions: none = 0; one or more = 1` = if_else(additional_risk_comorbidities >= 1, 1, 0),
`COVID-19 vaccine doses: Unvaccinated = 0; one to two doses = 1; 3 doses = 2; 4 or more doses = 3` = recode(categorical_doses, `unvaccinated` = 0, `1-2` = 1, `3` = 2, `4` = 3, `5+` = 4),
` ` = NA_real_,
`Esquemas de vacinação: unvaccinated or single-dose (reference): 1; sequential with inactivated only: 2; sequential excluding inactivated: 3; sequential with inactivated and others: 4` = recode(vaccinal_schema_based_on_innactivated,
`unvaccinated or single-dose` = 1,
`sequential with inactivated only` = 2,
`sequential excluding inactivated` = 3,
`sequential with inactivated and others` = 4)
) %>%
select(
`Outcome: Survivor = 1; Non-survivor = 2`,
`Sex: female = 1; male = 2`,
`ICU admission: yes = 1; no = 2`,
`Invasive ventilatory support: yes =1; no =2`,
`Age group: 60-69 years = 1; 70-79 years =2; 80 years or older = 3`,
`Educational attainment: low (up to high school); high (Bachelor) = 2; unknown = 9`,
`Number of other risk conditions: none = 0; one or more = 1`,
`COVID-19 vaccine doses: Unvaccinated = 0; one to two doses = 1; 3 doses = 2; 4 or more doses = 3`,
` `,
`Esquemas de vacinação: unvaccinated or single-dose (reference): 1; sequential with inactivated only: 2; sequential excluding inactivated: 3; sequential with inactivated and others: 4`
)
Create test.xlsx file
write.xlsx(test_dataframe, "test.xlsx")
Time betwwen vaccination and outcome
`
min(filtered$days_since_last_vaccine , na.rm = TRUE)
## [1] 63
filtered$days_since_last_vaccine
## [1] 528 222 774 NA NA NA 193 1106 327 854 246 NA 641 556 848
## [16] 295 317 522 683 768 1056 NA 828 832 1290 NA 871 NA 654 NA
## [31] 761 1106 126 405 950 NA 1169 1215 609 NA 377 1042 279 NA 740
## [46] 564 507 542 799 1069 290 323 194 1270 592 704 918 NA NA 896
## [61] 906 800 1221 802 668 354 366 628 665 797 1259 789 871 805 875
## [76] 389 1218 841 NA 301 312 295 NA 623 NA 987 340 606 1084 796
## [91] 964 951 1140 NA 654 278 1164 861 NA 860 298 1123 872 798 323
## [106] 506 NA 723 1033 886 586 1290 NA NA 893 255 1016 932 NA 301
## [121] 666 575 482 656 63 1097 1143 244 320 622 854 NA 365 434 NA
## [136] 740 327 726 590 816 614 945 1038 1179 575 491 340 1055 1198 992
## [151] 320 NA 265 1068 337 69 NA 1102 1061 1049 600 536 1296 NA 280
## [166] 550 625 909 850 302 917 630 360 529 901 188 1390 427 428 1058
## [181] 540 NA 296 1231 277 888 319 1056 1106 311 941 241 NA 1051 1091
## [196] NA 780 877 280 909 449 1203 1128 855 882 791 1108 719 NA 605
## [211] 893 1143 1262 567 1141 589 1222 345 780 NA 500 303 918 820 647
## [226] 680 188 519 373 865 991 686 1012 825 594 1007 347 605 529 1308
## [241] 1027 250 357 358 1131 529 542 1013 548 1150 1271 NA 357 1227 605
## [256] 258 331 805 826 627 NA 1231 256 478 888 513 976 326 540 476
## [271] 331 776 364 918 1054 581 NA 654 319 381 338 NA 155 644 282
## [286] 1067 559 853 1138 144 364 273 1142 628 616 912 514 815 1285 557
## [301] 903 682 751 526 968 414 356 847 600 NA 893 340 1141 1057 881
## [316] 865 113 1089 553 380 552 1148 1074 302 1115 554 1109 NA 501 NA
## [331] NA 314 766 NA 274 731 812 1036 1063 1031 332 916 714 985 363
## [346] 337 865 1204 822 1254 480 991 871 599 809 702 645 NA 596 418
## [361] 944 683 NA 1075 682 1144 953 NA 619 994 936 1065 1344 213 686
## [376] 865 777 657 1152 654 296 704 835 836 515 1048 NA 923 1018 354
## [391] 837 624 711 798 NA 618 586 730 629 636 476 332 165 1134 1311
## [406] NA NA 615 520 1026 1173 1196 1038 599 340 580 NA 89 1047 NA
## [421] NA 885 414 598 1177 633 697 765 136 873 849 526 366 NA 209
## [436] 1232 843 1194 431 643 581 1253 262 377 1183 NA 834 823 1110 296
## [451] 315 282 994 786 810 585 996 326 1277 NA 497 491 886 1293 NA
## [466] 1036 NA 333 353 964 388 324 584 782
breaks <- seq(
0,
max(filtered$days_since_last_vaccine, na.rm = TRUE) + 30,
by = 30
)
labels <- paste0(
head(breaks, -1) / 30
)
filtered %>%
filter(
!is.na(days_since_last_vaccine),
!is.na(outcome)
) %>%
ggplot(
aes(
x = cut(
days_since_last_vaccine,
breaks = breaks,
labels = labels,
include.lowest = TRUE
),
fill = factor(outcome)
)
) +
#geom_bar(position = "fill", na.rm = TRUE) +
geom_bar(na.rm = TRUE) +
geom_text(
stat = "count",
aes(
y = after_stat(count),
label = after_stat(count),
group = factor(outcome)
),
#position = position_fill(vjust = 0.5),
position = position_stack(vjust= 0.5),
color = "black",
size = 3,
na.rm = TRUE
) +
scale_fill_manual(
values = c("0" = "#faa", "1" = "#afa"),
labels = c("0" = "Non-survivor", "1" = "Survivor")
) +
labs(
x = "Months since last vaccine",
y = "Count",
fill = "Outcome"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1)
)

Vaccination schema
filtered$vaccinal_schema_based_on_innactivated <- relevel(factor(filtered$vaccinal_schema_based_on_innactivated), ref="unvaccinated or single-dose")
model <- glm(outcome ~ vaccinal_schema_based_on_innactivated,
family = binomial,
data = filtered)
summary_model <- summary(model)
print(summary_model)
##
## Call:
## glm(formula = outcome ~ vaccinal_schema_based_on_innactivated,
## family = binomial, data = filtered)
##
## Coefficients:
## Estimate
## (Intercept) -0.3677
## vaccinal_schema_based_on_innactivatedsequential excluding inactivated -0.1368
## vaccinal_schema_based_on_innactivatedsequential with inactivated and others -0.2672
## vaccinal_schema_based_on_innactivatedsequential with inactivated only -0.3969
## Std. Error
## (Intercept) 0.2504
## vaccinal_schema_based_on_innactivatedsequential excluding inactivated 0.2962
## vaccinal_schema_based_on_innactivatedsequential with inactivated and others 0.3026
## vaccinal_schema_based_on_innactivatedsequential with inactivated only 0.3420
## z value
## (Intercept) -1.469
## vaccinal_schema_based_on_innactivatedsequential excluding inactivated -0.462
## vaccinal_schema_based_on_innactivatedsequential with inactivated and others -0.883
## vaccinal_schema_based_on_innactivatedsequential with inactivated only -1.161
## Pr(>|z|)
## (Intercept) 0.142
## vaccinal_schema_based_on_innactivatedsequential excluding inactivated 0.644
## vaccinal_schema_based_on_innactivatedsequential with inactivated and others 0.377
## vaccinal_schema_based_on_innactivatedsequential with inactivated only 0.246
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 619.85 on 473 degrees of freedom
## Residual deviance: 618.18 on 470 degrees of freedom
## AIC: 626.18
##
## Number of Fisher Scoring iterations: 4
filtered$nominal_vaccinal_schema <- relevel(factor(filtered$nominal_vaccinal_schema), ref="None")
model <- glm(outcome ~ nominal_vaccinal_schema,
family = binomial,
data = filtered)
summary_model <- summary(model)
print(summary_model)
##
## Call:
## glm(formula = outcome ~ nominal_vaccinal_schema, family = binomial,
## data = filtered)
##
## Coefficients:
## Estimate Std. Error
## (Intercept) -0.27763 0.26515
## nominal_vaccinal_schemaInactivated + mRNA -0.68995 0.37807
## nominal_vaccinal_schemaInactivated + mRNA + viral vector -0.24367 0.39266
## nominal_vaccinal_schemaInactivated + Viral vector 0.09531 0.43878
## nominal_vaccinal_schemaInactivated only -0.52088 0.35215
## nominal_vaccinal_schemamRNA + viral vector -0.41552 0.37214
## nominal_vaccinal_schemamRNA only -0.92634 0.70967
## nominal_vaccinal_schemaViral vector only -0.03415 0.33549
## z value Pr(>|z|)
## (Intercept) -1.047 0.295
## nominal_vaccinal_schemaInactivated + mRNA -1.825 0.068 .
## nominal_vaccinal_schemaInactivated + mRNA + viral vector -0.621 0.535
## nominal_vaccinal_schemaInactivated + Viral vector 0.217 0.828
## nominal_vaccinal_schemaInactivated only -1.479 0.139
## nominal_vaccinal_schemamRNA + viral vector -1.117 0.264
## nominal_vaccinal_schemamRNA only -1.305 0.192
## nominal_vaccinal_schemaViral vector only -0.102 0.919
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 619.85 on 473 degrees of freedom
## Residual deviance: 611.32 on 466 degrees of freedom
## AIC: 627.32
##
## Number of Fisher Scoring iterations: 4
filtered$factor_innactivated_doses <- relevel(factor(filtered$innactivated_doses), ref=1)
filtered$factor_viral_vector_doses<- relevel(factor(filtered$viral_vector_doses ), ref=1)
filtered$factor_mrna_doses <- relevel(factor(filtered$mrna_doses), ref=1)
filtered$nominal_vaccinal_schema <- relevel(factor(filtered$nominal_vaccinal_schema), ref="None")
model <- glm(outcome ~ factor_innactivated_doses + factor_viral_vector_doses + factor_mrna_doses,
family = binomial,
data = filtered)
summary_model <- summary(model)
print(summary_model)
##
## Call:
## glm(formula = outcome ~ factor_innactivated_doses + factor_viral_vector_doses +
## factor_mrna_doses, family = binomial, data = filtered)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.325e-01 2.283e-01 -1.457 0.1453
## factor_innactivated_doses1 -5.215e-01 6.227e-01 -0.837 0.4023
## factor_innactivated_doses2 -3.556e-01 2.725e-01 -1.305 0.1919
## factor_innactivated_doses3 -1.506e+01 5.875e+02 -0.026 0.9795
## factor_viral_vector_doses1 6.419e-01 2.828e-01 2.270 0.0232 *
## factor_viral_vector_doses2 3.157e-05 2.914e-01 0.000 0.9999
## factor_viral_vector_doses3 -1.321e-01 4.298e-01 -0.307 0.7586
## factor_viral_vector_doses4 -1.523e+01 1.455e+03 -0.010 0.9916
## factor_mrna_doses1 -7.664e-03 3.476e-01 -0.022 0.9824
## factor_mrna_doses2 -5.404e-01 2.649e-01 -2.040 0.0413 *
## factor_mrna_doses3 -1.956e-01 3.819e-01 -0.512 0.6085
## factor_mrna_doses4 -9.943e-01 8.609e-01 -1.155 0.2481
## factor_mrna_doses5 -1.523e+01 1.455e+03 -0.010 0.9916
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 619.85 on 473 degrees of freedom
## Residual deviance: 601.95 on 461 degrees of freedom
## AIC: 627.95
##
## Number of Fisher Scoring iterations: 14
filtered$received_innactivated_doses <- relevel(factor(filtered$innactivated_doses >= 1), ref=1)
filtered$received_viral_vector_doses<- relevel(factor(filtered$viral_vector_doses >= 1), ref=1)
filtered$received_mrna_doses <- relevel(factor(filtered$mrna_doses >= 1), ref=1)
model <- glm(outcome ~ received_innactivated_doses + received_viral_vector_doses + received_mrna_doses,
family = binomial,
data = filtered)
summary_model <- summary(model)
print(summary_model)
##
## Call:
## glm(formula = outcome ~ received_innactivated_doses + received_viral_vector_doses +
## received_mrna_doses, family = binomial, data = filtered)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.54799 0.20156 -2.719 0.00655 **
## received_innactivated_dosesTRUE -0.08046 0.20960 -0.384 0.70109
## received_viral_vector_dosesTRUE 0.30492 0.20939 1.456 0.14533
## received_mrna_dosesTRUE -0.35767 0.20299 -1.762 0.07807 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 619.85 on 473 degrees of freedom
## Residual deviance: 613.81 on 470 degrees of freedom
## AIC: 621.81
##
## Number of Fisher Scoring iterations: 4