On SARI data from Brazil National Surveillance System
Over the year of 2020 the world has seen an unprecedent severe pandemic due to the Novel Coronavirus-2 (SARS-CoV-2), this has put challenges over each and every surveillance system on how to produce and curate data about the pandemic. Brazil has one of the biggest and most well established public health system, in Portuguese, Sistema Único de Saúde (SUS).
From the national surveillance system to the influenza (SIVEP-Gripe)has coming the most of the data about severe acute respiratory syndrome cases due to the SARS-Cov-2. We compile those data and run some statistic analysis, aiming to seen basic factor that can be associated to mortality on those data. SIVEP-Gripe disposes the data of all hospitalizations with Severe Acute Respiratory Illness, due the lack of testing we consider those case as a very realistic and accurate proxy to the hospitalizations of SARS by Covid-19 cases.
We use a cut of the SIVEP-Gripe data and run epiR package functions to obtain the Odds Ratio calculated by the Cochran-Mantel-Haenszel method, firstly. We table the data in sub setting it 3 major exposure factors, Sex (Male or Female), Age (Being over or under 60’s) and by Race (White, Yellow, Black, Indigenous and Brown)
We start by loading the case by case data cut to the crude data from SIVEP-Gripe weekly query. This is a version with some filters, we filtered by those cases which were hospitalized, has a date of first symptoms after the day “2020-03-15”, when community transmission were declared in Brazil, and has to have a complete information about the outcome of the case, being an discharged from hospital or death.
dados<-read_csv(paste0("../CSV/sivep_mortality_cut_", last.date, ".csv"))
paged_table(head(dados, 10))
In the procedures to cut the crude SIVEP-Gripe data, we classified the case by sex information, those which were complete we classified in Masculino, male in Portuguese, or Feminino, female in Portuguese. After this we table the case by the exposure factor, Sex against outcome.
# Sex
mortality_data_sexo<-dados %>%
filter(sexo != "Não Informado") %>%
mutate(outcome = case_when(evolucao == 1 ~ "Discharged",
evolucao == 2 ~ "Death")) %>% # Just to put deaths on the right place to 2by2 table, as outcome +
mutate(outcome = ordered(outcome, c("Death", "Discharged")))
# Filtering those who has not information about sex
# Tableing the outcomes against exposure factors, being of each sex
mortality_table_sexo<- table(mortality_data_sexo$sexo,
mortality_data_sexo$outcome,
dnn = c("Sex", "Outcome"))
paged_table(data.frame((mortality_table_sexo)))
We have a count of 191155 females with the outcome of dying in hospital, a count of 422334 females which has been discharged. For males, we have 241256 who died and 491396 who was discharged.
# Computing a OR from the 2by2 table,
# with sex as an exposure factor and death or survival as outcome
or_mortality_sexo<-epi.2by2(dat = mortality_table_sexo,
method = "cohort.count",
conf.level = 0.95,
units = 100,
outcome = "as.columns")
or_mortality_sexo
Outcome + Outcome - Total Inc risk *
Exposed + 191155 422334 613489 31.2
Exposed - 241256 491396 732652 32.9
Total 432411 913730 1346141 32.1
Odds
Exposed + 0.453
Exposed - 0.491
Total 0.473
Point estimates and 95% CIs:
-------------------------------------------------------------------
Inc risk ratio 0.95 (0.94, 0.95)
Odds ratio 0.92 (0.92, 0.93)
Attrib risk * -1.77 (-1.93, -1.61)
Attrib risk in population * -0.81 (-0.94, -0.67)
Attrib fraction in exposed (%) -5.68 (-6.21, -5.16)
Attrib fraction in population (%) -2.51 (-2.74, -2.29)
-------------------------------------------------------------------
Test that OR = 1: chi2(1) = 480.019 Pr>chi2 = <0.001
Wald confidence limits
CI: confidence interval
* Outcomes per 100 population units
The odds of dying if hospitalized due to SARI for females is 0.92 (95% CI: 0.91, 0.93) times greater than the odds of dying when being hospitalized due to SARI for males. The females has an protetive effect in the association of being hospitalized and sex.
We repeat the same analysis from above but changing sex by age, we classified the case by Age information, those which were not missing, we classified in <60, less than 60 years old, or 60>=, over or equal to 60 years old. After this we table the case by the exposure factor, Age against outcome.
# Age
mortalily_data_age<-dados %>%
filter(!is.na(age)) %>%
mutate(outcome = case_when(evolucao == 1 ~ "Discharged",
evolucao == 2 ~ "Death")) %>% # Just to put deaths on the right place to 2by2 table, as outcome +
mutate(outcome = ordered(outcome, c("Death", "Discharged")),
age = ordered(age, c("<60", ">60")))
mortality_table_age<- table(mortalily_data_age$age,
mortalily_data_age$outcome,
dnn = c("Age", "Outcome"))
paged_table(data.frame(mortality_table_age))
We have a count of 115448 with the outcome of dying which were less than 60 years old, and a count of 529996 over than 60 years old. For survivers, we have 317027 with less than 60 years old and 384003 who are over 60 years old.
# Computing a OR from the 2by2 table,
# with age 60>= as an exposure factor and death or survival as outcome
or_mortality_age<-epi.2by2(dat = mortality_table_age,
method = "cohort.count",
conf.level = 0.95,
units = 100,
outcome = "as.columns")
or_mortality_age
Outcome + Outcome - Total Inc risk *
Exposed + 115448 529996 645444 17.9
Exposed - 317027 384003 701030 45.2
Total 432475 913999 1346474 32.1
Odds
Exposed + 0.218
Exposed - 0.826
Total 0.473
Point estimates and 95% CIs:
-------------------------------------------------------------------
Inc risk ratio 0.40 (0.39, 0.40)
Odds ratio 0.26 (0.26, 0.27)
Attrib risk * -27.34 (-27.49, -27.19)
Attrib risk in population * -13.10 (-13.24, -12.96)
Attrib fraction in exposed (%) -152.83 (-154.31, -151.36)
Attrib fraction in population (%) -40.80 (-41.04, -40.56)
-------------------------------------------------------------------
Test that OR = 1: chi2(1) = 115178.100 Pr>chi2 = <0.001
Wald confidence limits
CI: confidence interval
* Outcomes per 100 population units
The odds of dying if hospitalized due to SARI for people less than 60 years old is 0.26 (95% CI: 0.26, 0.26) times reduced than the odds of dying when being hospitalized due to SARI for people with over than 60 years old. Being less than 60 years old has a protective effect on the outcome of a hospitalization, when compared with with being over than 60 years old.
A very common phenom when computing Odds Ratios and Risk Ratios is that we are working with a data that has multiple factors which can contribute to an association between an outcome an exposure, so to work better and avoid those mistakes we adjust the Odds Ratio for the data stratifying it on different factor that can be confounding on the analysis.
Maybe the odds ratio we are computing is confounded, age is a critical factor to determine outcome, and in the Section 2.1.1 we didn’t take this into account. So to account on this, we repeat the analysis of before, but now we stratified the table by age.
Now age is a confounding of Sex as exposure factor in the odds ratio computation.
# Age as Confounding, so sex as the exposure comes first in the table
mortalily_data_sex_age<-dados %>%
filter(!is.na(age) & sexo != "Não Informado") %>%
mutate(outcome = case_when(evolucao == 1 ~ "Discharged",
evolucao == 2 ~ "Death")) %>% # Just to put deaths on the right place to 2by2 table, as outcome +
mutate(outcome = ordered(outcome, c("Death", "Discharged")))
mortality_table_sex_age<- table(mortalily_data_sex_age$sexo,
mortalily_data_sex_age$outcome,
mortalily_data_sex_age$age,
dnn = c("Sex", "Outcome", "Age"))
paged_table(data.frame(mortality_table_sex_age))
Now the table has been spitted into 2 sections, one for the sex as exposure and those case with less than 60 years old, and other with sex as exposure for the cases with 60 or more years old. At the raw data, we already can see there is a difference in outcome, dying by SARI when hospitalized, women with less than 60 years dies less than men with over than 60 years.
Computing the Odds Ratio we have:
or_mortality_sex_age<-epi.2by2(dat = mortality_table_sex_age,
method = "cohort.count",
conf.level = 0.95,
units = 100,
outcome = "as.columns")
or_mortality_sex_age
Outcome + Outcome - Total Inc risk *
Exposed + 191155 422334 613489 31.2
Exposed - 241256 491396 732652 32.9
Total 432411 913730 1346141 32.1
Odds
Exposed + 0.453
Exposed - 0.491
Total 0.473
Point estimates and 95% CIs:
-------------------------------------------------------------------
Inc risk ratio (crude) 0.95 (0.94, 0.95)
Inc risk ratio (M-H) 0.91 (0.90, 0.91)
Inc risk ratio (crude:M-H) 1.04
Odds ratio (crude) 0.92 (0.92, 0.93)
Odds ratio (M-H) 0.85 (0.85, 0.86)
Odds ratio (crude:M-H) 1.08
Attrib risk (crude) * -1.77 (-1.93, -1.61)
Attrib risk (M-H) * -3.18 (-3.34, -3.03)
Attrib risk (crude:M-H) 0.56
-------------------------------------------------------------------
M-H test of homogeneity of RRs: chi2(1) = 16.112 Pr>chi2 = <0.001
M-H test of homogeneity of ORs: chi2(1) = 10.716 Pr>chi2 = 0.00
Test that M-H adjusted OR = 1: chi2(1) = NA Pr>chi2 = NA
Wald confidence limits
M-H: Mantel-Haenszel; CI: confidence interval
* Outcomes per 100 population units
The Mantel-Haenszel test of homogeneity of the strata odds ratios is significant (chi square test statistic 5.399; and p-value = 0.02) so we do not accept the null hypothesis and conclude that the odds ratios for each strata of age are not the same. When accounting for the confounding effect of age, the odds of dying if hospitalized by SARI for males is 0.85 (95% CI 0.84, 0.86) times that of females.
Another concern is that the odds ratio we are computing is again confounded, sex is too a critical factor to determine outcome, women has less prevalence of comorbidities, and in the Section 2.1.2 we didn’t take this into account. As in the last Section 2.2.1 we repeat the same analysis, now with stratified table by sex.
Sex is a confounding of Age as exposure factor in the odds ratio computation.
# Sex as Confounding
# Age first
mortalily_data_age_sex<-dados %>%
filter(!is.na(age) & sexo != "Não Informado") %>%
mutate(outcome = case_when(evolucao == 1 ~ "Discharged",
evolucao == 2 ~ "Death")) %>% # Just to put deaths on the right place to 2by2 table, as outcome +
mutate(outcome = ordered(outcome, c("Death", "Discharged")))
mortality_table_age_sex<- table(mortalily_data_age_sex$age,
mortalily_data_age_sex$outcome,
mortalily_data_age_sex$sexo,
dnn = c("Age", "Outcome", "Sex"))
paged_table(data.frame(mortality_table_age_sex))
The table is for the age as an exposure factor, and has for the confounding the sex, it is equal to the one in the Section 2.2.1, but let see if the Odds Ratios still will be the same.
Computing the Odds Ratio we have:
or_mortality_age_sex<-epi.2by2(dat = mortality_table_age_sex,
method = "cohort.count",
conf.level = 0.95,
units = 100,
outcome = "as.columns")
or_mortality_age_sex
Outcome + Outcome - Total Inc risk *
Exposed + 115429 529810 645239 17.9
Exposed - 316982 383920 700902 45.2
Total 432411 913730 1346141 32.1
Odds
Exposed + 0.218
Exposed - 0.826
Total 0.473
Point estimates and 95% CIs:
-------------------------------------------------------------------
Inc risk ratio (crude) 0.40 (0.39, 0.40)
Inc risk ratio (M-H) 0.39 (0.39, 0.40)
Inc risk ratio (crude:M-H) 1.01
Odds ratio (crude) 0.26 (0.26, 0.27)
Odds ratio (M-H) 0.26 (0.26, 0.26)
Odds ratio (crude:M-H) 1.01
Attrib risk (crude) * -27.34 (-27.48, -27.19)
Attrib risk (M-H) * -27.50 (-27.66, -27.34)
Attrib risk (crude:M-H) 0.99
-------------------------------------------------------------------
M-H test of homogeneity of RRs: chi2(1) = 16.112 Pr>chi2 = <0.001
M-H test of homogeneity of ORs: chi2(1) = 10.716 Pr>chi2 = 0.00
Test that M-H adjusted OR = 1: chi2(1) = NA Pr>chi2 = NA
Wald confidence limits
M-H: Mantel-Haenszel; CI: confidence interval
* Outcomes per 100 population units
As before the Mantel-Haenszel test of homogeneity of the strata odds ratios is significant (chi square test statistic 5.399; and p-value = 0.02) and we do not accept the null hypothesis, concluding that the odds ratios for each strata of sex are not the same. When accounting for the confounding effect of sex, the odds of dying if hospitalized by SARI for people over 60 years old is 0.26 (95% CI 0.26 to 0.26) times greater that of those with less than 60 years old. This is the same as before, when only counting the age as an exposure, this suggest sex is not a confounding for age, has no effect modification.
Normally happens to confounding are not symmetric to outcomes, it is crucial to account on each of the confounding and see how it is associated on each causal path. If we need to account on more than one confounding we have to adjust a Multinomial model or a Logistic model, and from it extract the Odds Ratio.
Now we take the Race of the individual as a confounding, as in the last two sections Section 2.2.1 Section 2.2.2 we will account as race as an confounding on the two different exposure risk factor, Age and Sex. Race is a very good proxy to social-economic level, controlling by it could be give more insights on how the mortality will play a more dramatic role. In Brazil, those who are not self-identified as whites White probably has lower social-economic level, accumulating more risk factors and comorbidities.
In Brazil IBGE, has an auto-declared race code of classification, being, White, Yellow, Indigenouos, Brown and Black people. The race field is mandatory in the notification form of SIVEP-Gripe, but still there are a lack of filling in, so form this analysis we used only those cases with filling in.
We proceed as before, tabling the cases with age exposure factor and stratifying in the 5 different levels of race factor.
# Race and Age
mortalily_data_raca_age<-dados %>%
filter(raca != "Não Informado" & !is.na(age)) %>%
mutate(raca = factor(raca, levels = unique(raca), ordered = T)) %>%
mutate(outcome = case_when(evolucao == 1 ~ "Discharged",
evolucao == 2 ~ "Death")) %>% # Just to put deaths on the right place to 2by2 table, as outcome +
mutate(outcome = ordered(outcome, c("Death", "Discharged")))
mortality_table_race_age<- table(mortalily_data_raca_age$age,
mortalily_data_raca_age$outcome,
mortalily_data_raca_age$raca,
dnn = c("Age", "Outcome", "Race"))
paged_table(data.frame(mortality_table_race_age))
And the Odds Ratio is calculated:
or_mortality_raca_age<-epi.2by2(dat = mortality_table_race_age,
method = "cohort.count",
conf.level = 0.95,
units = 100,
outcome = "as.columns")
or_mortality_raca_age
Outcome + Outcome - Total Inc risk *
Exposed + 96294 419632 515926 18.7
Exposed - 263008 307927 570935 46.1
Total 359302 727559 1086861 33.1
Odds
Exposed + 0.229
Exposed - 0.854
Total 0.494
Point estimates and 95% CIs:
-------------------------------------------------------------------
Inc risk ratio (crude) 0.41 (0.40, 0.41)
Inc risk ratio (M-H) 0.40 (0.40, 0.40)
Inc risk ratio (crude:M-H) 1.01
Odds ratio (crude) 0.27 (0.27, 0.27)
Odds ratio (M-H) 0.26 (0.26, 0.27)
Odds ratio (crude:M-H) 1.02
Attrib risk (crude) * -27.40 (-27.57, -27.23)
Attrib risk (M-H) * -27.71 (-27.89, -27.53)
Attrib risk (crude:M-H) 0.99
-------------------------------------------------------------------
M-H test of homogeneity of RRs: chi2(4) = 382.381 Pr>chi2 = <0.001
M-H test of homogeneity of ORs: chi2(4) = 100.185 Pr>chi2 = <0.001
Test that M-H adjusted OR = 1: chi2(4) = NA Pr>chi2 = NA
Wald confidence limits
M-H: Mantel-Haenszel; CI: confidence interval
* Outcomes per 100 population units
So for the race as a confounding of exposure for the age, we conclude that each strata has a different odds ratios for the age as an exposure risk factor. The Mantel-Haenszel test of homogeneity is significant (\(\chi^2\) test statistics of 103.703 with p-value less than 0.001) and we do not accept the null hypothesis. If an individual is hospitalized by SARI it will have 0.26 (95% CI: 0.26, 0.26) times greater odds to die if it is over 60 years old than less, after accounting the effect of confounding of race per strata.
Lastly, we table the cases with sex exposure risk factor and stratifying again in the 5 different levels of race factor.
# Race and Sex
mortalily_data_raca_sexo<-dados %>%
filter(raca != "Não Informado" & sexo != "Não Informado")%>%
mutate(raca = factor(raca, levels = unique(raca))) %>%
mutate(outcome = case_when(evolucao == 1 ~ "Discharged",
evolucao == 2 ~ "Death")) %>% # Just to put deaths on the right place to 2by2 table, as outcome +
mutate(outcome = ordered(outcome, c("Death", "Discharged")))
mortality_table_race_sexo<- table(mortalily_data_raca_sexo$sexo,
mortalily_data_raca_sexo$outcome,
mortalily_data_raca_sexo$raca,
dnn = c("Sex", "Outcome", "Race"))
paged_table(data.frame(mortality_table_race_sexo))
And the Odds Ratio is calculated:
or_mortality_raca_sexo<-epi.2by2(dat = mortality_table_race_sexo,
method = "cohort.count",
conf.level = 0.95,
units = 100,
outcome = "as.columns")
or_mortality_raca_sexo
Outcome + Outcome - Total Inc risk *
Exposed + 158785 337227 496012 32.0
Exposed - 200479 390172 590651 33.9
Total 359264 727399 1086663 33.1
Odds
Exposed + 0.471
Exposed - 0.514
Total 0.494
Point estimates and 95% CIs:
-------------------------------------------------------------------
Inc risk ratio (crude) 0.94 (0.94, 0.95)
Inc risk ratio (M-H) 0.94 (0.94, 0.95)
Inc risk ratio (crude:M-H) 1.00
Odds ratio (crude) 0.92 (0.91, 0.92)
Odds ratio (M-H) 0.92 (0.91, 0.93)
Odds ratio (crude:M-H) 1.00
Attrib risk (crude) * -1.93 (-2.11, -1.75)
Attrib risk (M-H) * -1.88 (-2.06, -1.70)
Attrib risk (crude:M-H) 1.03
-------------------------------------------------------------------
M-H test of homogeneity of RRs: chi2(4) = 29.134 Pr>chi2 = <0.001
M-H test of homogeneity of ORs: chi2(4) = 28.752 Pr>chi2 = <0.001
Test that M-H adjusted OR = 1: chi2(4) = NA Pr>chi2 = NA
Wald confidence limits
M-H: Mantel-Haenszel; CI: confidence interval
* Outcomes per 100 population units
The effect of race as a confounding of sex exposure risk factor, has for each strata a different odds ratios for the sex. The Mantel-Haenszel test of homogeneity is again significant (\(\chi^2\) test statistics of 27.303 with p-value less than 0.001) and we do not accept the null hypothesis. Individuals hospitalized by SARI it will have 0.92 (95% CI: 0.91, 0.92) times greater odds to die if it is males than females, after accounting the effect of confounding of race per strata.
Brazil is a very diverse country, with a big territory, local realities vary greatly over the Brazilian territory, one of the administrative divisions is State level. States receive different amount of budget and has their constitutions of laws on how and how much spend this budget, after the obligatory spending determined by the constitution. Particularly to the public health issues, each state can organize and determine its own way to expand and prioritize expenditures of budget, this generates a very heterogeneous scenario over the whole country, on the access to public health services.
In this part, we consider State level data for the mortality odds ratio, state can play the role of a confounding, so we do as the same for the last Section 2.2.3.
As before, we stratify the data into each State level information, with Age as an exposure.
# State and Age
mortalily_data_state_age<-dados %>%
filter(!is.na(sg_uf) & !is.na(age)) %>%
mutate(outcome = case_when(evolucao == 1 ~ "Discharged",
evolucao == 2 ~ "Death")) %>% # Just to put deaths on the right place to 2by2 table, as outcome +
mutate(outcome = ordered(outcome, c("Death", "Discharged")))
mortality_table_state_age<- table(mortalily_data_state_age$age,
mortalily_data_state_age$outcome,
mortalily_data_state_age$sg_uf,
dnn = c("Age", "Outcome", "State"))
paged_table(data.frame(mortality_table_state_age))
And the odds ratio stratified by state level is:
or_mortality_state_age<-epi.2by2(dat = mortality_table_state_age,
method = "cohort.count",
conf.level = 0.95,
units = 100,
outcome = "as.columns")
or_mortality_state_age
Outcome + Outcome - Total Inc risk *
Exposed + 115448 529996 645444 17.9
Exposed - 317027 384003 701030 45.2
Total 432475 913999 1346474 32.1
Odds
Exposed + 0.218
Exposed - 0.826
Total 0.473
Point estimates and 95% CIs:
-------------------------------------------------------------------
Inc risk ratio (crude) 0.40 (0.39, 0.40)
Inc risk ratio (M-H) 0.40 (0.40, 0.40)
Inc risk ratio (crude:M-H) 0.99
Odds ratio (crude) 0.26 (0.26, 0.27)
Odds ratio (M-H) 0.26 (0.26, 0.26)
Odds ratio (crude:M-H) 1.02
Attrib risk (crude) * -27.34 (-27.49, -27.19)
Attrib risk (M-H) * -27.13 (-27.29, -26.98)
Attrib risk (crude:M-H) 1.01
-------------------------------------------------------------------
M-H test of homogeneity of RRs: chi2(26) = 1618.669 Pr>chi2 = <0.001
M-H test of homogeneity of ORs: chi2(26) = 517.174 Pr>chi2 = <0.001
Test that M-H adjusted OR = 1: chi2(26) = NA Pr>chi2 = NA
Wald confidence limits
M-H: Mantel-Haenszel; CI: confidence interval
* Outcomes per 100 population units
Again, the odds ratio without account for a confounding is the same as for with the confounder, this suggest that for age as an exposure, there is little confounding effects, age is a very strong exposure to the outcome of dying when being hospitalized by SARI. The odds ratio for age as an exposure of dying by a hospitalized SARI, when counting on state as a confounding, is 0.26 (95% CI: 0.26, 0.26) reduced when below 60 years old than when over 60 years.
We stratify the data into each State level information, with Sex as an exposure.
# State and Age
mortalily_data_state_sex<-dados %>%
filter(!is.na(sg_uf) & sexo != "Não Informado") %>%
mutate(outcome = case_when(evolucao == 1 ~ "Discharged",
evolucao == 2 ~ "Death")) %>% # Just to put deaths on the right place to 2by2 table, as outcome +
mutate(outcome = ordered(outcome, c("Death", "Discharged")))
mortality_table_state_sex<- table(mortalily_data_state_sex$sexo,
mortalily_data_state_sex$outcome,
mortalily_data_state_sex$sg_uf,
dnn = c("Sex", "Outcome", "State"))
paged_table(data.frame(mortality_table_state_sex))
For the odds ratio stratified by state level is:
or_mortality_state_sex<-epi.2by2(dat = mortality_table_state_sex,
method = "cohort.count",
conf.level = 0.95,
units = 100,
outcome = "as.columns")
or_mortality_state_sex
Outcome + Outcome - Total Inc risk *
Exposed + 191155 422334 613489 31.2
Exposed - 241256 491396 732652 32.9
Total 432411 913730 1346141 32.1
Odds
Exposed + 0.453
Exposed - 0.491
Total 0.473
Point estimates and 95% CIs:
-------------------------------------------------------------------
Inc risk ratio (crude) 0.95 (0.94, 0.95)
Inc risk ratio (M-H) 0.95 (0.94, 0.95)
Inc risk ratio (crude:M-H) 1.00
Odds ratio (crude) 0.92 (0.92, 0.93)
Odds ratio (M-H) 0.92 (0.92, 0.93)
Odds ratio (crude:M-H) 1.00
Attrib risk (crude) * -1.77 (-1.93, -1.61)
Attrib risk (M-H) * -1.73 (-1.89, -1.57)
Attrib risk (crude:M-H) 1.02
-------------------------------------------------------------------
M-H test of homogeneity of RRs: chi2(26) = 227.203 Pr>chi2 = <0.001
M-H test of homogeneity of ORs: chi2(26) = 195.584 Pr>chi2 = <0.001
Test that M-H adjusted OR = 1: chi2(26) = NA Pr>chi2 = NA
Wald confidence limits
M-H: Mantel-Haenszel; CI: confidence interval
* Outcomes per 100 population units
The odds ratio without accounting for a confounding is the same as for with the confounder, as in Age as an exposure, suggests that for Sex too as an exposure, is little confounding effects. Odds ratio by Mantel-Haenszel method, for Sex as an exposure of dying by a hospitalized SARI, when counting on state as a confounding, is 0.92 (95% CI: 0.91, 0.93) greater when the individual is a female than when is a male person.
We accounted the odds ratio for different tables, summarizing the possible outcomes when an individual is hospitalized by SARI in Brazil.
First, understood the effects of sex on the possible outcomes, we seen that females are little less associated to dying in this situation than males ones, the section 2.1.1 summarize the odds ratios calculated when controlling for sex, the odds of females dying if hospitalized by SARI is 0.92 (95% CI: 0.92, 0.92).
In the Section 2.1.2, we controlled by age, which we clustered the continuum variable as of, cases by being over 60 years old or younger (“<60 years | >=60 years”). The odds ratios is 0.26 (95% CI: 3.80, 3.86) times reduced of dying of SARI hospitalization when is below 60 years old compared when older than this.
Controlling for confounding on this analysis, we have to calculate the Odds Ratios by the Mantel-Haenszel method (in the output of epi.2by2, the Odds ratio (M-H)), which some up all over stratum, given the strata-specific OR.
We did 4 different ways to controlling for confounding, the first was to controlling the outcome with sex as an exposure and age as a confounding. This gave us the understanding that females have 0.92 (95% CI 1.17 to 1.18) times minor odds to dying when hospitalized by SARI. This was done in the Section 2.2.1.
The second controlling on estimating Odds Ratios, was to invert the last controlling, now age is an exposure and sex is the confounding, this is done because two confounding could act differently on the outcomes. After calculating we got that for people younger than 60 years has an 0.26 (95% CI 0.26 to 0.26) times minor odds to dying by SARI hospitalizations, when controlling for sex, or males over 60 years old are associated 3.87 (\(\frac{1}{0.26}\)) times more to death than females with less than 60 years Section 2.2.2.
The third Section 2.2.3 controlling we did was to control by race as a confounding, race plays a role of being a very stronger determinant of income and as consequences discriminate vulnerable than less vulnerable. For race as confounding, we always take the convention, Over the 5 strata of race, we saw the following, first race as a confounding for the association of age and outcome of a hospitalization Section 2.2.3.1. If an individual is hospitalized by SARI it will have 0.26 (95% CI: 0.26, 0.26) times minor odds to die if it is over 60 years old than less, after accounting the effect of confounding of race per strata. Looking in the Odds Ratio per strata, we see there is little difference between odds over and below 60 years, this suggests race is not a strong confounding. Or age is a very strong determinant to the outcome of dying or been discharged, when hospitalized.
race est lower upper
1 Branca 0.2529246 0.2496979 0.2561690
2 Parda 0.2709183 0.2673956 0.2745350
3 Preta 0.2944133 0.2843041 0.3048761
4 Amarela 0.2839731 0.2612965 0.3084096
5 Indígena 0.2445294 0.2080591 0.2869890
race_age_or_table %>%
arrange(race) %>%
ggplot(aes(y = race, x = est, xmin = lower, xmax = upper ))+
geom_pointrangeh(aes(col=race))+
geom_vline(xintercept = 0, linetype=2)+
labs(title = "Age exposure with Race as Confounding", x = "Odds Ratio % (95% CI)",
y= "Race", col = "Race")+
geom_errorbar(aes(xmin=lower, xmax=upper, col=race),width=0.25,cex=.15)+
theme_minimal()+
viridis::scale_color_viridis(discrete = T, option = "cividis")
Controlling for the sex as exposure and taking race as a confounding we find, Section 2.2.3.2, individuals hospitalized by SARI it will have 0.92 (95% CI: 0.91, 0.93) times reduced odds to die if it is females than males, after accounting the effect of confounding of race per strata.
race_sex_or_table<-cbind(race, or_mortality_raca_sexo$res$OR.strata.mle)
race_sex_or_table
race est lower upper
1 Branca 0.9220895 0.9117067 0.9326092
2 Parda 0.9111112 0.8998380 0.9224908
3 Preta 0.9627506 0.9314355 0.9951093
4 Amarela 0.8801963 0.8170297 0.9481397
5 Indígena 0.6639030 0.5684967 0.7748325
race_sex_or_table %>%
ggplot(aes(y = race, x = est, xmin = lower, xmax = upper ))+
geom_pointrangeh(aes(col=race))+
geom_vline(xintercept = 0, linetype=2)+
labs(title = "Sex exposure with Race as Confounding", x = "Odds Ratio % (95% CI)",
y= "Race", col = "Race")+
geom_errorbar(aes(xmin=lower, xmax=upper, col=race),width=0.15,cex=.25)+
theme_minimal()+
viridis::scale_color_viridis(discrete = T, option = "cividis")
Differently, from age as an exposure, for sex as an exposure we have a reduced odds to dying in a hospitalization which significantly different by race, females from indigenous race has a 0.65 (95% CI: 0.56, 0,76) times minor odds ratio of dying from hospitalization than males from indigenous people. For the other 4 races the odds ratio is almost the same, in this 4 particular stratum, only yellow people has an odds reduced for females than males less than 0.90, being 0.88 (95% CI: 0.81, 0.94).
Lastly, in the Section 2.2.4, we did the odds by each state level as a confounding to Age and Sex, access to public health is a crucial determinant to mortality as an outcome, state level information could add up to this. Brazil has a national public health system, which attend over the 100 millions of inhabitants, but its coverage over the different 27 federated units, 26 states and a federal district, varies greatly over the whole country.
The Section 2.2.4.1 is dedicated to understand how the state level could act as a confounding to the exposure of age, we found an over all odds of 0.26 (955 CI: 0.26, 0.26), suggesting state level has not much confounding effect on mortality due to age exposure, but we need to take a look in each odds ratio by state level.
states<-data.frame(unique(mortalily_data_state_age$sg_uf))
names(states)<-"states"
states<-states %>%
arrange(states)
state_age_or_table<-cbind(states, or_mortality_state_age$res$OR.strata.mle)
state_age_or_table
states est lower upper
1 AC 0.2704647 0.2307970 0.3165883
2 AL 0.2988984 0.2768834 0.3226483
3 AM 0.2310342 0.2204931 0.2420646
4 AP 0.1954192 0.1673533 0.2279950
5 BA 0.2849958 0.2737127 0.2966533
6 CE 0.2559986 0.2460446 0.2663269
7 DF 0.2241683 0.2118224 0.2371659
8 ES 0.2455986 0.2259829 0.2669188
9 GO 0.2888450 0.2773208 0.3007889
10 MA 0.2818900 0.2620944 0.3031030
11 MG 0.2889066 0.2815120 0.2965093
12 MS 0.2545189 0.2389452 0.2710364
13 MT 0.2793347 0.2582445 0.3020457
14 PA 0.2241160 0.2141609 0.2344207
15 PB 0.2615120 0.2459813 0.2779874
16 PE 0.2452977 0.2350635 0.2559338
17 PI 0.2781956 0.2564747 0.3016156
18 PR 0.2901070 0.2807628 0.2997468
[ reached 'max' / getOption("max.print") -- omitted 9 rows ]
state_age_or_table %>%
ggplot(aes(y = states, x = est, xmin = lower, xmax = upper ))+
geom_pointrangeh(aes(col=states))+
geom_vline(xintercept = 0, linetype=2)+
labs(title = "Age exposure with State as Confounding", x = "Odds Ratio % (95% CI)",
y= "States (initials)", col = "State")+
geom_errorbar(aes(xmin=lower, xmax=upper, col=states),width=0.5,cex=0.5)+
theme_minimal()+
viridis::scale_color_viridis(option = "cividis", discrete = T)
Two conclusions emerges from the graph, first as we hypothesized the odds to die due to SARI varies greatly from state to state, this as we suggests could be an effect of the diverse access and public health organization on each state. Secondly, the amount and in consequence the CIs, varies too greatly over states, this is could be a artifact of the notification systems, each state is responsible to report their own cases, and each state has particularities on this process, moreover, each has very different density and population size. The state of São Paulo is the most populous state in the country, and has the major urban and dense area of the country, so probably will have a statistics over cases and its status, dying or being discharged, which is more credible than other states.
In the Section 2.2.4.2, we analyze the state as a confounding to sex as an exposure to die by a hospitalization of SARI, it has an over all odds ratio, accounting for state as a confounding, again, of 0.92 (95% CI: 0.92,0.92), suggesting state level is not a confounding of sex, in associating the outcome of hospitalization.
As before, we have to look on per strata odds ratio, to conclude if the over all odds ratio traduce it well.
state_sex_or_table<-cbind(states, or_mortality_state_sex$res$OR.strata.mle)
state_sex_or_table
states est lower upper
1 AC 0.8693714 0.7469155 1.0115037
2 AL 0.9547506 0.8880005 1.0264913
3 AM 0.8594666 0.8224407 0.8981533
4 AP 0.6761162 0.5844991 0.7816720
5 BA 0.9485854 0.9137356 0.9848164
6 CE 0.9739188 0.9389846 1.0101549
7 DF 0.8659538 0.8219074 0.9123259
8 ES 1.0221823 0.9456547 1.1049158
9 GO 0.8940172 0.8603474 0.9289645
10 MA 0.8842743 0.8253080 0.9474616
11 MG 0.9158468 0.8950752 0.9370595
12 MS 0.9639660 0.9090101 1.0222431
13 MT 0.7835707 0.7261128 0.8454303
14 PA 0.8234529 0.7892897 0.8590935
15 PB 0.9322103 0.8805127 0.9868962
16 PE 0.8849538 0.8510561 0.9201922
17 PI 0.8374793 0.7776482 0.9018198
18 PR 0.8659140 0.8403275 0.8922637
[ reached 'max' / getOption("max.print") -- omitted 9 rows ]
state_sex_or_table %>%
ggplot(aes(y = states, x = est, xmin = lower, xmax = upper ))+
geom_pointrangeh(aes(col=states))+
geom_vline(xintercept = 0, linetype=2)+
labs(title = "Sex exposure with State as Confounding", x = "Odds Ratio % (95% CI)",
y= "States (initials)", col = "State")+
geom_errorbar(aes(xmin=lower, xmax=upper, col=states),width=0.5,cex=0.5)+
theme_minimal()+
viridis::scale_color_viridis(option = "cividis", discrete = T)
Finally, by this we saw there are multiple factors of risk and multiple confounding effects on analyzing outcome due to SARI hospitalizations, sex, age, race and state. Those variables can give proxies to very different realities, as well a variety of prevalence. The sort of factors helps explaining the diversity of possible association to outcomes of being discharged or die in a hospitalization of SARI, a more complicated adding is the pandemic scenario in which the data were collected. There were situations of collapse of the public health system, but even in this case, the outcome could greatly vary over, sex, age, race and state.
The Covid-19 pandemic is a complex phenom and has pose to public health challenges never seen before. Understanding which factors contributes more to surviving or dying can give a more accurate drawing of public health policies.