# Pacotes
#devtools::install_github("renkun-ken/formattable")

library(tidyverse)
# library(formattable)


porcent <- function(x){
  y = paste(round(x*100,2), '%')
  return(y)
}

Análise de casos do Covid-19 no estado de Mato Grosso (MT) durante o ano de 2021

Introdução

A Covid-19 é uma infecção respiratória aguda causada pelo coronavírus SARS-CoV-2. É uma doença potencialmente grave, caracterizada por sua elevada transmissibilidade e distribuição em escala global, o que gerou impactos significativos nos sistemas de saúde e na sociedade como um todo.

O presente relatório tem como objetivo apresentar uma análise exploratória descritiva e estatística dos casos notificados de Covid-19 no estado de Mato Grosso (MT) durante o ano de 2021. Através do tratamento e cruzamento de dados demográficos (como idade e sexo), fatores clínicos (comorbidades) e informações ocupacionais (como profissionais da saúde e da segurança), busca-se compreender o perfil epidemiológico da doença e identificar possíveis fatores de risco associados à hospitalização e aos desfechos clínicos (óbito ou recuperação).

Todos os dados utilizados neste estudo estatístico são de domínio público e foram coletados a partir de bases oficiais.

Fonte de Dados: Secretaria de Estado de Saúde de Mato Grosso

Conjunto de dados:

dados_corona_total <- readxl::read_excel("./dados_corona.xlsx")

glimpse(dados_corona_total)
## Rows: 579,663
## Columns: 25
## $ CodigoIBGERegiao      <chr> "5101", "5101", "5101", "5101", "5101", "5101", …
## $ RegiaoSaude           <chr> "Médio Araguaia", "Médio Araguaia", "Médio Aragu…
## $ CodigoIBGE            <chr> "510706", "510706", "510706", "510706", "510706"…
## $ Municipio             <chr> "Querência", "Querência", "Querência", "Querênci…
## $ DataNotificacao       <chr> "08/07/2020 00:00:00", "07/06/2020 00:00:00", "0…
## $ idade                 <chr> "68", "42", "67", "38", "7", "40", "7", "26", "3…
## $ Sexo                  <chr> "Masculino", "Masculino", "Masculino", "Feminino…
## $ RacaCor               <chr> "Branca", NA, NA, "Parda", "Parda", "Parda", "Br…
## $ ProfissionalSaude     <chr> "Não", NA, NA, "Não", "Não", "Não", "Não", NA, N…
## $ ProfissionalSeguranca <chr> "Não", NA, NA, "Não", "Não", "Não", "Não", NA, N…
## $ DataInicioSintomas    <chr> "29/06/2020 00:00:00", "02/06/2020 00:00:00", "0…
## $ Comorbidade           <chr> "Sim", "Não", "Sim", "Não", "Sim", "Não", "Não",…
## $ Cardiovascular        <chr> NA, "Não", "Sim", "Não", "Sim", "Não", "Não", "N…
## $ Diabetes              <chr> "Sim", "Não", "Não", "Não", "Não", "Não", "Não",…
## $ Hipertensao           <chr> "Sim", "Não", "Não", "Não", "Não", "Não", "Não",…
## $ Neoplasia             <chr> NA, "Não", "Não", "Não", "Não", "Não", "Não", "N…
## $ Obesidade             <chr> NA, "Não", "Não", "Não", "Não", "Não", "Não", "N…
## $ Pulmonar              <chr> NA, "Não", "Não", "Não", "Não", "Não", "Não", "N…
## $ Situacao              <chr> "Óbito", "Recuperado", "Recuperado", "Recuperado…
## $ Hospitalizado         <chr> "Não", "Não", "Não", "Não", "Não", "Não", "Não",…
## $ FechamentoCaso        <chr> "Confirmado Clínico", "Confirmado Laboratorial",…
## $ DataModificacaoObito  <chr> "25/07/2020 10:19:41", NA, NA, NA, NA, NA, NA, N…
## $ DataEncerramentoCaso  <chr> "21/07/2020 00:00:00", "19/06/2020 00:00:00", "2…
## $ Gestante              <chr> "Não", NA, NA, "Não", "Não", "Não", "Não", NA, N…
## $ Seq_Row_Number        <chr> "1", "2", "3", "4", "5", "6", "7", "8", "9", "10…
dados_corona <- dados_corona_total %>% drop_na(-DataModificacaoObito)
# Ajuste dos dados
dados_corona_total <- dados_corona_total %>% 
  mutate(idade = as.numeric(idade),
         ProfissionalSeguranca = ifelse(ProfissionalSeguranca == 'N?o', 'Não',ProfissionalSeguranca),
         ProfissionalSaude = ifelse(ProfissionalSaude == 'N?o', 'Não',ProfissionalSaude))

Situação:

No ano de 2021 foram registrados 579.663 casos de covid-19 em Mato Grosso. Desses casos, 94,5% dos infectados foram recuperados, 2,4% morreram por causa da doença.

# Situação, total de obitos

total <- nrow(dados_corona_total)

a <- dados_corona_total %>%
  group_by(Situacao) %>%
  summarise(n = n(), '%' = porcent(n/total)) 

DT::datatable(a, options = list(dom = 't'), filter = "none")

Analise por Idade:

Tabela 1: Numero de casos e óbitos por Faixa Etária

######## Analise por idade  ########

morte <- dados_corona_total %>% filter(Situacao == "Óbito", !is.null(idade))


morte_idade <- 
  morte %>% 
  filter(!is.null(idade)) %>% 
  select(idade) %>% 
  mutate(FaixaEtaria = ifelse(idade >= 0 & idade <= 20, "0 a 20",
                       ifelse(idade > 20 & idade <= 40, "21 a 40",
                       ifelse(idade > 40 & idade <= 60, "41 a 60",
                       ifelse(idade > 60 & idade <= 80, "61 a 80", 
                             "mais de 80"))))) %>% 
            group_by(FaixaEtaria) %>% 
            summarise(n_obitos = n(), '%' = porcent(n()/nrow(morte)))

idade_casos <- 
  dados_corona_total %>% 
  filter(!is.null(idade)) %>% 
  select(idade) %>% 
  mutate(FaixaEtaria = ifelse(idade >= 0 & idade <= 20, "0 a 20",
                       ifelse(idade > 20 & idade <= 40, "21 a 40",
                       ifelse(idade > 40 & idade <= 60, "41 a 60",
                       ifelse(idade > 60 & idade <= 80, "61 a 80", 
                        "mais de 80"))))) %>% 
            group_by(FaixaEtaria) %>% 
            summarise(n_casos = n(), '% ' = porcent(n()/total))

idade <- idade_casos %>% left_join(morte_idade, by = "FaixaEtaria")

idade1 <- idade %>% rename('nº de casos' = n_casos,
                           'nº de óbitos' =  n_obitos)

DT::datatable(idade1, options = list(dom = 't'), filter = "none")
# Histograma de idade

par(mfrow=c(1, 2))

hist(dados_corona_total$idade, 
     xlim = c(0,100),
     xlab = "Idade", 
     ylab = "Frequencia",
     main = "Histograma de Casos por Idade")

hist(morte$idade, 
     xlim = c(0,100),
     xlab = "Idade", 
     ylab = "Frequencia",
     main = "Histograma de óbitos por Idade")

Tabela 2: Porcentagem relativa de mortes por quantidade de casos entre as Faixas Etarias

a <- idade %>% mutate(n = porcent(n_obitos/n_casos)) %>%
  select(FaixaEtaria, n) %>% 
  rename("% Obitos" = n)
  

DT::datatable(a, options = list(dom = 't'), filter = "none", width = "50%")

Observa-se um aumento da porcentagem de óbitos causados pelo covid conforme a idade aumenta. A maior porcentagem foi para pessoas com mais de 80 anos, sendo 26,4% dos infectados morreram. Enquanto que para menores de 20 anos a porcentagem foi de 0,08%

Comorbidades

Tabela 3: Número Comorbidades por Sexo

######## Analise por comorbidade #######

# Porcentagem de comorbidade por sexo
# 
# dados_corona %>%
#   group_by(Sexo, Comorbidade) %>% 
#   count() %>% spread(Sexo,n) %>% 
#   arrange(desc(Comorbidade))

# Numero de casos registrados para cada tipo de comorbidade

#names(dados_corona)[13:18] #Comorbidades


comorbidade <- 
  dados_corona_total %>%
  filter(Cardiovascular == 'Sim') %>% 
  group_by(Sexo, Cardiovascular) %>% 
  count() %>% 
  spread(Cardiovascular, n) %>% 
  rename(Cardiovascular = Sim) 


comorbidade <- 
dados_corona_total %>%
  filter(Hipertensao == 'Sim') %>% 
  group_by(Sexo, Hipertensao) %>% 
  count() %>% 
  spread(Hipertensao, n) %>% 
  rename(Hipertensao = Sim) %>% 
  left_join(comorbidade)

comorbidade <- 
dados_corona_total %>%
  filter(Diabetes == 'Sim') %>% 
  group_by(Sexo, Diabetes) %>% 
  count() %>% 
  spread(Diabetes, n) %>% 
  rename(Diabetes = Sim) %>% 
  left_join(comorbidade) 

comorbidade <- 
dados_corona_total %>%
  filter(Neoplasia == 'Sim') %>% 
  group_by(Sexo, Neoplasia) %>%
  count()  %>% 
  spread(Neoplasia, n) %>% 
  rename(Neoplasia = Sim) %>% 
  left_join(comorbidade)

comorbidade <- 
dados_corona_total %>%
  filter(Obesidade == 'Sim') %>% 
  group_by(Sexo,  Obesidade) %>% 
  count() %>% 
  spread(Obesidade, n) %>% 
  rename(Obesidade = Sim) %>% 
  left_join(comorbidade) 

comorbidade <- 
  dados_corona_total %>%
  filter(Pulmonar == 'Sim') %>% 
  group_by(Sexo,  Pulmonar) %>% 
  count() %>% 
  spread(Pulmonar, n) %>% 
  rename(Pulmonar = Sim) %>% 
  left_join(comorbidade) 

DT::datatable(comorbidade, options = list(dom = 't'), filter = "none")

Observa-se na Tabela 3 as principais comorbidades relatadas pelos pacientes, divididas por sexo. Condições pré-existentes como Hipertensão, problemas Cardiovasculares e Diabetes figuram entre as mais frequentes, reforçando o impacto dessas doenças como fatores de risco potenciais no acompanhamento e agravamento dos casos de Covid-19.

Teste Qui-quadrado Relação Gestante Hospitalização

teste <- dados_corona_total %>%
  filter(!is.na(Hospitalizado) &!is.na(Gestante)) %>% 
  group_by(Gestante, Hospitalizado) %>%
  count() %>% spread(Gestante, n) %>% 
  rename( Gestante = Sim, 
          NaoGestante = Não)
DT::datatable(teste, options = list(dom = 't'), filter = "none")
chisq.test(teste[,2:3]) |> suppressWarnings()
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  teste[, 2:3]
## X-squared = 58.508, df = 1, p-value = 2.024e-14

Através do teste Qui-quadrado, avaliamos a associação entre ser gestante e a necessidade de hospitalização. Um p-valor menor que o nível de significância (usualmente 0,05) indica que há evidências estatísticas para rejeitar a hipótese de independência, sugerindo que o estado gestacional pode estar associado à taxa de hospitalização.

Tabelas Cruzadas

Sexo x Situação

# Sexo x Situaçao x Hospitaliza??o
dados_corona_total %>%
  filter(!is.na(Situacao)) %>%
  group_by(Sexo,  Situacao) %>%
  count() %>%  spread(Sexo, n) %>%
  DT::datatable(options = list(dom = 't'), filter = "none") 
teste_sexo_sit <- dados_corona_total %>%
  filter(!is.na(Situacao) & !is.na(Sexo)) %>%
  select(Sexo, Situacao) %>% 
  table()
chisq.test(teste_sexo_sit) |> suppressWarnings()
## 
##  Pearson's Chi-squared test
## 
## data:  teste_sexo_sit
## X-squared = 637.79, df = 3, p-value < 2.2e-16

O cruzamento acima permite comparar o desfecho dos casos (Situação) entre os sexos feminino e masculino. A análise dessa distribuição evidencia se a letalidade ou a taxa de recuperação afetaram desproporcionalmente algum dos grupos. O teste Qui-quadrado adicionado verifica se existe associação estatisticamente significativa entre o sexo do paciente e a sua situação clínica, sendo que um p-valor menor que o nível de significância (0,05) indica dependência entre essas variáveis.

Profissional da Segurança x Hospitalização

dados_corona_total %>%
  filter(!is.na(Hospitalizado) & !is.na(ProfissionalSeguranca)) %>% 
  group_by(ProfissionalSeguranca, Hospitalizado) %>%
  count() %>%  spread(ProfissionalSeguranca, n) %>%
  arrange(desc(Hospitalizado)) %>%
  DT::datatable(options = list(dom = 't'), filter = "none")
teste_seguranca_hosp <- dados_corona_total %>%
  filter(!is.na(Hospitalizado) & !is.na(ProfissionalSeguranca)) %>% 
  select(ProfissionalSeguranca, Hospitalizado) %>% 
  table()
chisq.test(teste_seguranca_hosp) |> suppressWarnings()
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  teste_seguranca_hosp
## X-squared = 0.47794, df = 1, p-value = 0.4894

Esta tabela analisa a frequência de hospitalização entre os profissionais da segurança. A comparação evidencia se essa categoria ocupacional, possivelmente mais exposta em suas atividades, demandou um padrão distinto de internações. Através do teste Qui-quadrado, avaliamos estatisticamente essa relação: um p-valor significativo sugere que pertencer às forças de segurança altera significativamente a probabilidade de hospitalização.

Profissional da Saúde x Situação

dados_corona_total %>%
  filter(!is.na(Situacao) & !is.na(ProfissionalSaude)) %>% 
  group_by(ProfissionalSaude, Situacao) %>%
  count() %>%  spread(ProfissionalSaude, n) %>%
  arrange(desc(Situacao)) %>%
  DT::datatable(options = list(dom = 't'), filter = "none")
teste_saude_sit <- dados_corona_total %>%
  filter(!is.na(Situacao) & !is.na(ProfissionalSaude)) %>% 
  select(ProfissionalSaude, Situacao) %>% 
  table()
chisq.test(teste_saude_sit) |> suppressWarnings()
## 
##  Pearson's Chi-squared test
## 
## data:  teste_saude_sit
## X-squared = 143.91, df = 3, p-value < 2.2e-16

A análise referente aos profissionais da saúde busca identificar o desfecho clínico (Situação) entre os indivíduos dessa área. Como linha de frente no combate à pandemia, essa classe possui alto nível de exposição. Através desta tabela, é possível verificar se as proporções de óbitos e recuperados diferem daquelas observadas na população em geral. O teste Qui-quadrado incluído confirma estatisticamente se a diferença observada no desfecho clínico dos profissionais da saúde é significativa em relação aos demais pacientes (p-valor < 0,05 indica dependência).

Conclusão

Através desta análise descritiva e estatística dos casos de Covid-19 no Mato Grosso durante o ano de 2021, foi possível observar padrões claros no perfil epidemiológico da doença. Destaca-se a forte correlação entre a letalidade do vírus e a idade, evidenciando a extrema vulnerabilidade das faixas etárias mais avançadas, especialmente pacientes acima de 80 anos, cuja taxa de letalidade se mostrou significativamente mais alta em comparação aos mais jovens.

Ademais, condições clínicas pré-existentes, notadamente Hipertensão, doenças Cardiovasculares e Diabetes, mostraram-se frequentes entre os infectados, reforçando o impacto direto das comorbidades como possíveis fatores de risco para o agravamento do quadro clínico.

Por fim, os cruzamentos e testes estatísticos (Qui-quadrado) permitiram avaliar de forma objetiva se há dependência entre os desfechos (recuperação, óbito e hospitalização) e grupos específicos da sociedade, tais como gestantes, profissionais da segurança, profissionais da saúde e as variações entre os sexos. Estes insights reforçam a importância da análise de dados na saúde pública para compreender as disparidades de risco, orientar ações de prevenção, monitoramento e otimização de recursos para as parcelas mais afetadas da população.