Reanalysis Paper-Frontiers

Author

Thiago Cerqueira-Silva

Data preparation

Read datasets

Show the code
pacman::p_load(tidyverse, 
               gtsummary, 
               finalfit, 
               survival, 
               kableExtra,
               ggbreak,
               arrow)

# custom function to recategorise
fct_case_when <- function(...) {
  args <- as.list(match.call())
  levels <- sapply(args[-1], function(f) f[[3]])
  levels <- levels[!is.na(levels)]
  factor(tidytable::case_when(...), levels = levels)
}

srag <- fs::dir_ls(
  path = ".",
  regexp = "INFLUD2[0-3].*" # restricting to 2020 to 2023, if you want to use 2024, change [0-4]
) |>
  map_dfr(~ arrow::read_parquet(.x) |> mutate(across(everything(), as.character)))

Select variables to use in the analysis

Show the code
srag_dt <- srag |>
  select(
    DT_NOTIFIC,
    DT_SIN_PRI,
    DT_INTERNA,
    DT_EVOLUCA,
    EVOLUCAO,
    CLASSI_FIN,
    DT_NASC,
    NU_IDADE_N,
    TP_IDADE,
    CS_RACA,
    CS_SEXO,
    CS_ESCOL_N,
    CS_ZONA,
    FATOR_RISC:OBESIDADE,
    SG_UF,
    CO_MUN_RES,
    VACINA_COV:DOSE_2REF
  ) |>
  mutate( #convert to date
    DT_NOTIFIC = dmy(DT_NOTIFIC),
    DT_SIN_PRI = dmy(DT_SIN_PRI),
    DT_INTERNA = dmy(DT_INTERNA),
    DT_EVOLUCA = dmy(DT_EVOLUCA),
    DOSE_1_COV = dmy(DOSE_1_COV),
    DOSE_2_COV = dmy(DOSE_2_COV),
    DOSE_REF = dmy(DOSE_REF),
    IDADE = case_when( #create age variable, it is combination of two variables
      TP_IDADE != "3" ~ 0,
      TP_IDADE == "3" ~ as.numeric(NU_IDADE_N)
    )
  ) |>
  # Create variables related to time
  mutate(
    t_0 = DT_INTERNA - DT_SIN_PRI, #time between symptom onset to hospitalisation
    t_1 = DT_EVOLUCA - DT_SIN_PRI, #Time used by the paper to select individuals (symptom onset to death/discharge)
    t_2 = DT_EVOLUCA - DT_INTERNA, #time between hospitalisation to death/discharge
    t_dose_1 = DOSE_1_COV - DT_SIN_PRI, #dose 1
    t_dose_2 = DOSE_2_COV - DT_SIN_PRI, #dose 2
    t_dose_3 = DOSE_REF - DT_SIN_PRI #dose 3
  ) |>
  # filter to COVID-19 (classfin=5)
  tidylog::filter(
    CLASSI_FIN == 5) |> 
  tidylog::filter(!is.na(DT_EVOLUCA)) |> # keep only individuals with discharge/death date
  tidylog::filter( # filter symptom onset/death/discharge between2020 and 2023 to be equal to the paper
    DT_EVOLUCA>="2020-01-01",
    DT_SIN_PRI>="2020-01-01",
         DT_EVOLUCA<"2024-01-01",
         DT_SIN_PRI<"2024-01-01") |> 
  tidylog::filter(CS_SEXO != "I") |> 
  mutate(
  vaccination_status = case_when(
    is.na(t_dose_1) ~ "unvax",
    t_dose_3<0 ~ "3_doses before",
    t_dose_2<0 ~ "2_doses before",
    t_dose_1<0 ~ "1_dose before",
    t_dose_3>=0 ~ "3_doses after",
    t_dose_2>=0 ~ "2_doses after",
    t_dose_1>=0 ~ "1_dose after"
  ),
  vaccination_status = fct_relevel(vaccination_status,"unvax"), #put unvaccinated as reference level
  vaccination_only_before = case_when(
    is.na(t_dose_1) ~ "unvax",
    t_dose_3<0 ~ "3_doses before",
    t_dose_2<0 ~ "2_doses before",
    t_dose_1<0 ~ "1_dose before",
    t_dose_1>=0 ~ "unvax"
  ),
  vaccination_only_before = fct_relevel(vaccination_only_before,"unvax"), #put unvaccinated as reference level
  death = if_else(EVOLUCAO %in% c("2","3"), # 2 = death due to SARS, 3= death due to other causes
                  1,
                  0),
  start = as.numeric(DT_SIN_PRI), #convert to numeric for the models
  stop = as.numeric(DT_EVOLUCA), #convert to numeric for the models
  time_end = stop - start, #differene between symptom onset to end
  time_start = 0, #wrong approach using time since symptom onset
  # change time to 1 (increase 1 day in date of death) if death =symptom onset
  time_end = if_else(time_end==0,1,time_end),
  year = as.factor(year(DT_SIN_PRI)) #variable of year of symptom onset
) 

After selection:

1) 1,551,354 records were removed for not being classified as COVID-19

2) 214,103 were removed from lack date of discharge/death (10%)

3) 1,129 rows were removed because symptom onset or discharge/death did not fall in 2020 to 2023.

4) 202 rows removed because no information about sex

The final sample is: 2,001,099

Show the code
# Recoding variables
srag_dt <- srag_dt |> 
  mutate(
    FATOR_RISC = case_when(
      FATOR_RISC == "2"~ "N",
      FATOR_RISC == "1"~ "S",
      TRUE ~ FATOR_RISC
    ),
    FATOR_RISC = fct_case_when(
      FATOR_RISC == "N" ~ "No",
      FATOR_RISC == "S" ~ "Yes"
    ),
    Region = fct_case_when(
      str_sub(CO_MUN_RES,1,1) == "1" ~ "North",
      str_sub(CO_MUN_RES,1,1) == "2" ~ "Northeast",
      str_sub(CO_MUN_RES,1,1) == "3" ~ "Southeast",
      str_sub(CO_MUN_RES,1,1) == "4" ~ "South",
      str_sub(CO_MUN_RES,1,1) == "5" ~ "Central-west",
      TRUE ~ "Missing"
    ),
    CS_ZONA = fct_case_when(
      CS_ZONA == "1" ~ "Urban",
      CS_ZONA == "2" ~ "Rural",
      CS_ZONA == "3" ~ "Periurban",
      TRUE ~ "Missing"
    ),
    CS_ESCOL_N = fct_case_when(
      CS_ESCOL_N == "0" ~ "No school",
      CS_ESCOL_N == "1" ~ "1-5",
      CS_ESCOL_N == "2" ~ "6-9",
      CS_ESCOL_N == "3" ~ "10-11",
      CS_ESCOL_N == "4" ~ "12+",
      TRUE ~ "Missing"
    ),
    CS_RACA = fct_case_when(
      CS_RACA == "1" ~ "White",
      CS_RACA == "2" ~ "Black",
      CS_RACA == "3" ~ "Asian",
      CS_RACA == "4" ~ "Mixed",
      CS_RACA == "5" ~ "Indigenous",
      TRUE ~ "Missing"
    ),
    CS_RACA_CAT = 
      fct_case_when(
        CS_RACA == "White" ~ "White",
        CS_RACA %in% c("Black","Asian","Mixed","Indigenous") ~ "Non-white",
        TRUE ~ "Missing" ),
    CS_SEXO = na_if(CS_SEXO,"I"),
    CS_SEXO = fct_na_value_to_level(CS_SEXO,"Missing"),
    Hospitalisation = if_else(!is.na(DT_INTERNA),
                              1,
                              0),
    IDADE_CAT = if_else(
      IDADE>=65,
      "65+",
      "0-64"
    ),
    IDADE_BIN = cut(IDADE, breaks = c(0,10,20,30,40,50,60,70,80,Inf),
                    include.lowest=T)
  ) |> 
  droplevels() |> 
  rename(
    Age = IDADE,
    Age_categorised = IDADE_CAT,
    Age_binned = IDADE_BIN,
    Sex = CS_SEXO,
    Race_ethnicity = CS_RACA_CAT,
    Education_level = CS_ESCOL_N,
    Risk_factor = FATOR_RISC,
    Area = CS_ZONA
  )

Distribution of time between symptom onset to death or discharge

Figure 1 from the The Conversation article

Show the code
srag_dt |> 
  mutate(t_1 = as.numeric(t_1)) |> 
  ggplot(aes(t_1)) +
  geom_histogram(binwidth = 7, color="white")+
  labs(x="Time between symptom onset to Death or Discharge (days)", y = "Number of cases per week")+
  scale_x_continuous(breaks = c(0,360,390,730,760))+
  scale_y_cut(c(5e2,5e4),which = c(1,3), scales = c(0.5,2), space = c(0.4,0.5))+
  coord_cartesian(clip = "off", ylim = c(0,620208), xlim = c(0,800)) +
  scale_y_continuous(labels=scales::comma)+
  firatheme::theme_fira()+
  theme(panel.grid.major = element_line(color="gray50"))

Here is the same figure using logarithmic scale to highlight the spikes

Show the code
srag_dt |> 
  mutate(t_1 = as.numeric(t_1)) |> 
  ggplot(aes(t_1)) +
  geom_histogram(binwidth = 7, color="white")+
  labs(x="Time between symptom onset to Death or Discharge (days)", y = "Number of cases per week")+
  scale_x_continuous(breaks = c(0,90,180,365,545,730,800))+
  scale_y_log10(labels=scales::comma)+
  firatheme::theme_fira()

Zooming specific to the interval around 1 year

Show the code
srag_dt |> 
  filter(t_1>=300, t_1<=419) |> 
  mutate(
    t_1 = as.numeric(t_1),
    t_1_cat = cut(t_1,breaks=seq(300,420,7), include.lowest=T)) |> 
  count(t_1_cat) |> 
  filter(!is.na(t_1_cat)) |> 
  ggplot(aes(t_1_cat,n)) +
  geom_col()+
  labs(x="Time between symptom onset to Death or Discharge (days)", y = "Number of cases per week")+
  firatheme::theme_fira()+
  theme(axis.text.x = element_text(angle=90,
                                   vjust = 0.5))

Zooming specific to the interval around 2 years

Show the code
srag_dt |> 
  filter(t_1>=680, t_1<=800) |> 
  mutate(
    t_1 = as.numeric(t_1),
    t_1_cat = cut(t_1,breaks=seq(680,800,7), include.lowest=T)) |> 
  count(t_1_cat) |> 
  filter(!is.na(t_1_cat)) |> 
  ggplot(aes(t_1_cat,n)) +
  geom_col()+
  labs(x="Time between symptom onset to Death or Discharge (days)", y = "Number of cases per week")+
  firatheme::theme_fira()+
  theme(axis.text.x = element_text(angle=90,
                                   vjust = 0.5))

The graphs show clearly a peak around 1 year and 2 year, likely reflecting errors in the “year” of one of the dates. The SARS system has some rules related to the data insertion, the date of discharge/death always must be greater than the date of symptom onset, for this reason it is impossible to have errors in the opposite direction.

We can consider the data is correct and proceed with the analysis to replicate the questions posed by the article.

It is necessary to split the time contribution of each person in the intervals (0-90, 91-365, and ≥365 days)

Split the data in individuals with time 0-90, 91-365, 366+

Ps.: Here we removed missing data on Region (302 rows). As we can see, region and sex had a small number of missing data that were also not reported in the paper.

Show the code
srag_dt <- srag_dt |> 
  tidylog::filter(Sex!="Missing",
         Region!="Missing") |> 
  droplevels()
splited_dt <- survSplit(Surv(time_end,death)~., srag_dt,
          cut = c(90,365),
          start = "tstart",
          end = "tstop",
          episode = "timegroup",
          id="id")
Show the code
splited_dt <- splited_dt |> 
  mutate(start = start + tstart,
         stop = start + tstop,
         timegroup = as.factor(timegroup),
         timegroup_cat = fct_case_when(
           timegroup == "1" ~ "0-90",
           timegroup == "2" ~ "91-365",
           timegroup == "3" ~ "366+"
         ),
         time_since_symp = tstop - tstart) |> 
  rename(
    start_cal = start,
    stop_cal = stop,
    start_symptom = tstart,
    stop_symptom = tstop
  )

splited_dt <- splited_dt |> 
  mutate(
  vaccination_status_wrong = fct_case_when(
    vaccination_status %in%
      c("3_doses before","3_doses after") ~ "3 doses",
        vaccination_status %in%
      c("2_doses before","2_doses after") ~ "2 doses",
        vaccination_status %in%
      c("1_dose before","1_dose after") ~ "1 doses",
    TRUE ~ "unvax"),
  vaccination_status_wrong = fct_relevel(vaccination_status_wrong,"unvax"),

  )

The characteristics distribution by interval (overall)

Show the code
splited_dt |> 
  select(
    Age,
    Age_categorised,
    Age_binned,
    Race_ethnicity,
    Sex,
    Education_level,
    Area,
    Region,
    Hospitalisation,
    year,
    Risk_factor,
    vaccination_status,
    vaccination_only_before,
    vaccination_status_wrong,
    timegroup_cat,

  ) |> 
  tbl_summary(by = timegroup_cat)
Characteristic 0-90
N = 2,000,7971
91-365
N = 15,7241
366+
N = 1,6641
Age 60 (45, 73) 61 (47, 72) 60 (44, 75)
Age_categorised


    0-64 1,189,885 (59%) 9,151 (58%) 966 (58%)
    65+ 810,912 (41%) 6,573 (42%) 698 (42%)
Age_binned


    [0,10] 43,996 (2.2%) 370 (2.4%) 44 (2.6%)
    (10,20] 19,428 (1.0%) 202 (1.3%) 21 (1.3%)
    (20,30] 84,587 (4.2%) 659 (4.2%) 89 (5.3%)
    (30,40] 209,869 (10%) 1,423 (9.0%) 170 (10%)
    (40,50] 299,111 (15%) 2,213 (14%) 241 (14%)
    (50,60] 379,070 (19%) 2,995 (19%) 287 (17%)
    (60,70] 384,326 (19%) 3,367 (21%) 285 (17%)
    (70,80] 320,859 (16%) 2,748 (17%) 263 (16%)
    (80,Inf] 259,551 (13%) 1,747 (11%) 264 (16%)
Race_ethnicity


    White 878,721 (44%) 6,336 (40%) 714 (43%)
    Non-white 763,796 (38%) 6,301 (40%) 637 (38%)
    Missing 358,280 (18%) 3,087 (20%) 313 (19%)
Sex


    F 899,831 (45%) 6,823 (43%) 781 (47%)
    M 1,100,966 (55%) 8,901 (57%) 883 (53%)
Education_level


    No school 51,204 (2.6%) 366 (2.3%) 43 (2.6%)
    1-5 195,573 (9.8%) 1,315 (8.4%) 166 (10.0%)
    6-9 133,970 (6.7%) 951 (6.0%) 103 (6.2%)
    10-11 227,633 (11%) 1,616 (10%) 187 (11%)
    12+ 106,213 (5.3%) 929 (5.9%) 92 (5.5%)
    Missing 1,286,204 (64%) 10,547 (67%) 1,073 (64%)
Area


    Urban 1,681,424 (84%) 13,166 (84%) 1,411 (85%)
    Rural 85,673 (4.3%) 561 (3.6%) 64 (3.8%)
    Periurban 6,623 (0.3%) 48 (0.3%) 2 (0.1%)
    Missing 227,077 (11%) 1,949 (12%) 187 (11%)
Region


    North 126,354 (6.3%) 991 (6.3%) 85 (5.1%)
    Northeast 308,724 (15%) 3,018 (19%) 268 (16%)
    Southeast 1,007,136 (50%) 8,004 (51%) 994 (60%)
    South 352,536 (18%) 2,146 (14%) 154 (9.3%)
    Central-west 206,047 (10%) 1,565 (10.0%) 163 (9.8%)
Hospitalisation 1,903,874 (95%) 14,594 (93%) 1,480 (89%)
year


    2020 640,580 (32%) 6,992 (44%) 822 (49%)
    2021 1,101,200 (55%) 6,991 (44%) 794 (48%)
    2022 214,706 (11%) 1,530 (9.7%) 48 (2.9%)
    2023 44,311 (2.2%) 211 (1.3%) 0 (0%)
Risk_factor 1,237,109 (62%) 10,548 (67%) 977 (59%)
vaccination_status


    unvax 1,606,556 (80%) 12,517 (80%) 1,230 (74%)
    1_dose after 16,010 (0.8%) 251 (1.6%) 31 (1.9%)
    1_dose before 95,626 (4.8%) 645 (4.1%) 51 (3.1%)
    2_doses after 18,204 (0.9%) 435 (2.8%) 192 (12%)
    2_doses before 158,481 (7.9%) 1,145 (7.3%) 59 (3.5%)
    3_doses after 11,834 (0.6%) 193 (1.2%) 83 (5.0%)
    3_doses before 94,086 (4.7%) 538 (3.4%) 18 (1.1%)
vaccination_only_before


    unvax 1,652,604 (83%) 13,396 (85%) 1,536 (92%)
    1_dose before 95,626 (4.8%) 645 (4.1%) 51 (3.1%)
    2_doses before 158,481 (7.9%) 1,145 (7.3%) 59 (3.5%)
    3_doses before 94,086 (4.7%) 538 (3.4%) 18 (1.1%)
vaccination_status_wrong


    unvax 1,606,556 (80%) 12,517 (80%) 1,230 (74%)
    3 doses 105,920 (5.3%) 731 (4.6%) 101 (6.1%)
    2 doses 176,685 (8.8%) 1,580 (10%) 251 (15%)
    1 doses 111,636 (5.6%) 896 (5.7%) 82 (4.9%)
1 Median (Q1, Q3); n (%)

The characteristics distribution by interval (overall), breaking by status (Death/Alive)

Show the code
splited_dt |> 
  select(
    Age,
    Age_categorised,
    Age_binned,
    Race_ethnicity,
    Sex,
    Education_level,
    Area,
    Region,
    Hospitalisation,
    year,
    Risk_factor,
    vaccination_status,
    vaccination_only_before,
    vaccination_status_wrong,
    timegroup_cat,
    death
) |>
  mutate(death = if_else(death==1,"Death","Alive")) |> 
  tbl_strata(
    strata = timegroup_cat,
    .tbl_fun =
      ~ .x |>
        tbl_summary(by = death),
    .header = "**{strata}**, N = {n}"
  )
Characteristic
0-90, N = 2000797
91-365, N = 15724
366+, N = 1664
Alive
N = 1,317,2541
Death
N = 683,5431
Alive
N = 10,8961
Death
N = 4,8281
Alive
N = 1,2131
Death
N = 4511
Age 55 (41, 68) 68 (57, 79) 57 (43, 70) 67 (55, 76) 55 (41, 69) 73 (61, 82)
Age_categorised





    0-64 911,377 (69%) 278,508 (41%) 7,040 (65%) 2,111 (44%) 829 (68%) 137 (30%)
    65+ 405,877 (31%) 405,035 (59%) 3,856 (35%) 2,717 (56%) 384 (32%) 314 (70%)
Age_binned





    [0,10] 41,576 (3.2%) 2,420 (0.4%) 324 (3.0%) 46 (1.0%) 43 (3.5%) 1 (0.2%)
    (10,20] 17,420 (1.3%) 2,008 (0.3%) 173 (1.6%) 29 (0.6%) 20 (1.6%) 1 (0.2%)
    (20,30] 74,333 (5.6%) 10,254 (1.5%) 565 (5.2%) 94 (1.9%) 86 (7.1%) 3 (0.7%)
    (30,40] 177,896 (14%) 31,973 (4.7%) 1,195 (11%) 228 (4.7%) 152 (13%) 18 (4.0%)
    (40,50] 235,893 (18%) 63,218 (9.2%) 1,768 (16%) 445 (9.2%) 207 (17%) 34 (7.5%)
    (50,60] 268,123 (20%) 110,947 (16%) 2,139 (20%) 856 (18%) 234 (19%) 53 (12%)
    (60,70] 227,635 (17%) 156,691 (23%) 2,184 (20%) 1,183 (25%) 200 (16%) 85 (19%)
    (70,80] 162,566 (12%) 158,293 (23%) 1,596 (15%) 1,152 (24%) 150 (12%) 113 (25%)
    (80,Inf] 111,812 (8.5%) 147,739 (22%) 952 (8.7%) 795 (16%) 121 (10.0%) 143 (32%)
Race_ethnicity





    White 582,013 (44%) 296,708 (43%) 4,291 (39%) 2,045 (42%) 496 (41%) 218 (48%)
    Non-white 480,102 (36%) 283,694 (42%) 4,374 (40%) 1,927 (40%) 476 (39%) 161 (36%)
    Missing 255,139 (19%) 103,141 (15%) 2,231 (20%) 856 (18%) 241 (20%) 72 (16%)
Sex





    F 597,561 (45%) 302,270 (44%) 4,784 (44%) 2,039 (42%) 566 (47%) 215 (48%)
    M 719,693 (55%) 381,273 (56%) 6,112 (56%) 2,789 (58%) 647 (53%) 236 (52%)
Education_level





    No school 25,248 (1.9%) 25,956 (3.8%) 200 (1.8%) 166 (3.4%) 22 (1.8%) 21 (4.7%)
    1-5 106,874 (8.1%) 88,699 (13%) 803 (7.4%) 512 (11%) 104 (8.6%) 62 (14%)
    6-9 82,312 (6.2%) 51,658 (7.6%) 629 (5.8%) 322 (6.7%) 74 (6.1%) 29 (6.4%)
    10-11 160,120 (12%) 67,513 (9.9%) 1,127 (10%) 489 (10%) 150 (12%) 37 (8.2%)
    12+ 78,713 (6.0%) 27,500 (4.0%) 653 (6.0%) 276 (5.7%) 70 (5.8%) 22 (4.9%)
    Missing 863,987 (66%) 422,217 (62%) 7,484 (69%) 3,063 (63%) 793 (65%) 280 (62%)
Area





    Urban 1,114,156 (85%) 567,268 (83%) 9,144 (84%) 4,022 (83%) 1,042 (86%) 369 (82%)
    Rural 52,775 (4.0%) 32,898 (4.8%) 385 (3.5%) 176 (3.6%) 51 (4.2%) 13 (2.9%)
    Periurban 4,230 (0.3%) 2,393 (0.4%) 36 (0.3%) 12 (0.2%) 1 (<0.1%) 1 (0.2%)
    Missing 146,093 (11%) 80,984 (12%) 1,331 (12%) 618 (13%) 119 (9.8%) 68 (15%)
Region





    North 74,926 (5.7%) 51,428 (7.5%) 612 (5.6%) 379 (7.9%) 54 (4.5%) 31 (6.9%)
    Northeast 181,577 (14%) 127,147 (19%) 2,028 (19%) 990 (21%) 167 (14%) 101 (22%)
    Southeast 671,409 (51%) 335,727 (49%) 5,733 (53%) 2,271 (47%) 747 (62%) 247 (55%)
    South 244,669 (19%) 107,867 (16%) 1,396 (13%) 750 (16%) 114 (9.4%) 40 (8.9%)
    Central-west 144,673 (11%) 61,374 (9.0%) 1,127 (10%) 438 (9.1%) 131 (11%) 32 (7.1%)
Hospitalisation 1,274,015 (97%) 629,859 (92%) 10,098 (93%) 4,496 (93%) 1,107 (91%) 373 (83%)
year





    2020 415,001 (32%) 225,579 (33%) 4,844 (44%) 2,148 (44%) 620 (51%) 202 (45%)
    2021 719,687 (55%) 381,513 (56%) 4,900 (45%) 2,091 (43%) 556 (46%) 238 (53%)
    2022 148,874 (11%) 65,832 (9.6%) 1,014 (9.3%) 516 (11%) 37 (3.1%) 11 (2.4%)
    2023 33,692 (2.6%) 10,619 (1.6%) 138 (1.3%) 73 (1.5%) 0 (0%) 0 (0%)
Risk_factor 738,303 (56%) 498,806 (73%) 6,768 (62%) 3,780 (78%) 655 (54%) 322 (71%)
vaccination_status





    unvax 1,052,551 (80%) 554,005 (81%) 8,757 (80%) 3,760 (78%) 917 (76%) 313 (69%)
    1_dose after 12,574 (1.0%) 3,436 (0.5%) 179 (1.6%) 72 (1.5%) 22 (1.8%) 9 (2.0%)
    1_dose before 60,341 (4.6%) 35,285 (5.2%) 411 (3.8%) 234 (4.8%) 29 (2.4%) 22 (4.9%)
    2_doses after 17,506 (1.3%) 698 (0.1%) 373 (3.4%) 62 (1.3%) 120 (9.9%) 72 (16%)
    2_doses before 96,518 (7.3%) 61,963 (9.1%) 679 (6.2%) 466 (9.7%) 37 (3.1%) 22 (4.9%)
    3_doses after 11,744 (0.9%) 90 (<0.1%) 187 (1.7%) 6 (0.1%) 72 (5.9%) 11 (2.4%)
    3_doses before 66,020 (5.0%) 28,066 (4.1%) 310 (2.8%) 228 (4.7%) 16 (1.3%) 2 (0.4%)
vaccination_only_before





    unvax 1,094,375 (83%) 558,229 (82%) 9,496 (87%) 3,900 (81%) 1,131 (93%) 405 (90%)
    1_dose before 60,341 (4.6%) 35,285 (5.2%) 411 (3.8%) 234 (4.8%) 29 (2.4%) 22 (4.9%)
    2_doses before 96,518 (7.3%) 61,963 (9.1%) 679 (6.2%) 466 (9.7%) 37 (3.1%) 22 (4.9%)
    3_doses before 66,020 (5.0%) 28,066 (4.1%) 310 (2.8%) 228 (4.7%) 16 (1.3%) 2 (0.4%)
vaccination_status_wrong





    unvax 1,052,551 (80%) 554,005 (81%) 8,757 (80%) 3,760 (78%) 917 (76%) 313 (69%)
    3 doses 77,764 (5.9%) 28,156 (4.1%) 497 (4.6%) 234 (4.8%) 88 (7.3%) 13 (2.9%)
    2 doses 114,024 (8.7%) 62,661 (9.2%) 1,052 (9.7%) 528 (11%) 157 (13%) 94 (21%)
    1 doses 72,915 (5.5%) 38,721 (5.7%) 590 (5.4%) 306 (6.3%) 51 (4.2%) 31 (6.9%)
1 Median (Q1, Q3); n (%)

As we can see, the numbers doesn’t align with the numbers from the paper. But in the that paper even the percentages doesn’t make sense with “Region” in table 1 summing to a whopping 177%. It is possible the percentages are by line instead column, but even that is not specified.

Show the code
explanatory = c("vaccination_status", 
                "vaccination_only_before",
                "vaccination_status_wrong",
                "Age",
                "Age_categorised",
                "Age_binned",
                "Sex",
                "Race_ethnicity",
                "Education_level",
                "Region",
                "Risk_factor",
                "Hospitalisation",
                "year")
explanatory_multi = c("vaccination_status_wrong", 
                "Age",
                "Sex",
                "Race_ethnicity",
                "Hospitalisation",
                "Education_level",
                "Region",
                "Risk_factor")

explanatory_multi_correct = c("vaccination_status", 
                "Age_binned",
                "Sex",
                "Race_ethnicity",
                "Education_level",
                "Risk_factor", 
                "Region")

explanatory_multi_correct_wrong = c("vaccination_status", 
                "Age_binned",
                "Sex",
                "Race_ethnicity",
                "Education_level",
                "Risk_factor", 
                "Region",
                "year")

dependent = "Surv(start_cal, stop_cal, death)"

dependent_wrong = "Surv(time_since_symp, death)"

Models using the correct timescale (Calendar Time)

Additional information about the problems with timescale in the cox model can be seen at:

Cox regression using a calendar time scale was unbiased in simulations of COVID-19 vaccine effectiveness & safety

Additionally, we also show graphically the problems with this approach in the end of this document.

The choice of predictors in the Frontiers paper is also wrong in multiple aspects. The first is the categorisation of vaccination status and the second is the inclusion of “hospitalisation” as a predictor. The database only captures hospitalised patients or individuals who die without hospitalisation, once any association found with this variable is due to the way the system works. The age variable was used as continuous variable considering a linear relationship between age and risk of death. However, the relationship between age and death is a U (Higher risk in the extreme ages) or it increase exponentially in the older ages.

In all models the univariable analysis of vaccination and death will most result in vaccination with increased risk of death, but this is only because the vaccine availability to older person/adults in the initial period of pandemic.

0-90 days

Calendar time with wrong predictors

Show the code
splited_dt |> 
  filter(timegroup == "1") |> 
  finalfit(dependent, explanatory, explanatory_multi = explanatory_multi)->t1

kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(start_cal, stop_cal, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 1606556 (80.3) - -
1_dose after 16010 (0.8) 0.53 (0.51-0.55, p<0.001) -
1_dose before 95626 (4.8) 1.13 (1.12-1.15, p<0.001) -
2_doses after 18204 (0.9) 0.10 (0.09-0.11, p<0.001) -
2_doses before 158481 (7.9) 1.40 (1.39-1.42, p<0.001) -
3_doses after 11834 (0.6) 0.02 (0.02-0.02, p<0.001) -
3_doses before 94086 (4.7) 1.31 (1.29-1.33, p<0.001) -
vaccination_only_before unvax 1652604 (82.6) - -
1_dose before 95626 (4.8) 1.18 (1.17-1.19, p<0.001) -
2_doses before 158481 (7.9) 1.44 (1.43-1.46, p<0.001) -
3_doses before 94086 (4.7) 1.33 (1.31-1.36, p<0.001) -
vaccination_status_wrong unvax 1606556 (80.3) - -
3 doses 105920 (5.3) 0.86 (0.85-0.88, p<0.001) 0.59 (0.58-0.60, p<0.001)
2 doses 176685 (8.8) 1.09 (1.08-1.10, p<0.001) 0.77 (0.76-0.78, p<0.001)
1 doses 111636 (5.6) 1.00 (0.99-1.01, p=0.523) 0.82 (0.81-0.83, p<0.001)
Age Mean (SD) 58.4 (19.4) 1.03 (1.03-1.03, p<0.001) 1.03 (1.03-1.03, p<0.001)
Age_categorised 0-64 1189885 (59.5) - -
65+ 810912 (40.5) 2.25 (2.24-2.26, p<0.001) -
Age_binned [0,10] 43996 (2.2) - -
(10,20] 19428 (1.0) 1.49 (1.40-1.58, p<0.001) -
(20,30] 84587 (4.2) 1.57 (1.51-1.65, p<0.001) -
(30,40] 209869 (10.5) 1.82 (1.75-1.90, p<0.001) -
(40,50] 299111 (14.9) 2.38 (2.29-2.48, p<0.001) -
(50,60] 379070 (18.9) 3.17 (3.04-3.30, p<0.001) -
(60,70] 384326 (19.2) 4.47 (4.29-4.65, p<0.001) -
(70,80] 320859 (16.0) 5.84 (5.61-6.08, p<0.001) -
(80,Inf] 259551 (13.0) 7.98 (7.67-8.31, p<0.001) -
Sex F 899831 (45.0) - -
M 1100966 (55.0) 0.99 (0.98-0.99, p<0.001) 1.07 (1.06-1.07, p<0.001)
Race_ethnicity White 878721 (43.9) - -
Non-white 763796 (38.2) 1.09 (1.09-1.10, p<0.001) 1.07 (1.07-1.08, p<0.001)
Missing 358280 (17.9) 0.83 (0.82-0.83, p<0.001) 0.85 (0.85-0.86, p<0.001)
Education_level No school 51204 (2.6) - -
1-5 195573 (9.8) 0.82 (0.81-0.83, p<0.001) 0.95 (0.94-0.97, p<0.001)
6-9 133970 (6.7) 0.67 (0.66-0.69, p<0.001) 0.94 (0.92-0.95, p<0.001)
10-11 227633 (11.4) 0.52 (0.51-0.53, p<0.001) 0.86 (0.85-0.87, p<0.001)
12+ 106213 (5.3) 0.44 (0.44-0.45, p<0.001) 0.73 (0.71-0.74, p<0.001)
Missing 1286204 (64.3) 0.58 (0.57-0.59, p<0.001) 0.81 (0.80-0.82, p<0.001)
Region North 126354 (6.3) - -
Northeast 308724 (15.4) 1.02 (1.01-1.03, p<0.001) 0.98 (0.97-0.99, p<0.001)
Southeast 1007136 (50.3) 0.86 (0.85-0.87, p<0.001) 0.88 (0.87-0.89, p<0.001)
South 352536 (17.6) 0.78 (0.77-0.79, p<0.001) 0.83 (0.82-0.84, p<0.001)
Central-west 206047 (10.3) 0.74 (0.73-0.75, p<0.001) 0.81 (0.80-0.82, p<0.001)
Risk_factor No 763688 (38.2) - -
Yes 1237109 (61.8) 1.54 (1.53-1.54, p<0.001) 1.26 (1.25-1.27, p<0.001)
Hospitalisation 0 96923 (4.8) - -
1 1903874 (95.2) 0.48 (0.47-0.48, p<0.001) 0.48 (0.47-0.48, p<0.001)
year 2020 640580 (32.0) - -
2021 1101200 (55.0) 0.54 (0.53-0.55, p<0.001) -
2022 214706 (10.7) 0.40 (0.38-0.42, p<0.001) -
2023 44311 (2.2) 0.29 (0.26-0.32, p<0.001) -

Calendar time with right predictors

Show the code
splited_dt |> 
  filter(timegroup == "1") |> 
  finalfit(dependent, explanatory, explanatory_multi = explanatory_multi_correct)->t1

kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(start_cal, stop_cal, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 1606556 (80.3) - -
1_dose after 16010 (0.8) 0.53 (0.51-0.55, p<0.001) 0.53 (0.51-0.54, p<0.001)
1_dose before 95626 (4.8) 1.13 (1.12-1.15, p<0.001) 0.88 (0.87-0.89, p<0.001)
2_doses after 18204 (0.9) 0.10 (0.09-0.11, p<0.001) 0.11 (0.10-0.12, p<0.001)
2_doses before 158481 (7.9) 1.40 (1.39-1.42, p<0.001) 0.90 (0.89-0.91, p<0.001)
3_doses after 11834 (0.6) 0.02 (0.02-0.02, p<0.001) 0.02 (0.02-0.03, p<0.001)
3_doses before 94086 (4.7) 1.31 (1.29-1.33, p<0.001) 0.76 (0.74-0.77, p<0.001)
vaccination_only_before unvax 1652604 (82.6) - -
1_dose before 95626 (4.8) 1.18 (1.17-1.19, p<0.001) -
2_doses before 158481 (7.9) 1.44 (1.43-1.46, p<0.001) -
3_doses before 94086 (4.7) 1.33 (1.31-1.36, p<0.001) -
vaccination_status_wrong unvax 1606556 (80.3) - -
3 doses 105920 (5.3) 0.86 (0.85-0.88, p<0.001) -
2 doses 176685 (8.8) 1.09 (1.08-1.10, p<0.001) -
1 doses 111636 (5.6) 1.00 (0.99-1.01, p=0.523) -
Age Mean (SD) 58.4 (19.4) 1.03 (1.03-1.03, p<0.001) -
Age_categorised 0-64 1189885 (59.5) - -
65+ 810912 (40.5) 2.25 (2.24-2.26, p<0.001) -
Age_binned [0,10] 43996 (2.2) - -
(10,20] 19428 (1.0) 1.49 (1.40-1.58, p<0.001) 1.56 (1.47-1.65, p<0.001)
(20,30] 84587 (4.2) 1.57 (1.51-1.65, p<0.001) 1.75 (1.67-1.83, p<0.001)
(30,40] 209869 (10.5) 1.82 (1.75-1.90, p<0.001) 2.03 (1.95-2.12, p<0.001)
(40,50] 299111 (14.9) 2.38 (2.29-2.48, p<0.001) 2.61 (2.50-2.71, p<0.001)
(50,60] 379070 (18.9) 3.17 (3.04-3.30, p<0.001) 3.36 (3.22-3.50, p<0.001)
(60,70] 384326 (19.2) 4.47 (4.29-4.65, p<0.001) 4.62 (4.43-4.81, p<0.001)
(70,80] 320859 (16.0) 5.84 (5.61-6.08, p<0.001) 5.94 (5.70-6.19, p<0.001)
(80,Inf] 259551 (13.0) 7.98 (7.67-8.31, p<0.001) 8.13 (7.80-8.46, p<0.001)
Sex F 899831 (45.0) - -
M 1100966 (55.0) 0.99 (0.98-0.99, p<0.001) 1.06 (1.06-1.07, p<0.001)
Race_ethnicity White 878721 (43.9) - -
Non-white 763796 (38.2) 1.09 (1.09-1.10, p<0.001) 1.07 (1.07-1.08, p<0.001)
Missing 358280 (17.9) 0.83 (0.82-0.83, p<0.001) 0.85 (0.84-0.86, p<0.001)
Education_level No school 51204 (2.6) - -
1-5 195573 (9.8) 0.82 (0.81-0.83, p<0.001) 0.94 (0.92-0.95, p<0.001)
6-9 133970 (6.7) 0.67 (0.66-0.69, p<0.001) 0.92 (0.90-0.93, p<0.001)
10-11 227633 (11.4) 0.52 (0.51-0.53, p<0.001) 0.84 (0.82-0.85, p<0.001)
12+ 106213 (5.3) 0.44 (0.44-0.45, p<0.001) 0.71 (0.69-0.72, p<0.001)
Missing 1286204 (64.3) 0.58 (0.57-0.59, p<0.001) 0.80 (0.79-0.81, p<0.001)
Region North 126354 (6.3) - -
Northeast 308724 (15.4) 1.02 (1.01-1.03, p<0.001) 0.99 (0.98-1.00, p=0.296)
Southeast 1007136 (50.3) 0.86 (0.85-0.87, p<0.001) 0.86 (0.85-0.87, p<0.001)
South 352536 (17.6) 0.78 (0.77-0.79, p<0.001) 0.79 (0.78-0.80, p<0.001)
Central-west 206047 (10.3) 0.74 (0.73-0.75, p<0.001) 0.79 (0.79-0.80, p<0.001)
Risk_factor No 763688 (38.2) - -
Yes 1237109 (61.8) 1.54 (1.53-1.54, p<0.001) 1.21 (1.21-1.22, p<0.001)
Hospitalisation 0 96923 (4.8) - -
1 1903874 (95.2) 0.48 (0.47-0.48, p<0.001) -
year 2020 640580 (32.0) - -
2021 1101200 (55.0) 0.54 (0.53-0.55, p<0.001) -
2022 214706 (10.7) 0.40 (0.38-0.42, p<0.001) -
2023 44311 (2.2) 0.29 (0.26-0.32, p<0.001) -

91-365 days

Calendar time with wrong predictors

Show the code
splited_dt |> 
  filter(timegroup == "2") |> 
  finalfit(dependent, explanatory, explanatory_multi = explanatory_multi)->t1

t1[51,4] <- "-" # not converging because very low number of events in this category, remove the 0 to infinite HR
kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(start_cal, stop_cal, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 12517 (79.6) - -
1_dose after 251 (1.6) 0.77 (0.61-0.98, p=0.033) -
1_dose before 645 (4.1) 0.97 (0.85-1.11, p=0.669) -
2_doses after 435 (2.8) 0.24 (0.18-0.31, p<0.001) -
2_doses before 1145 (7.3) 1.06 (0.95-1.18, p=0.301) -
3_doses after 193 (1.2) 0.05 (0.02-0.12, p<0.001) -
3_doses before 538 (3.4) 1.13 (0.95-1.34, p=0.155) -
vaccination_only_before unvax 13396 (85.2) - -
1_dose before 645 (4.1) 1.12 (0.98-1.28, p=0.109) -
2_doses before 1145 (7.3) 1.20 (1.08-1.34, p=0.001) -
3_doses before 538 (3.4) 1.23 (1.04-1.46, p=0.016) -
vaccination_status_wrong unvax 12517 (79.6) - -
3 doses 731 (4.6) 0.62 (0.53-0.72, p<0.001) 0.48 (0.41-0.56, p<0.001)
2 doses 1580 (10.0) 0.70 (0.63-0.77, p<0.001) 0.56 (0.50-0.62, p<0.001)
1 doses 896 (5.7) 0.91 (0.80-1.02, p=0.108) 0.84 (0.74-0.94, p=0.003)
Age Mean (SD) 58.5 (19.1) 1.02 (1.02-1.02, p<0.001) 1.02 (1.02-1.02, p<0.001)
Age_categorised 0-64 9151 (58.2) - -
65+ 6573 (41.8) 1.75 (1.65-1.85, p<0.001) -
Age_binned [0,10] 370 (2.4) - -
(10,20] 202 (1.3) 1.32 (0.83-2.10, p=0.240) -
(20,30] 659 (4.2) 1.25 (0.88-1.78, p=0.218) -
(30,40] 1423 (9.0) 1.48 (1.08-2.03, p=0.016) -
(40,50] 2213 (14.1) 1.90 (1.40-2.58, p<0.001) -
(50,60] 2995 (19.0) 2.76 (2.05-3.72, p<0.001) -
(60,70] 3367 (21.4) 3.51 (2.61-4.72, p<0.001) -
(70,80] 2748 (17.5) 3.90 (2.90-5.24, p<0.001) -
(80,Inf] 1747 (11.1) 3.74 (2.78-5.04, p<0.001) -
Sex F 6823 (43.4) - -
M 8901 (56.6) 1.08 (1.02-1.14, p=0.011) 1.15 (1.08-1.21, p<0.001)
Race_ethnicity White 6336 (40.3) - -
Non-white 6301 (40.1) 1.00 (0.94-1.07, p=0.966) 0.99 (0.92-1.06, p=0.698)
Missing 3087 (19.6) 0.94 (0.86-1.01, p=0.106) 0.98 (0.90-1.07, p=0.632)
Education_level No school 366 (2.3) - -
1-5 1315 (8.4) 0.88 (0.74-1.05, p=0.147) 0.97 (0.81-1.15, p=0.708)
6-9 951 (6.0) 0.78 (0.64-0.94, p=0.008) 0.92 (0.76-1.12, p=0.414)
10-11 1616 (10.3) 0.71 (0.60-0.85, p<0.001) 0.95 (0.79-1.13, p=0.550)
12+ 929 (5.9) 0.69 (0.57-0.84, p<0.001) 0.89 (0.73-1.09, p=0.254)
Missing 10547 (67.1) 0.67 (0.57-0.78, p<0.001) 0.82 (0.70-0.97, p=0.017)
Region North 991 (6.3) - -
Northeast 3018 (19.2) 0.83 (0.74-0.94, p=0.002) 0.83 (0.74-0.94, p=0.003)
Southeast 8004 (50.9) 0.62 (0.56-0.69, p<0.001) 0.61 (0.54-0.69, p<0.001)
South 2146 (13.6) 0.85 (0.75-0.97, p=0.012) 0.80 (0.70-0.91, p=0.001)
Central-west 1565 (10.0) 0.66 (0.57-0.75, p<0.001) 0.67 (0.58-0.77, p<0.001)
Risk_factor No 5176 (32.9) - -
Yes 10548 (67.1) 1.92 (1.79-2.06, p<0.001) 1.66 (1.55-1.78, p<0.001)
Hospitalisation 0 1130 (7.2) - -
1 14594 (92.8) 1.26 (1.12-1.40, p<0.001) 1.17 (1.04-1.31, p=0.008)
year 2020 6992 (44.5) - -
2021 6991 (44.5) 0.45 (0.41-0.50, p<0.001) -
2022 1530 (9.7) 0.21 (0.17-0.26, p<0.001) -
2023 211 (1.3) - -

Calendar time with right predictors

Show the code
splited_dt |> 
  filter(timegroup == "2") |> 
  finalfit(dependent, explanatory, explanatory_multi = explanatory_multi_correct)->t1
t1[51,4] <- "-" # not converging because very low number of events in this category, remove the 0 to infinite HR
kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(start_cal, stop_cal, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 12517 (79.6) - -
1_dose after 251 (1.6) 0.77 (0.61-0.98, p=0.033) 0.81 (0.64-1.03, p=0.088)
1_dose before 645 (4.1) 0.97 (0.85-1.11, p=0.669) 0.84 (0.73-0.96, p=0.013)
2_doses after 435 (2.8) 0.24 (0.18-0.31, p<0.001) 0.22 (0.17-0.28, p<0.001)
2_doses before 1145 (7.3) 1.06 (0.95-1.18, p=0.301) 0.79 (0.70-0.88, p<0.001)
3_doses after 193 (1.2) 0.05 (0.02-0.12, p<0.001) 0.06 (0.02-0.12, p<0.001)
3_doses before 538 (3.4) 1.13 (0.95-1.34, p=0.155) 0.77 (0.65-0.92, p=0.003)
vaccination_only_before unvax 13396 (85.2) - -
1_dose before 645 (4.1) 1.12 (0.98-1.28, p=0.109) -
2_doses before 1145 (7.3) 1.20 (1.08-1.34, p=0.001) -
3_doses before 538 (3.4) 1.23 (1.04-1.46, p=0.016) -
vaccination_status_wrong unvax 12517 (79.6) - -
3 doses 731 (4.6) 0.62 (0.53-0.72, p<0.001) -
2 doses 1580 (10.0) 0.70 (0.63-0.77, p<0.001) -
1 doses 896 (5.7) 0.91 (0.80-1.02, p=0.108) -
Age Mean (SD) 58.5 (19.1) 1.02 (1.02-1.02, p<0.001) -
Age_categorised 0-64 9151 (58.2) - -
65+ 6573 (41.8) 1.75 (1.65-1.85, p<0.001) -
Age_binned [0,10] 370 (2.4) - -
(10,20] 202 (1.3) 1.32 (0.83-2.10, p=0.240) 1.39 (0.87-2.22, p=0.164)
(20,30] 659 (4.2) 1.25 (0.88-1.78, p=0.218) 1.39 (0.97-1.98, p=0.069)
(30,40] 1423 (9.0) 1.48 (1.08-2.03, p=0.016) 1.58 (1.15-2.18, p=0.005)
(40,50] 2213 (14.1) 1.90 (1.40-2.58, p<0.001) 1.98 (1.46-2.69, p<0.001)
(50,60] 2995 (19.0) 2.76 (2.05-3.72, p<0.001) 2.65 (1.96-3.58, p<0.001)
(60,70] 3367 (21.4) 3.51 (2.61-4.72, p<0.001) 3.34 (2.48-4.50, p<0.001)
(70,80] 2748 (17.5) 3.90 (2.90-5.24, p<0.001) 3.75 (2.79-5.06, p<0.001)
(80,Inf] 1747 (11.1) 3.74 (2.78-5.04, p<0.001) 3.72 (2.75-5.03, p<0.001)
Sex F 6823 (43.4) - -
M 8901 (56.6) 1.08 (1.02-1.14, p=0.011) 1.12 (1.06-1.18, p<0.001)
Race_ethnicity White 6336 (40.3) - -
Non-white 6301 (40.1) 1.00 (0.94-1.07, p=0.966) 0.98 (0.92-1.06, p=0.663)
Missing 3087 (19.6) 0.94 (0.86-1.01, p=0.106) 0.98 (0.90-1.06, p=0.571)
Education_level No school 366 (2.3) - -
1-5 1315 (8.4) 0.88 (0.74-1.05, p=0.147) 0.94 (0.79-1.12, p=0.504)
6-9 951 (6.0) 0.78 (0.64-0.94, p=0.008) 0.89 (0.74-1.08, p=0.246)
10-11 1616 (10.3) 0.71 (0.60-0.85, p<0.001) 0.92 (0.77-1.11, p=0.387)
12+ 929 (5.9) 0.69 (0.57-0.84, p<0.001) 0.86 (0.71-1.05, p=0.137)
Missing 10547 (67.1) 0.67 (0.57-0.78, p<0.001) 0.81 (0.69-0.95, p=0.009)
Region North 991 (6.3) - -
Northeast 3018 (19.2) 0.83 (0.74-0.94, p=0.002) 0.83 (0.74-0.94, p=0.003)
Southeast 8004 (50.9) 0.62 (0.56-0.69, p<0.001) 0.61 (0.54-0.68, p<0.001)
South 2146 (13.6) 0.85 (0.75-0.97, p=0.012) 0.78 (0.68-0.89, p<0.001)
Central-west 1565 (10.0) 0.66 (0.57-0.75, p<0.001) 0.67 (0.58-0.77, p<0.001)
Risk_factor No 5176 (32.9) - -
Yes 10548 (67.1) 1.92 (1.79-2.06, p<0.001) 1.63 (1.52-1.75, p<0.001)
Hospitalisation 0 1130 (7.2) - -
1 14594 (92.8) 1.26 (1.12-1.40, p<0.001) -
year 2020 6992 (44.5) - -
2021 6991 (44.5) 0.45 (0.41-0.50, p<0.001) -
2022 1530 (9.7) 0.21 (0.17-0.26, p<0.001) -
2023 211 (1.3) - -

366+ days

Calendar time with wrong predictors

Show the code
splited_dt |> 
  filter(timegroup == "3") |> 
  finalfit(dependent, explanatory, explanatory_multi = explanatory_multi)->t1

kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(start_cal, stop_cal, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 1230 (73.9) - -
1_dose after 31 (1.9) 0.63 (0.32-1.23, p=0.175) -
1_dose before 51 (3.1) 0.78 (0.50-1.21, p=0.263) -
2_doses after 192 (11.5) 1.25 (0.97-1.62, p=0.091) -
2_doses before 59 (3.5) 0.44 (0.28-0.69, p<0.001) -
3_doses after 83 (5.0) 0.32 (0.18-0.58, p<0.001) -
3_doses before 18 (1.1) 0.10 (0.02-0.41, p=0.001) -
vaccination_only_before unvax 1536 (92.3) - -
1_dose before 51 (3.1) 0.81 (0.53-1.25, p=0.348) -
2_doses before 59 (3.5) 0.46 (0.30-0.72, p=0.001) -
3_doses before 18 (1.1) 0.11 (0.03-0.43, p=0.002) -
vaccination_status_wrong unvax 1230 (73.9) - -
3 doses 101 (6.1) 0.25 (0.14-0.44, p<0.001) 0.21 (0.12-0.36, p<0.001)
2 doses 251 (15.1) 0.90 (0.71-1.13, p=0.358) 0.66 (0.52-0.84, p=0.001)
1 doses 82 (4.9) 0.74 (0.51-1.07, p=0.114) 0.57 (0.39-0.83, p=0.003)
Age Mean (SD) 58.4 (20.6) 1.03 (1.03-1.04, p<0.001) 1.03 (1.03-1.04, p<0.001)
Age_categorised 0-64 966 (58.1) - -
65+ 698 (41.9) 3.00 (2.45-3.66, p<0.001) -
Age_binned [0,10] 44 (2.6) - -
(10,20] 21 (1.3) 2.02 (0.13-32.25, p=0.620) -
(20,30] 89 (5.3) 1.89 (0.20-18.14, p=0.582) -
(30,40] 170 (10.2) 5.77 (0.77-43.21, p=0.088) -
(40,50] 241 (14.5) 7.94 (1.09-58.02, p=0.041) -
(50,60] 287 (17.2) 9.68 (1.34-70.04, p=0.024) -
(60,70] 285 (17.1) 15.10 (2.10-108.49, p=0.007) -
(70,80] 263 (15.8) 22.34 (3.12-159.99, p=0.002) -
(80,Inf] 264 (15.9) 27.27 (3.81-194.95, p=0.001) -
Sex F 781 (46.9) - -
M 883 (53.1) 1.04 (0.86-1.25, p=0.687) 1.11 (0.92-1.34, p=0.294)
Race_ethnicity White 714 (42.9) - -
Non-white 637 (38.3) 0.98 (0.80-1.20, p=0.854) 0.89 (0.71-1.12, p=0.315)
Missing 313 (18.8) 0.84 (0.65-1.10, p=0.214) 0.91 (0.68-1.20, p=0.503)
Education_level No school 43 (2.6) - -
1-5 166 (10.0) 0.82 (0.50-1.34, p=0.427) 1.08 (0.65-1.80, p=0.778)
6-9 103 (6.2) 0.58 (0.33-1.01, p=0.055) 0.82 (0.46-1.47, p=0.510)
10-11 187 (11.2) 0.46 (0.27-0.79, p=0.005) 0.86 (0.49-1.50, p=0.588)
12+ 92 (5.5) 0.60 (0.33-1.10, p=0.098) 0.89 (0.48-1.66, p=0.724)
Missing 1073 (64.5) 0.58 (0.37-0.90, p=0.015) 0.85 (0.53-1.35, p=0.485)
Region North 85 (5.1) - -
Northeast 268 (16.1) 0.87 (0.58-1.30, p=0.500) 0.76 (0.50-1.15, p=0.200)
Southeast 994 (59.7) 0.53 (0.36-0.77, p=0.001) 0.54 (0.37-0.81, p=0.003)
South 154 (9.3) 0.41 (0.26-0.66, p<0.001) 0.38 (0.23-0.63, p<0.001)
Central-west 163 (9.8) 0.34 (0.20-0.55, p<0.001) 0.39 (0.23-0.65, p<0.001)
Risk_factor No 687 (41.3) - -
Yes 977 (58.7) 1.74 (1.42-2.13, p<0.001) 1.38 (1.12-1.72, p=0.003)
Hospitalisation 0 184 (11.1) - -
1 1480 (88.9) 0.58 (0.46-0.74, p<0.001) 0.67 (0.52-0.87, p=0.002)
year 2020 822 (49.4) - -
2021 794 (47.7) 0.43 (0.35-0.52, p<0.001) -
2022 48 (2.9) 0.10 (0.05-0.19, p<0.001) -
2023 0 (0.0) NA (NA-NA, p=NA) -

Calendar time with right predictors

Show the code
splited_dt |> 
  filter(timegroup == "3") |> 
  finalfit(dependent, explanatory, explanatory_multi = explanatory_multi_correct)->t1

kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(start_cal, stop_cal, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 1230 (73.9) - -
1_dose after 31 (1.9) 0.63 (0.32-1.23, p=0.175) 0.61 (0.31-1.19, p=0.145)
1_dose before 51 (3.1) 0.78 (0.50-1.21, p=0.263) 0.60 (0.39-0.93, p=0.023)
2_doses after 192 (11.5) 1.25 (0.97-1.62, p=0.091) 1.04 (0.80-1.36, p=0.758)
2_doses before 59 (3.5) 0.44 (0.28-0.69, p<0.001) 0.28 (0.18-0.44, p<0.001)
3_doses after 83 (5.0) 0.32 (0.18-0.58, p<0.001) 0.33 (0.18-0.61, p<0.001)
3_doses before 18 (1.1) 0.10 (0.02-0.41, p=0.001) 0.05 (0.01-0.21, p<0.001)
vaccination_only_before unvax 1536 (92.3) - -
1_dose before 51 (3.1) 0.81 (0.53-1.25, p=0.348) -
2_doses before 59 (3.5) 0.46 (0.30-0.72, p=0.001) -
3_doses before 18 (1.1) 0.11 (0.03-0.43, p=0.002) -
vaccination_status_wrong unvax 1230 (73.9) - -
3 doses 101 (6.1) 0.25 (0.14-0.44, p<0.001) -
2 doses 251 (15.1) 0.90 (0.71-1.13, p=0.358) -
1 doses 82 (4.9) 0.74 (0.51-1.07, p=0.114) -
Age Mean (SD) 58.4 (20.6) 1.03 (1.03-1.04, p<0.001) -
Age_categorised 0-64 966 (58.1) - -
65+ 698 (41.9) 3.00 (2.45-3.66, p<0.001) -
Age_binned [0,10] 44 (2.6) - -
(10,20] 21 (1.3) 2.02 (0.13-32.25, p=0.620) 2.53 (0.16-40.60, p=0.513)
(20,30] 89 (5.3) 1.89 (0.20-18.14, p=0.582) 2.40 (0.25-23.22, p=0.449)
(30,40] 170 (10.2) 5.77 (0.77-43.21, p=0.088) 7.81 (1.04-58.93, p=0.046)
(40,50] 241 (14.5) 7.94 (1.09-58.02, p=0.041) 9.53 (1.30-69.94, p=0.027)
(50,60] 287 (17.2) 9.68 (1.34-70.04, p=0.024) 11.15 (1.53-81.06, p=0.017)
(60,70] 285 (17.1) 15.10 (2.10-108.49, p=0.007) 17.61 (2.44-127.24, p=0.004)
(70,80] 263 (15.8) 22.34 (3.12-159.99, p=0.002) 27.46 (3.81-197.72, p=0.001)
(80,Inf] 264 (15.9) 27.27 (3.81-194.95, p=0.001) 33.59 (4.67-241.38, p<0.001)
Sex F 781 (46.9) - -
M 883 (53.1) 1.04 (0.86-1.25, p=0.687) 1.11 (0.92-1.34, p=0.291)
Race_ethnicity White 714 (42.9) - -
Non-white 637 (38.3) 0.98 (0.80-1.20, p=0.854) 0.85 (0.68-1.07, p=0.161)
Missing 313 (18.8) 0.84 (0.65-1.10, p=0.214) 0.91 (0.68-1.21, p=0.511)
Education_level No school 43 (2.6) - -
1-5 166 (10.0) 0.82 (0.50-1.34, p=0.427) 0.99 (0.59-1.67, p=0.978)
6-9 103 (6.2) 0.58 (0.33-1.01, p=0.055) 0.73 (0.41-1.31, p=0.292)
10-11 187 (11.2) 0.46 (0.27-0.79, p=0.005) 0.81 (0.46-1.43, p=0.471)
12+ 92 (5.5) 0.60 (0.33-1.10, p=0.098) 0.97 (0.52-1.80, p=0.911)
Missing 1073 (64.5) 0.58 (0.37-0.90, p=0.015) 0.80 (0.50-1.29, p=0.368)
Region North 85 (5.1) - -
Northeast 268 (16.1) 0.87 (0.58-1.30, p=0.500) 0.80 (0.52-1.21, p=0.292)
Southeast 994 (59.7) 0.53 (0.36-0.77, p=0.001) 0.58 (0.39-0.87, p=0.008)
South 154 (9.3) 0.41 (0.26-0.66, p<0.001) 0.41 (0.24-0.67, p<0.001)
Central-west 163 (9.8) 0.34 (0.20-0.55, p<0.001) 0.38 (0.23-0.65, p<0.001)
Risk_factor No 687 (41.3) - -
Yes 977 (58.7) 1.74 (1.42-2.13, p<0.001) 1.37 (1.11-1.70, p=0.004)
Hospitalisation 0 184 (11.1) - -
1 1480 (88.9) 0.58 (0.46-0.74, p<0.001) -
year 2020 822 (49.4) - -
2021 794 (47.7) 0.43 (0.35-0.52, p<0.001) -
2022 48 (2.9) 0.10 (0.05-0.19, p<0.001) -
2023 0 (0.0) NA (NA-NA, p=NA) -

Models using wrong approach (time since symptom onset)

0-90 days

Wrong time scale with wrong predictors

Show the code
splited_dt |> 
  filter(timegroup == "1") |> 
  finalfit(dependent_wrong, explanatory, explanatory_multi = explanatory_multi)->t1

kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(time_since_symp, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 1606556 (80.3) - -
1_dose after 16010 (0.8) 0.51 (0.49-0.53, p<0.001) -
1_dose before 95626 (4.8) 1.10 (1.09-1.11, p<0.001) -
2_doses after 18204 (0.9) 0.10 (0.09-0.11, p<0.001) -
2_doses before 158481 (7.9) 1.32 (1.31-1.34, p<0.001) -
3_doses after 11834 (0.6) 0.02 (0.01-0.02, p<0.001) -
3_doses before 94086 (4.7) 1.24 (1.22-1.25, p<0.001) -
vaccination_only_before unvax 1652604 (82.6) - -
1_dose before 95626 (4.8) 1.13 (1.12-1.14, p<0.001) -
2_doses before 158481 (7.9) 1.36 (1.35-1.37, p<0.001) -
3_doses before 94086 (4.7) 1.27 (1.25-1.28, p<0.001) -
vaccination_status_wrong unvax 1606556 (80.3) - -
3 doses 105920 (5.3) 1.02 (1.01-1.03, p=0.001) 0.76 (0.75-0.77, p<0.001)
2 doses 176685 (8.8) 1.16 (1.15-1.17, p<0.001) 0.90 (0.89-0.91, p<0.001)
1 doses 111636 (5.6) 1.00 (0.99-1.01, p=0.578) 0.94 (0.93-0.95, p<0.001)
Age Mean (SD) 58.4 (19.4) 1.03 (1.03-1.03, p<0.001) 1.03 (1.03-1.03, p<0.001)
Age_categorised 0-64 1189885 (59.5) - -
65+ 810912 (40.5) 2.16 (2.15-2.17, p<0.001) -
Age_binned [0,10] 43996 (2.2) - -
(10,20] 19428 (1.0) 1.46 (1.38-1.55, p<0.001) -
(20,30] 84587 (4.2) 1.60 (1.53-1.67, p<0.001) -
(30,40] 209869 (10.5) 1.83 (1.76-1.91, p<0.001) -
(40,50] 299111 (14.9) 2.34 (2.25-2.44, p<0.001) -
(50,60] 379070 (18.9) 3.00 (2.88-3.13, p<0.001) -
(60,70] 384326 (19.2) 4.10 (3.94-4.27, p<0.001) -
(70,80] 320859 (16.0) 5.34 (5.13-5.56, p<0.001) -
(80,Inf] 259551 (13.0) 7.57 (7.27-7.88, p<0.001) -
Sex F 899831 (45.0) - -
M 1100966 (55.0) 0.97 (0.97-0.97, p<0.001) 1.05 (1.05-1.06, p<0.001)
Race_ethnicity White 878721 (43.9) - -
Non-white 763796 (38.2) 1.11 (1.10-1.11, p<0.001) 1.08 (1.07-1.09, p<0.001)
Missing 358280 (17.9) 0.84 (0.83-0.85, p<0.001) 0.85 (0.84-0.86, p<0.001)
Education_level No school 51204 (2.6) - -
1-5 195573 (9.8) 0.79 (0.78-0.80, p<0.001) 0.93 (0.91-0.94, p<0.001)
6-9 133970 (6.7) 0.64 (0.63-0.65, p<0.001) 0.90 (0.89-0.91, p<0.001)
10-11 227633 (11.4) 0.50 (0.49-0.51, p<0.001) 0.82 (0.81-0.83, p<0.001)
12+ 106213 (5.3) 0.42 (0.41-0.43, p<0.001) 0.67 (0.66-0.68, p<0.001)
Missing 1286204 (64.3) 0.56 (0.55-0.57, p<0.001) 0.78 (0.77-0.79, p<0.001)
Region North 126354 (6.3) - -
Northeast 308724 (15.4) 1.04 (1.02-1.05, p<0.001) 1.01 (1.00-1.02, p=0.303)
Southeast 1007136 (50.3) 0.87 (0.86-0.88, p<0.001) 0.91 (0.90-0.91, p<0.001)
South 352536 (17.6) 0.77 (0.77-0.78, p<0.001) 0.84 (0.83-0.85, p<0.001)
Central-west 206047 (10.3) 0.74 (0.73-0.75, p<0.001) 0.81 (0.80-0.82, p<0.001)
Risk_factor No 763688 (38.2) - -
Yes 1237109 (61.8) 1.47 (1.47-1.48, p<0.001) 1.20 (1.19-1.21, p<0.001)
Hospitalisation 0 96923 (4.8) - -
1 1903874 (95.2) 0.46 (0.45-0.46, p<0.001) 0.46 (0.45-0.46, p<0.001)
year 2020 640580 (32.0) - -
2021 1101200 (55.0) 0.97 (0.96-0.97, p<0.001) -
2022 214706 (10.7) 1.21 (1.20-1.22, p<0.001) -
2023 44311 (2.2) 1.13 (1.11-1.15, p<0.001) -

Wrong time scale with right predictors

Show the code
splited_dt |> 
  filter(timegroup == "1") |> 
  finalfit(dependent_wrong, explanatory, explanatory_multi = explanatory_multi_correct_wrong)->t1

kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(time_since_symp, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 1606556 (80.3) - -
1_dose after 16010 (0.8) 0.51 (0.49-0.53, p<0.001) 0.53 (0.51-0.55, p<0.001)
1_dose before 95626 (4.8) 1.10 (1.09-1.11, p<0.001) 0.95 (0.94-0.96, p<0.001)
2_doses after 18204 (0.9) 0.10 (0.09-0.11, p<0.001) 0.11 (0.10-0.12, p<0.001)
2_doses before 158481 (7.9) 1.32 (1.31-1.34, p<0.001) 0.91 (0.91-0.92, p<0.001)
3_doses after 11834 (0.6) 0.02 (0.01-0.02, p<0.001) 0.02 (0.02-0.03, p<0.001)
3_doses before 94086 (4.7) 1.24 (1.22-1.25, p<0.001) 0.77 (0.76-0.79, p<0.001)
vaccination_only_before unvax 1652604 (82.6) - -
1_dose before 95626 (4.8) 1.13 (1.12-1.14, p<0.001) -
2_doses before 158481 (7.9) 1.36 (1.35-1.37, p<0.001) -
3_doses before 94086 (4.7) 1.27 (1.25-1.28, p<0.001) -
vaccination_status_wrong unvax 1606556 (80.3) - -
3 doses 105920 (5.3) 1.02 (1.01-1.03, p=0.001) -
2 doses 176685 (8.8) 1.16 (1.15-1.17, p<0.001) -
1 doses 111636 (5.6) 1.00 (0.99-1.01, p=0.578) -
Age Mean (SD) 58.4 (19.4) 1.03 (1.03-1.03, p<0.001) -
Age_categorised 0-64 1189885 (59.5) - -
65+ 810912 (40.5) 2.16 (2.15-2.17, p<0.001) -
Age_binned [0,10] 43996 (2.2) - -
(10,20] 19428 (1.0) 1.46 (1.38-1.55, p<0.001) 1.52 (1.44-1.62, p<0.001)
(20,30] 84587 (4.2) 1.60 (1.53-1.67, p<0.001) 1.76 (1.68-1.84, p<0.001)
(30,40] 209869 (10.5) 1.83 (1.76-1.91, p<0.001) 2.03 (1.94-2.11, p<0.001)
(40,50] 299111 (14.9) 2.34 (2.25-2.44, p<0.001) 2.54 (2.44-2.65, p<0.001)
(50,60] 379070 (18.9) 3.00 (2.88-3.13, p<0.001) 3.18 (3.05-3.31, p<0.001)
(60,70] 384326 (19.2) 4.10 (3.94-4.27, p<0.001) 4.26 (4.09-4.43, p<0.001)
(70,80] 320859 (16.0) 5.34 (5.13-5.56, p<0.001) 5.49 (5.27-5.71, p<0.001)
(80,Inf] 259551 (13.0) 7.57 (7.27-7.88, p<0.001) 7.77 (7.46-8.09, p<0.001)
Sex F 899831 (45.0) - -
M 1100966 (55.0) 0.97 (0.97-0.97, p<0.001) 1.05 (1.04-1.05, p<0.001)
Race_ethnicity White 878721 (43.9) - -
Non-white 763796 (38.2) 1.11 (1.10-1.11, p<0.001) 1.08 (1.07-1.09, p<0.001)
Missing 358280 (17.9) 0.84 (0.83-0.85, p<0.001) 0.86 (0.85-0.86, p<0.001)
Education_level No school 51204 (2.6) - -
1-5 195573 (9.8) 0.79 (0.78-0.80, p<0.001) 0.92 (0.91-0.93, p<0.001)
6-9 133970 (6.7) 0.64 (0.63-0.65, p<0.001) 0.89 (0.88-0.90, p<0.001)
10-11 227633 (11.4) 0.50 (0.49-0.51, p<0.001) 0.81 (0.80-0.82, p<0.001)
12+ 106213 (5.3) 0.42 (0.41-0.43, p<0.001) 0.66 (0.65-0.68, p<0.001)
Missing 1286204 (64.3) 0.56 (0.55-0.57, p<0.001) 0.77 (0.76-0.78, p<0.001)
Region North 126354 (6.3) - -
Northeast 308724 (15.4) 1.04 (1.02-1.05, p<0.001) 1.02 (1.01-1.03, p<0.001)
Southeast 1007136 (50.3) 0.87 (0.86-0.88, p<0.001) 0.88 (0.87-0.88, p<0.001)
South 352536 (17.6) 0.77 (0.77-0.78, p<0.001) 0.79 (0.78-0.80, p<0.001)
Central-west 206047 (10.3) 0.74 (0.73-0.75, p<0.001) 0.79 (0.78-0.80, p<0.001)
Risk_factor No 763688 (38.2) - -
Yes 1237109 (61.8) 1.47 (1.47-1.48, p<0.001) 1.17 (1.16-1.17, p<0.001)
Hospitalisation 0 96923 (4.8) - -
1 1903874 (95.2) 0.46 (0.45-0.46, p<0.001) -
year 2020 640580 (32.0) - -
2021 1101200 (55.0) 0.97 (0.96-0.97, p<0.001) 1.15 (1.14-1.16, p<0.001)
2022 214706 (10.7) 1.21 (1.20-1.22, p<0.001) 1.19 (1.18-1.21, p<0.001)
2023 44311 (2.2) 1.13 (1.11-1.15, p<0.001) 1.24 (1.21-1.27, p<0.001)

91-365 days

Wrong time scale with wrong predictors

Show the code
splited_dt |> 
  filter(timegroup == "2") |> 
  finalfit(dependent_wrong, explanatory, explanatory_multi = explanatory_multi)->t1

kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(time_since_symp, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 12517 (79.6) - -
1_dose after 251 (1.6) 0.90 (0.71-1.14, p=0.377) -
1_dose before 645 (4.1) 1.34 (1.17-1.53, p<0.001) -
2_doses after 435 (2.8) 0.26 (0.20-0.33, p<0.001) -
2_doses before 1145 (7.3) 1.39 (1.26-1.53, p<0.001) -
3_doses after 193 (1.2) 0.06 (0.03-0.14, p<0.001) -
3_doses before 538 (3.4) 1.60 (1.40-1.83, p<0.001) -
vaccination_only_before unvax 13396 (85.2) - -
1_dose before 645 (4.1) 1.43 (1.25-1.63, p<0.001) -
2_doses before 1145 (7.3) 1.49 (1.35-1.64, p<0.001) -
3_doses before 538 (3.4) 1.71 (1.49-1.95, p<0.001) -
vaccination_status_wrong unvax 12517 (79.6) - -
3 doses 731 (4.6) 0.98 (0.86-1.12, p=0.800) 0.83 (0.72-0.95, p=0.005)
2 doses 1580 (10.0) 0.92 (0.84-1.01, p=0.080) 0.77 (0.70-0.84, p<0.001)
1 doses 896 (5.7) 1.20 (1.07-1.35, p=0.002) 1.14 (1.01-1.28, p=0.033)
Age Mean (SD) 58.5 (19.1) 1.02 (1.02-1.02, p<0.001) 1.02 (1.01-1.02, p<0.001)
Age_categorised 0-64 9151 (58.2) - -
65+ 6573 (41.8) 1.76 (1.67-1.87, p<0.001) -
Age_binned [0,10] 370 (2.4) - -
(10,20] 202 (1.3) 1.20 (0.75-1.90, p=0.451) -
(20,30] 659 (4.2) 1.13 (0.79-1.60, p=0.513) -
(30,40] 1423 (9.0) 1.30 (0.95-1.79, p=0.100) -
(40,50] 2213 (14.1) 1.74 (1.29-2.36, p<0.001) -
(50,60] 2995 (19.0) 2.59 (1.92-3.48, p<0.001) -
(60,70] 3367 (21.4) 3.34 (2.49-4.49, p<0.001) -
(70,80] 2748 (17.5) 3.64 (2.71-4.89, p<0.001) -
(80,Inf] 1747 (11.1) 3.46 (2.57-4.65, p<0.001) -
Sex F 6823 (43.4) - -
M 8901 (56.6) 1.09 (1.03-1.15, p=0.003) 1.17 (1.11-1.24, p<0.001)
Race_ethnicity White 6336 (40.3) - -
Non-white 6301 (40.1) 0.94 (0.89-1.00, p=0.065) 0.97 (0.90-1.04, p=0.398)
Missing 3087 (19.6) 0.86 (0.80-0.94, p<0.001) 0.93 (0.85-1.01, p=0.102)
Education_level No school 366 (2.3) - -
1-5 1315 (8.4) 0.88 (0.74-1.04, p=0.140) 0.96 (0.81-1.15, p=0.657)
6-9 951 (6.0) 0.78 (0.65-0.94, p=0.010) 0.92 (0.76-1.12, p=0.406)
10-11 1616 (10.3) 0.69 (0.58-0.82, p<0.001) 0.92 (0.77-1.10, p=0.377)
12+ 929 (5.9) 0.65 (0.54-0.79, p<0.001) 0.83 (0.69-1.01, p=0.068)
Missing 10547 (67.1) 0.64 (0.55-0.75, p<0.001) 0.81 (0.69-0.95, p=0.010)
Region North 991 (6.3) - -
Northeast 3018 (19.2) 0.82 (0.73-0.92, p=0.001) 0.83 (0.74-0.94, p=0.003)
Southeast 8004 (50.9) 0.66 (0.59-0.73, p<0.001) 0.63 (0.56-0.71, p<0.001)
South 2146 (13.6) 1.07 (0.94-1.21, p=0.297) 0.97 (0.85-1.11, p=0.640)
Central-west 1565 (10.0) 0.76 (0.66-0.87, p<0.001) 0.78 (0.68-0.89, p<0.001)
Risk_factor No 5176 (32.9) - -
Yes 10548 (67.1) 2.04 (1.91-2.19, p<0.001) 1.72 (1.60-1.85, p<0.001)
Hospitalisation 0 1130 (7.2) - -
1 14594 (92.8) 1.36 (1.22-1.53, p<0.001) 1.23 (1.10-1.38, p<0.001)
year 2020 6992 (44.5) - -
2021 6991 (44.5) 1.06 (1.00-1.13, p=0.044) -
2022 1530 (9.7) 1.21 (1.10-1.33, p<0.001) -
2023 211 (1.3) 1.41 (1.12-1.78, p=0.004) -

Wrong time scale with right predictors

Show the code
splited_dt |> 
  filter(timegroup == "2") |> 
  finalfit(dependent_wrong, explanatory, explanatory_multi = explanatory_multi_correct_wrong)->t1

kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(time_since_symp, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 12517 (79.6) - -
1_dose after 251 (1.6) 0.90 (0.71-1.14, p=0.377) 0.84 (0.66-1.07, p=0.156)
1_dose before 645 (4.1) 1.34 (1.17-1.53, p<0.001) 1.08 (0.94-1.24, p=0.249)
2_doses after 435 (2.8) 0.26 (0.20-0.33, p<0.001) 0.21 (0.16-0.27, p<0.001)
2_doses before 1145 (7.3) 1.39 (1.26-1.53, p<0.001) 1.09 (0.97-1.22, p=0.129)
3_doses after 193 (1.2) 0.06 (0.03-0.14, p<0.001) 0.06 (0.03-0.13, p<0.001)
3_doses before 538 (3.4) 1.60 (1.40-1.83, p<0.001) 1.32 (1.11-1.58, p=0.002)
vaccination_only_before unvax 13396 (85.2) - -
1_dose before 645 (4.1) 1.43 (1.25-1.63, p<0.001) -
2_doses before 1145 (7.3) 1.49 (1.35-1.64, p<0.001) -
3_doses before 538 (3.4) 1.71 (1.49-1.95, p<0.001) -
vaccination_status_wrong unvax 12517 (79.6) - -
3 doses 731 (4.6) 0.98 (0.86-1.12, p=0.800) -
2 doses 1580 (10.0) 0.92 (0.84-1.01, p=0.080) -
1 doses 896 (5.7) 1.20 (1.07-1.35, p=0.002) -
Age Mean (SD) 58.5 (19.1) 1.02 (1.02-1.02, p<0.001) -
Age_categorised 0-64 9151 (58.2) - -
65+ 6573 (41.8) 1.76 (1.67-1.87, p<0.001) -
Age_binned [0,10] 370 (2.4) - -
(10,20] 202 (1.3) 1.20 (0.75-1.90, p=0.451) 1.21 (0.76-1.92, p=0.428)
(20,30] 659 (4.2) 1.13 (0.79-1.60, p=0.513) 1.20 (0.84-1.71, p=0.308)
(30,40] 1423 (9.0) 1.30 (0.95-1.79, p=0.100) 1.34 (0.97-1.84, p=0.074)
(40,50] 2213 (14.1) 1.74 (1.29-2.36, p<0.001) 1.74 (1.28-2.36, p<0.001)
(50,60] 2995 (19.0) 2.59 (1.92-3.48, p<0.001) 2.33 (1.73-3.14, p<0.001)
(60,70] 3367 (21.4) 3.34 (2.49-4.49, p<0.001) 2.91 (2.16-3.92, p<0.001)
(70,80] 2748 (17.5) 3.64 (2.71-4.89, p<0.001) 3.15 (2.34-4.25, p<0.001)
(80,Inf] 1747 (11.1) 3.46 (2.57-4.65, p<0.001) 3.07 (2.28-4.15, p<0.001)
Sex F 6823 (43.4) - -
M 8901 (56.6) 1.09 (1.03-1.15, p=0.003) 1.14 (1.07-1.20, p<0.001)
Race_ethnicity White 6336 (40.3) - -
Non-white 6301 (40.1) 0.94 (0.89-1.00, p=0.065) 0.97 (0.91-1.05, p=0.479)
Missing 3087 (19.6) 0.86 (0.80-0.94, p<0.001) 0.94 (0.86-1.02, p=0.140)
Education_level No school 366 (2.3) - -
1-5 1315 (8.4) 0.88 (0.74-1.04, p=0.140) 0.95 (0.79-1.13, p=0.536)
6-9 951 (6.0) 0.78 (0.65-0.94, p=0.010) 0.90 (0.74-1.09, p=0.280)
10-11 1616 (10.3) 0.69 (0.58-0.82, p<0.001) 0.92 (0.77-1.10, p=0.357)
12+ 929 (5.9) 0.65 (0.54-0.79, p<0.001) 0.82 (0.68-1.00, p=0.051)
Missing 10547 (67.1) 0.64 (0.55-0.75, p<0.001) 0.80 (0.69-0.94, p=0.007)
Region North 991 (6.3) - -
Northeast 3018 (19.2) 0.82 (0.73-0.92, p=0.001) 0.83 (0.74-0.94, p=0.003)
Southeast 8004 (50.9) 0.66 (0.59-0.73, p<0.001) 0.63 (0.56-0.71, p<0.001)
South 2146 (13.6) 1.07 (0.94-1.21, p=0.297) 0.93 (0.81-1.06, p=0.262)
Central-west 1565 (10.0) 0.76 (0.66-0.87, p<0.001) 0.76 (0.66-0.87, p<0.001)
Risk_factor No 5176 (32.9) - -
Yes 10548 (67.1) 2.04 (1.91-2.19, p<0.001) 1.70 (1.58-1.82, p<0.001)
Hospitalisation 0 1130 (7.2) - -
1 14594 (92.8) 1.36 (1.22-1.53, p<0.001) -
year 2020 6992 (44.5) - -
2021 6991 (44.5) 1.06 (1.00-1.13, p=0.044) 1.21 (1.13-1.29, p<0.001)
2022 1530 (9.7) 1.21 (1.10-1.33, p<0.001) 0.99 (0.87-1.12, p=0.865)
2023 211 (1.3) 1.41 (1.12-1.78, p=0.004) 1.14 (0.88-1.48, p=0.316)

366+ days

Wrong time scale with wrong predictors

Show the code
splited_dt |> 
  filter(timegroup == "3") |> 
  finalfit(dependent_wrong, explanatory, explanatory_multi = explanatory_multi)->t1

kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(time_since_symp, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 1230 (73.9) - -
1_dose after 31 (1.9) 1.22 (0.63-2.37, p=0.553) -
1_dose before 51 (3.1) 2.49 (1.61-3.85, p<0.001) -
2_doses after 192 (11.5) 2.96 (2.28-3.85, p<0.001) -
2_doses before 59 (3.5) 2.13 (1.38-3.29, p=0.001) -
3_doses after 83 (5.0) 0.66 (0.36-1.21, p=0.180) -
3_doses before 18 (1.1) 1.06 (0.26-4.25, p=0.939) -
vaccination_only_before unvax 1536 (92.3) - -
1_dose before 51 (3.1) 2.18 (1.42-3.35, p<0.001) -
2_doses before 59 (3.5) 1.87 (1.22-2.88, p=0.004) -
3_doses before 18 (1.1) 0.90 (0.23-3.64, p=0.888) -
vaccination_status_wrong unvax 1230 (73.9) - -
3 doses 101 (6.1) 0.70 (0.40-1.22, p=0.210) 0.67 (0.38-1.17, p=0.163)
2 doses 251 (15.1) 2.70 (2.14-3.42, p<0.001) 2.03 (1.59-2.59, p<0.001)
1 doses 82 (4.9) 1.91 (1.32-2.77, p=0.001) 1.57 (1.08-2.29, p=0.019)
Age Mean (SD) 58.4 (20.6) 1.04 (1.03-1.05, p<0.001) 1.03 (1.03-1.04, p<0.001)
Age_categorised 0-64 966 (58.1) - -
65+ 698 (41.9) 3.38 (2.77-4.14, p<0.001) -
Age_binned [0,10] 44 (2.6) - -
(10,20] 21 (1.3) 1.18 (0.07-18.86, p=0.907) -
(20,30] 89 (5.3) 1.41 (0.15-13.59, p=0.764) -
(30,40] 170 (10.2) 3.67 (0.49-27.49, p=0.206) -
(40,50] 241 (14.5) 5.06 (0.69-36.95, p=0.110) -
(50,60] 287 (17.2) 6.66 (0.92-48.13, p=0.060) -
(60,70] 285 (17.1) 10.29 (1.43-73.90, p=0.020) -
(70,80] 263 (15.8) 16.00 (2.23-114.56, p=0.006) -
(80,Inf] 264 (15.9) 22.44 (3.14-160.40, p=0.002) -
Sex F 781 (46.9) - -
M 883 (53.1) 1.02 (0.85-1.22, p=0.855) 1.21 (1.00-1.46, p=0.054)
Race_ethnicity White 714 (42.9) - -
Non-white 637 (38.3) 0.74 (0.60-0.90, p=0.003) 0.77 (0.62-0.97, p=0.026)
Missing 313 (18.8) 0.69 (0.53-0.90, p=0.006) 0.79 (0.59-1.05, p=0.102)
Education_level No school 43 (2.6) - -
1-5 166 (10.0) 0.59 (0.36-0.96, p=0.034) 0.91 (0.54-1.50, p=0.702)
6-9 103 (6.2) 0.44 (0.25-0.78, p=0.005) 0.84 (0.47-1.51, p=0.567)
10-11 187 (11.2) 0.33 (0.20-0.57, p<0.001) 0.80 (0.46-1.39, p=0.424)
12+ 92 (5.5) 0.36 (0.20-0.65, p=0.001) 0.71 (0.38-1.31, p=0.274)
Missing 1073 (64.5) 0.43 (0.27-0.66, p<0.001) 0.84 (0.53-1.33, p=0.456)
Region North 85 (5.1) - -
Northeast 268 (16.1) 1.15 (0.77-1.72, p=0.505) 1.08 (0.71-1.62, p=0.729)
Southeast 994 (59.7) 0.78 (0.53-1.13, p=0.183) 0.76 (0.51-1.12, p=0.159)
South 154 (9.3) 0.94 (0.59-1.51, p=0.802) 0.85 (0.52-1.39, p=0.519)
Central-west 163 (9.8) 0.47 (0.29-0.78, p=0.003) 0.58 (0.35-0.96, p=0.034)
Risk_factor No 687 (41.3) - -
Yes 977 (58.7) 1.77 (1.44-2.17, p<0.001) 1.35 (1.09-1.68, p=0.006)
Hospitalisation 0 184 (11.1) - -
1 1480 (88.9) 0.65 (0.51-0.83, p=0.001) 0.61 (0.47-0.79, p<0.001)
year 2020 822 (49.4) - -
2021 794 (47.7) 2.01 (1.65-2.44, p<0.001) -
2022 48 (2.9) 2.54 (1.38-4.70, p=0.003) -
2023 0 (0.0) NA (NA-NA, p=NA) -

Wrong time scale with right predictors

Show the code
splited_dt |> 
  filter(timegroup == "3") |> 
  finalfit(dependent_wrong, explanatory, explanatory_multi = explanatory_multi_correct)->t1

kable(t1, row.names=FALSE, align=c("l", "l", "r", "r", "r", "r"),
            booktabs=TRUE) %>% 
    kable_styling(font_size=8)
Dependent: Surv(time_since_symp, death) all HR (univariable) HR (multivariable)
vaccination_status unvax 1230 (73.9) - -
1_dose after 31 (1.9) 1.22 (0.63-2.37, p=0.553) 1.19 (0.61-2.33, p=0.604)
1_dose before 51 (3.1) 2.49 (1.61-3.85, p<0.001) 2.11 (1.36-3.28, p=0.001)
2_doses after 192 (11.5) 2.96 (2.28-3.85, p<0.001) 2.35 (1.80-3.07, p<0.001)
2_doses before 59 (3.5) 2.13 (1.38-3.29, p=0.001) 1.37 (0.87-2.14, p=0.175)
3_doses after 83 (5.0) 0.66 (0.36-1.21, p=0.180) 0.66 (0.36-1.20, p=0.173)
3_doses before 18 (1.1) 1.06 (0.26-4.25, p=0.939) 0.61 (0.15-2.49, p=0.495)
vaccination_only_before unvax 1536 (92.3) - -
1_dose before 51 (3.1) 2.18 (1.42-3.35, p<0.001) -
2_doses before 59 (3.5) 1.87 (1.22-2.88, p=0.004) -
3_doses before 18 (1.1) 0.90 (0.23-3.64, p=0.888) -
vaccination_status_wrong unvax 1230 (73.9) - -
3 doses 101 (6.1) 0.70 (0.40-1.22, p=0.210) -
2 doses 251 (15.1) 2.70 (2.14-3.42, p<0.001) -
1 doses 82 (4.9) 1.91 (1.32-2.77, p=0.001) -
Age Mean (SD) 58.4 (20.6) 1.04 (1.03-1.05, p<0.001) -
Age_categorised 0-64 966 (58.1) - -
65+ 698 (41.9) 3.38 (2.77-4.14, p<0.001) -
Age_binned [0,10] 44 (2.6) - -
(10,20] 21 (1.3) 1.18 (0.07-18.86, p=0.907) 1.39 (0.09-22.28, p=0.817)
(20,30] 89 (5.3) 1.41 (0.15-13.59, p=0.764) 1.56 (0.16-15.02, p=0.702)
(30,40] 170 (10.2) 3.67 (0.49-27.49, p=0.206) 4.22 (0.56-31.77, p=0.162)
(40,50] 241 (14.5) 5.06 (0.69-36.95, p=0.110) 5.31 (0.72-38.91, p=0.100)
(50,60] 287 (17.2) 6.66 (0.92-48.13, p=0.060) 6.65 (0.92-48.25, p=0.061)
(60,70] 285 (17.1) 10.29 (1.43-73.90, p=0.020) 9.09 (1.26-65.57, p=0.029)
(70,80] 263 (15.8) 16.00 (2.23-114.56, p=0.006) 14.65 (2.04-105.41, p=0.008)
(80,Inf] 264 (15.9) 22.44 (3.14-160.40, p=0.002) 18.10 (2.52-130.02, p=0.004)
Sex F 781 (46.9) - -
M 883 (53.1) 1.02 (0.85-1.22, p=0.855) 1.19 (0.98-1.45, p=0.073)
Race_ethnicity White 714 (42.9) - -
Non-white 637 (38.3) 0.74 (0.60-0.90, p=0.003) 0.74 (0.59-0.92, p=0.008)
Missing 313 (18.8) 0.69 (0.53-0.90, p=0.006) 0.77 (0.58-1.02, p=0.067)
Education_level No school 43 (2.6) - -
1-5 166 (10.0) 0.59 (0.36-0.96, p=0.034) 0.81 (0.48-1.35, p=0.414)
6-9 103 (6.2) 0.44 (0.25-0.78, p=0.005) 0.70 (0.39-1.26, p=0.233)
10-11 187 (11.2) 0.33 (0.20-0.57, p<0.001) 0.69 (0.40-1.22, p=0.206)
12+ 92 (5.5) 0.36 (0.20-0.65, p=0.001) 0.67 (0.36-1.25, p=0.206)
Missing 1073 (64.5) 0.43 (0.27-0.66, p<0.001) 0.78 (0.49-1.25, p=0.305)
Region North 85 (5.1) - -
Northeast 268 (16.1) 1.15 (0.77-1.72, p=0.505) 1.10 (0.73-1.67, p=0.648)
Southeast 994 (59.7) 0.78 (0.53-1.13, p=0.183) 0.72 (0.49-1.07, p=0.103)
South 154 (9.3) 0.94 (0.59-1.51, p=0.802) 0.84 (0.51-1.38, p=0.486)
Central-west 163 (9.8) 0.47 (0.29-0.78, p=0.003) 0.55 (0.33-0.92, p=0.023)
Risk_factor No 687 (41.3) - -
Yes 977 (58.7) 1.77 (1.44-2.17, p<0.001) 1.28 (1.03-1.58, p=0.025)
Hospitalisation 0 184 (11.1) - -
1 1480 (88.9) 0.65 (0.51-0.83, p=0.001) -
year 2020 822 (49.4) - -
2021 794 (47.7) 2.01 (1.65-2.44, p<0.001) -
2022 48 (2.9) 2.54 (1.38-4.70, p=0.003) -
2023 0 (0.0) NA (NA-NA, p=NA) -

Why time since symptom onset is wrong?

The distribution with calendar time in the cases with more than one year.

Show the code
splited_dt |> 
  filter(timegroup == "3") |> 
  mutate(duration = stop_symptom - start_symptom) |> filter(death==1) |> 
  arrange(DT_SIN_PRI) |> 
  mutate(case_rank = row_number()) |> 
  ggplot()+
  geom_segment(aes(x=DT_SIN_PRI,xend=DT_EVOLUCA,
                   y=case_rank,yend=case_rank), alpha=0.3, linewidth=0.1)+
  geom_point(aes(x=DT_EVOLUCA,y=case_rank,color="Death"), size=1.5,alpha=0.3)+
    geom_point(aes(x=DT_SIN_PRI,y=case_rank,color="Symptom"), size=1.5,alpha=0.3)+
  labs(y="No#", x="Date of Symptom", color="")+
  firatheme::theme_fira()+
  theme(legend.position = "bottom")

Using time since symptom onset, individuals symptomatic during 2020 will be compared to those from 2021/22/23, but there isn’t vaccine availability in 2020 / Very different scenario in each year. The comparison made in the paper represent this:

Show the code
splited_dt |> 
  filter(timegroup == "3") |> 
  mutate(duration = stop_symptom - start_symptom) |> filter(death==1) |> 
  arrange(DT_SIN_PRI) |> 
  mutate(case_rank = row_number()) |> 
  ggplot()+
  geom_segment(aes(x=0,xend=duration,
                   y=case_rank,yend=case_rank), alpha=0.3, linewidth=0.1)+
  geom_point(aes(x=duration,y=case_rank,color="Death"), size=1.5,alpha=0.3)+
  labs(y="No#", x="Time since symptom onset to death", color="")+
  firatheme::theme_fira()+
  theme(legend.position = "bottom")

Other problematic points in the paper

  • Lack of a flowchart describing the selection process: Inclusion/Exclusion
  • Lack of transparency in the description of vaccination status
  • The tables only show the number of individuals who died, not the full sample, the % doesn’t add to 100%
  • Use of variables with high amount of missing data (Education level has more than 60% of missing)
  • As explained before, wrong choice of predictors and type of analysis not appropriate for the question
  • The paper suffers of the Table 2 fallacy, claiming causality for each variable included in the analysis
  • No adjust for the timing between vaccine dose and event or type of vaccine (Brazil has employed 4 different ones, even that the paper doesn’t show)

The data is clearly misinterpreted.

As seen in Figure 1 of the paper. The drop in survival happens sharply at 1 year after “symptom onset”. There is no biological reason for a peak in deaths specific after one year. Another problem possible to extract from this figure is the difference between follow-up time, there is no vaccinated individual followed after 600 days, and that is only because the vaccine was implemented in 2021.

Additional models used in the paper

Example of the results using the Cox mixed effects and Frailty models

Example using the group ≥1 year

Show the code
t3 <- splited_dt |> 
  filter(timegroup == "3")

library(coxme)

Mixed model

Show the code
mod <- coxme(Surv(start_cal,stop_cal, death) ~ 
               (vaccination_status_wrong)+
        Age+
        Sex+
        Race_ethnicity+
        Hospitalisation +
        Education_level+
        Risk_factor+
          (1|CO_MUN_RES), t3) 
summary(mod)
Mixed effects coxme model
 Formula: Surv(start_cal, stop_cal, death) ~ (vaccination_status_wrong) +      Age + Sex + Race_ethnicity + Hospitalisation + Education_level +      Risk_factor + (1 | CO_MUN_RES) 
    Data: t3 

  events, n = 451, 1664

Random effects:
       group  variable        sd  variance
1 CO_MUN_RES Intercept 0.8103546 0.6566746
                  Chisq    df p   AIC    BIC
Integrated loglik 300.1  15.0 0 270.1  208.5
 Penalized loglik 606.5 144.4 0 317.6 -276.2

Fixed effects:
                                     coef exp(coef)  se(coef)     z        p
vaccination_status_wrong3 doses -1.731640  0.176994  0.311256 -5.56 2.65e-08
vaccination_status_wrong2 doses -0.576108  0.562082  0.138173 -4.17 3.05e-05
vaccination_status_wrong1 doses -0.738971  0.477605  0.206061 -3.59 0.000336
Age                              0.033552  1.034121  0.003243 10.35  < 2e-16
SexM                             0.124979  1.133125  0.106343  1.18 0.239896
Race_ethnicityNon-white          0.013568  1.013660  0.123698  0.11 0.912661
Race_ethnicityMissing           -0.145832  0.864303  0.162171 -0.90 0.368521
Hospitalisation                 -0.485283  0.615523  0.153345 -3.16 0.001553
Education_level1-5              -0.214142  0.807234  0.307336 -0.70 0.485948
Education_level6-9              -0.470940  0.624415  0.341704 -1.38 0.168138
Education_level10-11            -0.489131  0.613159  0.329797 -1.48 0.138041
Education_level12+              -0.570155  0.565438  0.363225 -1.57 0.116485
Education_levelMissing          -0.404773  0.667128  0.281037 -1.44 0.149787
Risk_factorYes                   0.301379  1.351721  0.118091  2.55 0.010708

Frailty

Show the code
mod <- coxph(Surv(start_cal,stop_cal, death) ~ 
               (vaccination_status_wrong)+
        Age+
        Sex+
        Race_ethnicity+
        Hospitalisation +
        Education_level+
        Risk_factor+
          frailty(CO_MUN_RES), t3) 
summary(mod)
Call:
coxph(formula = Surv(start_cal, stop_cal, death) ~ (vaccination_status_wrong) + 
    Age + Sex + Race_ethnicity + Hospitalisation + Education_level + 
    Risk_factor + frailty(CO_MUN_RES), data = t3)

  n= 1664, number of events= 451 

                          coef     se(coef) se2      Chisq  DF    p      
vaccination_status_wrong3 -1.78584 0.318284 0.296096  31.48   1.0 2.0e-08
vaccination_status_wrong2 -0.60983 0.140338 0.129621  18.88   1.0 1.4e-05
vaccination_status_wrong1 -0.76080 0.207858 0.198239  13.40   1.0 2.5e-04
Age                        0.03400 0.003286 0.003134 107.06   1.0 4.3e-25
SexM                       0.12945 0.108192 0.101459   1.43   1.0 2.3e-01
Race_ethnicityNon-white    0.01544 0.126286 0.115817   0.01   1.0 9.0e-01
Race_ethnicityMissing     -0.14201 0.165440 0.153400   0.74   1.0 3.9e-01
Hospitalisation           -0.48840 0.156770 0.144485   9.71   1.0 1.8e-03
Education_level1-5        -0.19764 0.316300 0.276129   0.39   1.0 5.3e-01
Education_level6-9        -0.45217 0.350243 0.313191   1.67   1.0 2.0e-01
Education_level10-11      -0.46950 0.337662 0.302742   1.93   1.0 1.6e-01
Education_level12+        -0.54837 0.369663 0.336714   2.20   1.0 1.4e-01
Education_levelMissing    -0.37703 0.289001 0.252295   1.70   1.0 1.9e-01
Risk_factorYes             0.30875 0.119919 0.112823   6.63   1.0 1.0e-02
frailty(CO_MUN_RES)                                  248.56 152.7 1.5e-06

                          exp(coef) exp(-coef) lower .95 upper .95
vaccination_status_wrong3    0.1677     5.9646   0.08985    0.3129
vaccination_status_wrong2    0.5434     1.8401   0.41276    0.7155
vaccination_status_wrong1    0.4673     2.1400   0.31093    0.7023
Age                          1.0346     0.9666   1.02795    1.0413
SexM                         1.1382     0.8786   0.92072    1.4071
Race_ethnicityNon-white      1.0156     0.9847   0.79289    1.3008
Race_ethnicityMissing        0.8676     1.1526   0.62734    1.1999
Hospitalisation              0.6136     1.6297   0.45128    0.8343
Education_level1-5           0.8207     1.2185   0.44150    1.5255
Education_level6-9           0.6362     1.5717   0.32025    1.2640
Education_level10-11         0.6253     1.5992   0.32261    1.2120
Education_level12+           0.5779     1.7304   0.28002    1.1926
Education_levelMissing       0.6859     1.4579   0.38928    1.2085
Risk_factorYes               1.3617     0.7344   1.07649    1.7225

Iterations: 5 outer, 41 Newton-Raphson
     Variance of random effect= 0.7081599   I-likelihood = -2749.5 
Degrees of freedom for terms=   2.6   0.9   0.9   1.7   0.8   4.3   0.9 152.7 
Concordance= 0.831  (se = 0.009 )
Likelihood ratio test= 626.5  on 164.8 df,   p=<2e-16