1 Introdução

1.1 Declaração do Problema e Relevância

A pandemia de COVID-19 impôs uma pressão sem precedentes sobre os sistemas de saúde globais. No Recife, uma metrópole com alta densidade demográfica e profundas desigualdades sociais, o vírus não afetou a população de maneira uniforme. O problema central abordado neste relatório é a heterogeneidade da gravidade clínica: por que determinados perfis demográficos e clínicos evoluíram para óbito ou internação em UTI, enquanto outros apresentaram quadros leves?

Compreender essas nuances é vital. Para a gestão pública, não basta saber o número total de infectados; é preciso identificar quem corre mais risco e onde esses casos estão concentrados. A falta de clareza sobre esses padrões pode levar a alocações ineficientes de leitos de UTI e falhas nas estratégias de prevenção focada.

1.2 Dados e Metodologia

Para investigar esse cenário, utiliza-se a base de dados obtidos no Portal de Dados Abertos da Prefeitura do Recife. O conjunto de dados específico refere-se aos casos notificados de Síndrome Respiratória Aguda Grave (SRAG), incluindo casos suspeitos e confirmados de COVID-19. Os dados brutos, provenientes dos sistemas de vigilância epidemiológica do Recife, contêm informações demográficas, clínicas (sintomas e comorbidades) e espaciais (distritos sanitários).

A metodologia empregada segue o pipeline de Ciência de Dados:

  1. Engenharia de Dados: Tratamento de valores ausentes, categorização de faixas etárias e criação de flags booleanas para sintomas e comorbidades.
  2. Análise Exploratória (EDA): Visualização da distribuição temporal e espacial dos casos para identificação de padrões.
  3. Inferência Estatística: Aplicação de testes de hipótese para validar associações entre variáveis.

1.3 Abordagem Técnica Proposta

A abordagem vai além da contagem descritiva. Para responder se fatores como raça, idade ou comorbidades influenciam estatisticamente o desfecho clínico (Grave vs. Não Grave), adota-se técnicas de inferência estatística rigorosas utilizando a linguagem R:

  • Teste Qui-Quadrado e Exato de Fisher (com Simulação de Monte Carlo): Utilizados para avaliar a dependência entre variáveis categóricas (ex: presença de comorbidade e óbito), contornando limitações computacionais típicas de grandes volumes de dados.
  • Teste de Wilcoxon/Mann-Whitney: Utilizado para comparar distribuições de variáveis numéricas (como idade) entre grupos com diferentes desfechos clínicos, visto que os dados não seguem necessariamente uma distribuição normal.
  • Mapeamento de Sintomas: Uso de expressões regulares (regex) para estruturar campos de texto livre e identificar a prevalência de sintomas respiratórios e sistêmicos.

1.4 Valor para a Tomada de Decisão

Os resultados desta análise oferecem insumos diretos para os gestores de saúde do município (os “clientes” potenciais desta análise). Ao identificar os distritos sanitários mais afetados, quantificar o risco relativo (Odds Ratio) associado a comorbidades específicas e mapear disparidades de gravidade por raça e idade, o relatório permite o aprimoramento dos protocolos de triagem nas unidades de pronto atendimento e o direcionamento mais assertivo de recursos hospitalares para as populações mais vulneráveis.

1.5 Perguntas de Pesquisa

As análises técnicas foram estruturadas para responder às seguintes questões norteadoras:

  1. Como a distribuição de casos notificados varia por sexo e faixa etária?
  2. Qual o perfil de sintomas distingue os casos confirmados dos descartados?
  3. Há evidência estatística de que a evolução clínica (gravidade) está associada à idade, raça ou comorbidades?
  4. Como os casos se distribuíram espacialmente pelos distritos sanitários do Recife ao longo do tempo?

2 Pacotes Requeridos

Para garantir a reprodutibilidade desta análise, todos os pacotes necessários são carregados no início do documento. A tabela abaixo detalha a função de cada biblioteca no contexto do tratamento e visualização dos dados de COVID-19.

Biblioteca Propósito na Análise
readr Importação eficiente dos dados brutos (arquivo CSV) com controle de tipos de variáveis e codificação.
dplyr Manipulação e transformação de dados (filtragem, seleção, criação de novas colunas e sumarização estatística).
tidyr Organização dos dados (“Tidy Data”), incluindo tratamento de valores ausentes (NA) e reestruturação de tabelas.
ggplot2 Criação da camada visual e gráficos (barras, linhas, boxplots) para a análise exploratória.
lubridate Manipulação avançada de datas, permitindo cálculos de tempo de internação e extração de semanas epidemiológicas.
stringr Processamento de texto e expressões regulares (Regex), essencial para minerar os campos de sintomas e comorbidades.
forcats Tratamento de variáveis categóricas (fatores), útil para reordenar níveis em gráficos e agrupar categorias menores.

3 Dados e Metodologia de Tratamento

3.1 Fonte dos Dados

Os dados utilizados neste relatório foram obtidos no Portal de Dados Abertos da Prefeitura do Recife. O conjunto de dados específico refere-se aos casos notificados de Síndrome Respiratória Aguda Grave (SRAG), incluindo casos suspeitos e confirmados de COVID-19.

3.2 Descrição dos Dados Originais

O conjunto de dados original tem como propósito a vigilância epidemiológica. Ele registra pacientes atendidos na rede de saúde do Recife que apresentaram sintomas respiratórios graves.

  • Coleta: As notificações são inseridas pelas unidades de saúde no momento do atendimento ou internação.
  • Peculiaridades e Desafios:
    • Texto Livre: Variáveis cruciais como sintomas e doencas_preexistentes são registradas em campo aberto de texto, contendo variações de grafia (ex: “Dispneia”, “falta de ar”) e múltiplos valores na mesma célula.
    • Valores Ausentes: Diversas colunas apresentam dados faltantes ou preenchidos como “Ignorado”, exigindo tratamento para não enviesar as proporções estatísticas.
    • Datas: As datas vêm formatadas como texto e necessitam de conversão para análises temporais (cálculo de tempo de internação e semanas epidemiológicas).

3.3 Importação e Limpeza de Dados

Abaixo, detalha-se o pipeline de processamento realizado no R. As etapas de limpeza seguem uma ordem lógica para transformar dados brutos em informações analíticas:

  1. Tipagem: Conversão de colunas de texto para datas (Date) e fatores (Factor) para permitir ordenação e cálculos.
  2. Engenharia de Sintomas (Regex): Como os sintomas estavam aglomerados em uma única string, utilizamos Expressões Regulares para criar colunas binárias (TRUE/FALSE) para sintomas específicos (Febre, Tosse, Dispneia).
  3. Categorização:
    • Criação de faixas etárias (decadais) para facilitar a visualização demográfica.
    • Simplificação da variável evolução em duas categorias macro: “Grave” (Óbito/UTI) e “Não Grave” (Cura/Alta/Isolamento), essencial para os testes estatísticos.
dados <- dados_brutos %>%
  mutate(
    # Conversão de Datas
    data_notificacao = as.Date(data_notificacao),
    data_inicio_sintomas = as.Date(data_inicio_sintomas),
    data_obito = as.Date(data_obito, format = "%Y-%m-%d"),
    idade = as.numeric(idade),
    
    # Tratamento de Fatores e NAs explícitos
    sexo = fct_explicit_na(as.factor(sexo), na_level = "Ignorado"),
    raca = fct_explicit_na(as.factor(raca), na_level = "Ignorado"),
    distrito_sanitario = as.factor(distrito_sanitario),
    
    # Criação de Faixas Etárias
    faixa_etaria = cut(
      idade,
      breaks = c(0, 9, 19, 29, 39, 49, 59, 69, 79, Inf),
      labels = c("0-9", "10-19", "20-29", "30-39", "40-49", 
                 "50-59", "60-69", "70-79", "80+"),
      include.lowest = TRUE
    ),

    # Tratamento de Strings (Sintomas e Comorbidades)
    sintomas = replace_na(sintomas, ""),
    doencas_preexistentes = replace_na(doencas_preexistentes, ""),
    
    # Engenharia de Sintomas (Extração Binária)
    febre = str_detect(sintomas, regex("Febre", ignore_case = TRUE)),
    tosse = str_detect(sintomas, regex("Tosse", ignore_case = TRUE)),
    dispneia = str_detect(sintomas, regex("Dispneia|Saturação|Desconforto", ignore_case = TRUE)),
    
    # Criação das variáveis compostas que faltavam
    sintomas_respiratorios = febre | tosse | dispneia,
    sintomas_count = str_count(sintomas, ",") + 1,
    
    # Identificação de Comorbidades (Flag Sim/Não)
    tem_comorbidade = case_when(
      str_length(str_trim(doencas_preexistentes)) > 0 ~ TRUE,
      TRUE ~ FALSE
    ),

    # Simplificação da Variável Resposta (Evolução)
    evolucao_txt = toupper(replace_na(as.character(evolucao), "")),
    evolucao_categoria = case_when(
      str_detect(evolucao_txt, "UTI|ÓBITO|OBITO") ~ "Grave",
      TRUE ~ "Não Grave"
    ),

    # Variáveis Temporais
    semana_epi = floor_date(data_notificacao, unit = "week")
  )

3.4 Visualização da Estrutura Final

Após o processamento, o conjunto de dados (dados) encontra-se estruturado e pronto para análise. Abaixo apresenta-se uma visão condensada das variáveis processadas e seus tipos.

Variável Tipo Descrição/Exemplo
Identificação e Localização
data_notificacao Date Data do registro (Ex: 2020-05-30)
municipio_residencia Chr Município do paciente (Ex: Recife)
bairro Chr Bairro de residência (Ex: SAN MARTIN)
distrito_sanitario Factor Região de saúde (Ex: V, II, III)
Demografia
sexo Factor Masculino / Feminino
idade Num Idade em anos (Ex: 53)
faixa_etaria Factor Agrupamento decimal (Ex: 50-59)
raca Factor Cor autodeclarada (Ex: Branca, Parda)
etnia Logical (Geralmente NA para não indígenas)
Aspectos Clínicos
data_inicio_sintomas Date Início do quadro clínico
sintomas Chr Texto livre original (Ex: Febre, Tosse…)
sintomas_count Num Quantidade total de sintomas relatados
doencas_preexistentes Chr Texto livre de comorbidades
tem_comorbidade Logical Indicador se possui comorbidade (TRUE/FALSE)
Sintomas Específicos (Flags)
febre Logical Indicador de febre
tosse Logical Indicador de tosse
dispneia Logical Indicador de falta de ar/desconforto
sintomas_respiratorios Logical Combinação de Febre, Tosse ou Dispneia
Evolução e Desfecho
classificacao_final Chr CONFIRMADO, DESCARTADO, etc.
evolucao Chr Texto original da evolução (Ex: ALTA, ÓBITO)
evolucao_categoria Chr Categoria simplificada (Grave / Não Grave)
data_obito Date Data do óbito (se houver)
semana_epi Date Semana epidemiológica da notificação

3.5 Dicionário de Variáveis Processadas

Abaixo apresenta-se o resumo consolidado das principais variáveis que serão utilizadas nas análises subsequentes:

Variável Tipo Descrição
data_notificacao Date Data em que o caso foi registrado no sistema de vigilância.
sexo Factor Sexo biológico do paciente (Masculino/Feminino/Ignorado).
faixa_etaria Factor Idade agrupada em decênios (0-9, 10-19, etc.) para análise demográfica.
raca Factor Autodeclaração de raça/cor (Parda, Branca, Preta, Amarela, Indígena).
evolucao_categoria Char Variável Alvo. Classificação binária do desfecho: “Grave” (Óbito/UTI) ou “Não Grave”.
sintomas_* Logical Conjunto de colunas booleanas (febre, tosse, dispneia) indicando presença do sintoma.
tem_comorbidade Logical Indicador booleano se o paciente possuía alguma doença pré-existente registrada.
distrito_sanitario Factor Região administrativa de saúde onde reside o paciente (I a VIII).

4 Análise exploratória dos dados

4.1 Distribuição de casos por sexo e faixa etária

Contextualização: A literatura médica global sobre a COVID-19 indica padrões distintos de infecção e gravidade relacionados ao sexo e à idade. Homens e idosos frequentemente apresentam piores desfechos clínicos. Nesta seção, investiga-se se esses padrões se repetem nos dados de notificações do Recife. O objetivo é compreender não apenas o volume absoluto, mas a proporção relativa entre sexos dentro de cada faixa etária para casos confirmados e descartados.

Metodologia Visual: Para a visualização gráfica, os dados foram agrupados por classificação final, faixa etária e sexo. Calculou-se a frequência relativa (porcentagem) de homens e mulheres dentro de cada decênio de vida. Tal abordagem permite comparar se há predominância de um sexo específico em determinadas idades, independentemente do tamanho total da população daquela faixa etária.

p1 <- dados %>%
  filter(!is.na(faixa_etaria)) %>% # Remoção de registros sem idade definida
  group_by(classificacao_final, faixa_etaria, sexo) %>%
  summarise(n = n(), .groups = "drop") %>%
  group_by(classificacao_final, faixa_etaria) %>%
  mutate(prop = n / sum(n)) %>% # Cálculo da proporção dentro do grupo de idade
  ggplot(aes(faixa_etaria, prop, fill = sexo)) +
  geom_col(position = "dodge") + # Barras lado a lado para comparação direta
  facet_wrap(~ classificacao_final) + # Separação dos gráficos por status do caso
  scale_y_continuous(labels = scales::percent) + # Formatação do eixo Y como porcentagem
  labs(
    title = "Distribuição de Sexo por Faixa Etária e Classificação",
    subtitle = "Comparação proporcional entre sexos dentro de cada decênio",
    x = "Faixa Etária",
    y = "Proporção (%)",
    fill = "Sexo"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotação dos labels do eixo X

# Exibição do gráfico
p1

Além da inspeção visual, aplicou-se o Teste Qui-Quadrado de Pearson (\(\chi^2\)) para verificar se existe dependência estatística significativa entre o sexo do paciente e a classificação final do caso (Confirmado vs. Descartado, etc.).

A hipótese nula (\(H_0\)) assume que as variáveis são independentes (a proporção de sexos seria a mesma em todos os tipos de classificação). Um p-valor baixo (< 0.05) indica que a distribuição de sexos varia significativamente dependendo se o caso foi confirmado ou descartado.

tab_sexo_cl <- table(dados$sexo, dados$classificacao_final)
chisq_sexo_cl <- chisq.test(tab_sexo_cl)
chisq_sexo_cl_tidy <- broom::tidy(chisq_sexo_cl)
chisq_sexo_cl_tidy


chisq_sexo_cl$expected %>% summary()

Resultado do Teste Qui-Quadrado

statistic p.value parameter method
36.8 0.0000125 8 Pearson’s Chi-squared test

Resumo Estatístico

Estatística CONFIRMADO DESCARTADO EM ANÁLISE INCONCLUSIVO NÃO
Min. 0.978 0.8425 0.03651 0.143 0.0000549
1st Qu. 4349.714 3747.0929 162.37566 636.073 0.2441739
Median 8698.450 7493.3434 324.71480 1272.003 0.4882929
Mean 5938.000 5115.3333 221.66667 868.333 0.3333333
3rd Qu. 8906.511 7672.5788 332.48175 1302.428 0.4999726
Max. 9114.572 7851.8141 340.24869 1332.854 0.5116522

Com base nos resultados visuais e estatísticos apresentados, observa-se uma associação estatisticamente significativa entre o sexo e a classificação final do caso (\(\chi^2 = 36,8\); \(p < 0,001\)). Visualmente, nota-se flutuações nas proporções entre homens e mulheres ao longo das faixas etárias — com destaque para a maior prevalência relativa de mulheres na faixa de 80+ nos grupos Confirmado e Descartado. No entanto, a interpretação estatística requer cautela: o resumo dos valores esperados aponta mínimos muito abaixo de 5 (próximos a zero em categorias como “NÃO” e “NA”), o que viola os pressupostos ideais do teste Qui-Quadrado e sugere que a significância encontrada pode estar sendo influenciada pela escassez de dados nessas categorias marginais, embora a tendência geral de dependência entre as variáveis permaneça evidente.


4.2 Perfil de sintomas entre casos confirmados e descartados

Contextualização: A distinção clínica entre a COVID-19 e outras Síndromes Respiratórias Agudas Graves (SRAG) constituiu um dos maiores desafios durante o ano de 2020. Sintomas como febre, tosse e dispneia são comuns a diversas patologias respiratórias. Nesta seção, investiga-se a prevalência destes sinais clínicos para determinar se existe um padrão sintomático específico que diferencie estatisticamente os casos confirmados (teste positivo para COVID-19) daqueles descartados (negativos para COVID-19, mas notificados como SRAG).

Metodologia Analítica: Para esta análise, calculou-se a proporção (frequência relativa) da presença de febre, tosse e sintomas respiratórios combinados para cada classificação final. Adicionalmente, quantificou-se a média de sintomas relatados por paciente.

Para validar a hipótese de que a febre é um indicador discriminante da COVID-19 neste conjunto de dados, aplicou-se o Teste Qui-Quadrado de Pearson comparando exclusivamente os grupos “CONFIRMADO” e “DESCARTADO”. A tabela de contingência 2x2 fundamenta este teste, avaliando se a frequência de febre difere significativamente entre os dois grupos.

sintomas_tab <- dados %>%
  group_by(classificacao_final) %>%
  summarise(
    prop_febre = mean(febre, na.rm = TRUE),
    prop_tosse = mean(tosse, na.rm = TRUE),
    prop_dispneia = mean(dispneia, na.rm = TRUE), # Ajustado para variável correta
    media_qtd_sint = mean(sintomas_count, na.rm = TRUE),
    n = n()
  ) %>%
  arrange(desc(n))

knitr::kable(sintomas_tab, digits = 2, 
             col.names = c("Classificação", "Febre (%)", "Tosse (%)", 
                           "Dispneia (%)", "Média Sintomas", "Total Casos"),
             caption = "Prevalência de sintomas por desfecho do caso")

dados_filtro <- dados %>% 
  filter(classificacao_final %in% c("CONFIRMADO", "DESCARTADO")) %>%
  droplevels()

tab_febre_class <- table(dados_filtro$febre, dados_filtro$classificacao_final)

# Execução do Teste Qui-Quadrado 
chisq_febre <- suppressWarnings(chisq.test(tab_febre_class))

print(tab_febre_class)
broom::tidy(chisq_febre)

Tabela de Febre x Classificação

Febre CONFIRMADO DESCARTADO
FALSE 5905 6408
TRUE 11909 8938

Resultado do Teste Qui-Quadrado

statistic p.value parameter method
261 8.70e-59 1 Pearson’s Chi-squared test with Yates’ continuity correction

Com base na tabela de contingência e no teste estatístico aplicado, constata-se uma associação altamente significativa entre a presença de febre e a confirmação do diagnóstico (\(\chi^2 = 261\); \(p < 0,001\)). Observou-se que a febre esteve presente em 67% dos casos confirmados, contra 58% dos descartados, indicando que esse sintoma ocorre com maior frequência entre os indivíduos com diagnóstico confirmado de COVID-19. Embora ambos os grupos apresentem prevalências relativamente altas, a diferença entre eles é consistente e sustentada pelo grande tamanho amostral, sugerindo que a presença de febre contribui como um discriminador clínico entre casos confirmados e descartados. No entanto, apesar da significância estatística, a magnitude da diferença é moderada, indicando que a febre, isoladamente, não é suficiente para diferenciar de forma robusta os dois grupos, mas atua como um indicador adicional relevante no conjunto clínico.


4.3 Fatores Associados à Gravidade: Idade, Raça e Comorbidades

Esta seção investiga os determinantes clínicos e demográficos associados ao agravamento da doença. O desfecho de interesse é a variável evolucao_categoria, que distingue os casos entre “Grave” (Óbito/UTI) e “Não Grave”.

4.3.1 Influência da Idade na Evolução Clínica

Contextualização: A idade avançada é consistentemente citada na literatura como um dos principais preditores de mortalidade por COVID-19. Busca-se confirmar se, na população do Recife, a mediana de idade dos pacientes que evoluíram para quadros graves é estatisticamente superior à daqueles com quadros leves.

Metodologia Visual e Estatística: Para a comparação das distribuições de idade entre os dois grupos (Grave vs. Não Grave), optou-se pelo uso de Boxplots, que permitem visualizar a mediana e a dispersão dos dados. Dado que a distribuição de idade nem sempre segue uma curva normal, aplicou-se o Teste de Wilcoxon-Mann-Whitney (não paramétrico) para verificar se existe diferença significativa entre as medianas dos grupos.

dados_idade <- dados %>% 
  filter(!is.na(idade), !is.na(evolucao_categoria))

ggplot(dados_idade, aes(x = evolucao_categoria, y = idade, fill = evolucao_categoria)) +
  geom_boxplot(alpha = 0.7) +
  theme_minimal() +
  labs(title = "Distribuição de Idade por Gravidade da Evolução",
       x = "Evolução", y = "Idade") +
  theme(legend.position = "none")

# Teste Estatístico (Mann-Whitney/Wilcoxon)
teste_idade <- wilcox.test(idade ~ evolucao_categoria, data = dados_idade)

broom::tidy(teste_idade) %>% 
  mutate(p.value = format.pval(p.value, eps = .001))

Resultado do Teste Wilcoxon

statistic p.value method alternative
195403264 < 0.001 Wilcoxon rank sum test with continuity correction two.sided

A análise conjunta dos dados visuais e estatísticos confirma que a idade é um fator determinante para o agravamento da COVID-19. O boxplot evidencia uma clara distinção entre os grupos: a mediana de idade dos pacientes com evolução “Grave” é substancialmente superior (visualmente próxima aos 70 anos) em comparação à daqueles com evolução “Não Grave” (próxima aos 50 anos). Essa disparidade observada foi validada estatisticamente pelo teste de Wilcoxon-Mann-Whitney (\(p < 0,001\)), permitindo rejeitar a hipótese nula e concluir que existe uma diferença significativa na distribuição etária, onde a idade avançada está fortemente associada a desfechos clínicos desfavoráveis (óbito ou UTI).

4.3.2 Disparidades por Raça/Cor

Contextualização: Fatores socioeconômicos frequentemente se correlacionam com o acesso a serviços de saúde e a prevalência de comorbidades. Investiga-se aqui se a proporção de casos graves varia conforme a autodeclaração de raça/cor dos pacientes notificados.

Metodologia Visual e Estatística: Utilizou-se um gráfico de barras empilhadas normalizado (100%) para comparar a proporção relativa de gravidade dentro de cada grupo racial. Para a validação estatística, empregou-se o Teste Qui-Quadrado de Pearson com Simulação de Monte Carlo. A opção pela simulação (simulate.p.value = TRUE) foi adotada para garantir a robustez do cálculo do p-valor, contornando limitações computacionais e eventuais frequências baixas na tabela de contingência.

tab_raca <- table(dados_raca$raca, dados_raca$evolucao_categoria)

dados_raca %>%
  count(raca, evolucao_categoria) %>%
  group_by(raca) %>%
  mutate(prop = n / sum(n)) %>%
  ggplot(aes(x = raca, y = prop, fill = evolucao_categoria)) +
  geom_col() +
  scale_y_continuous(labels = scales::percent) +
  labs(title = "Proporção de Casos Graves por Raça/Cor",
       x = "Raça", y = "Proporção", fill = "Evolução") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Teste Estatístico 
teste_raca <- chisq.test(tab_raca, simulate.p.value = TRUE, B = 2000)

broom::tidy(teste_raca)

Resultado do Teste Qui-Quadrado (p-valor simulado)

statistic p.value parameter method
485 0.000500 NA Pearson’s Chi-squared test with simulated p-values

A integração da análise visual com o teste estatístico revela disparidades significativas na evolução clínica entre os diferentes grupos raciais (\(\chi^2 = 485\); \(p < 0,001\)). O gráfico de barras empilhadas evidencia que a proporção de casos classificados como “Grave” (representados pela cor vermelha) não é uniforme: ela aparenta ser proporcionalmente maior entre os pacientes autodeclarados Brancos e Pretos — onde a barra vermelha ocupa metade ou mais da coluna — em comparação aos pacientes Pardos, Amarelos e Indígenas, que apresentam predominância de desfechos não graves. O valor-p obtido via simulação de Monte Carlo confirma que essa variação visual não é aleatória, indicando que a raça/cor é uma variável associada ao perfil de gravidade da doença na população estudada.

4.3.3 Impacto das Comorbidades

Contextualização: A presença de doenças pré-existentes (como diabetes, hipertensão e cardiopatias) altera a resposta imunológica do paciente. O objetivo desta análise é quantificar o aumento do risco de um desfecho grave associado à presença de qualquer comorbidade registrada.

Metodologia Visual e Estatística: Os dados foram organizados em uma tabela de contingência 2x2. Aplicou-se o Teste Exato de Fisher, que é ideal para este tipo de matriz. Além do valor de p, este teste fornece a Odds Ratio (Razão de Chances), uma medida epidemiológica crucial que quantifica quantas vezes é maior a chance de agravamento em pacientes com comorbidades comparados aos saudáveis.

tab_comorb <- table(dados$tem_comorbidade, dados$evolucao_categoria)

print(addmargins(tab_comorb))

# Teste Estatístico
teste_comorb <- fisher.test(tab_comorb)

broom::tidy(teste_comorb)

Tabela Cruzada — Comorbidade x Evolução

Comorbidade Grave Não Grave Sum
FALSE 4348 18389 22737
TRUE 6371 7327 13698
Sum 10719 25716 36435

Resultado do Teste de Fisher

estimate p.value conf.low conf.high method alternative
0.272 0 0.259 0.285 Fisher’s Exact Test for Count Data two.sided

A análise estatística confirma inequivocamente que a presença de comorbidades é um fator de risco crítico para o agravamento da COVID-19 (\(p < 0,001\)). Os dados brutos mostram que a taxa de evolução grave é mais que o dobro no grupo vulnerável: 46,5% dos pacientes com comorbidades evoluíram para óbito ou UTI (6.371 de 13.698), contra apenas 19,1% no grupo sem doenças pré-existentes (4.348 de 22.737). A Odds Ratio (razão de chances) invertida (\(1 / 0,272 \approx 3,67\)) indica que a presença de comorbidades aumenta em aproximadamente 3,7 vezes a chance de um desfecho clínico grave em comparação aos pacientes saudáveis.


4.4 Distribuição temporal e espacial dos casos

4.4.1 Evolução Temporal das Notificações

Contextualização: Compreender a curva epidemiológica é fundamental para identificar as fases da pandemia (aceleração, pico e desaceleração). A análise temporal permite visualizar a pressão sobre o sistema de saúde em momentos críticos e avaliar a eficácia de medidas de isolamento social implementadas ao longo de 2020.

Metodologia Visual: A análise foi dividida em duas perspectivas: 1. Diária (Linha): Para observar a volatilidade e o fluxo contínuo de entrada de dados. 2. Semanal (Barras): Agrupamento por Semana Epidemiológica, padrão ouro na vigilância sanitária, que suaviza ruídos diários (como o efeito de fim de semana) e facilita a identificação de tendências.

# Série Temporal Diária
p_diario <- dados %>% 
  count(data_notificacao) %>% 
  ggplot(aes(x = data_notificacao, y = n)) +
  geom_line(color = "steelblue") +
  theme_minimal() +
  labs(
    title = "Fluxo Diário de Notificações",
    x = "Data da Notificação",
    y = "Novos Casos"
  )

# Série Temporal Semanal (Semana Epidemiológica)
p_semanal <- dados %>%
  filter(!is.na(semana_epi)) %>%
  ggplot(aes(x = semana_epi)) +
  geom_bar(fill = "darkblue", alpha = 0.8) +
  theme_minimal() +
  labs(
    title = "Curva Epidêmica por Semana Epidemiológica",
    x = "Semana Epidemiológica",
    y = "Total de Casos"
  )

p_diario

p_semanal

A análise temporal das notificações de COVID-19 permite caracterizar a dinâmica da epidemia no município, destacando os períodos de maior transmissão e a evolução da pressão sobre o sistema de saúde. A série diária evidencia forte volatilidade, marcada por um rápido crescimento no início da pandemia, culminando em um pico acentuado, seguido por uma tendência de declínio e oscilações menores nos meses subsequentes. Já a curva semanal, considerada padrão ouro na vigilância epidemiológica, suaviza ruídos como a subnotificação de fins de semana e revela de forma mais clara três ondas epidêmicas principais: a primeira e mais intensa no meio de 2020, a segunda entre o final de 2020 e início de 2021, e uma terceira elevação no início de 2022, possivelmente associada a novas variantes e flexibilizações sociais.

4.4.2 Casos por distrito sanitário

Contextualização: O Recife é dividido administrativamente em Distritos Sanitários (DS). A análise espacial busca identificar heterogeneidades na incidência de casos, apontando quais territórios sofreram maior impacto absoluto. Essa informação é vital para o planejamento de ações territoriais e alocação de recursos.

Metodologia Visual: Utilizou-se um gráfico de barras horizontais, onde os distritos foram reordenados (fct_reorder) do maior para o menor número de notificações. Essa ordenação facilita a comparação imediata entre as regiões mais e menos afetadas.

dados %>% 
  count(distrito_sanitario) %>% 
  ggplot(aes(fct_reorder(distrito_sanitario, n), n)) +
  geom_col(fill = "steelblue") +
  coord_flip() +
  labs(
    title = "Casos por distrito sanitário",
    x = "Distrito",
    y = "Casos"
  )

A distribuição dos casos de COVID-19 entre os distritos sanitários evidencia importantes desigualdades territoriais na dinâmica da pandemia. Observa-se que o Distrito IV concentra o maior número absoluto de casos, ultrapassando seis mil notificações, seguido pelos Distritos VI, V e II, que também apresentam cargas expressivas de doença. Esses territórios, em geral mais populosos e heterogêneos em termos socioeconômicos, tendem a reunir condições que favorecem a maior circulação viral, como densidade habitacional elevada e maior fluxo populacional. Por outro lado, distritos como I, VIII e III apresentam números mais baixos, o que pode refletir tanto diferenças reais de transmissão quanto possíveis variações na cobertura de testagem e vigilância local.


5 Conclusões

Neste relatório exploratório, analisamos padrões relevantes entre os casos notificados de COVID-19 no Recife:

O presente estudo permitiu traçar um perfil epidemiológico detalhado dos casos notificados de COVID-19 em Recife, respondendo às questões norteadoras através de análises estatísticas e espaciais robustas. Os resultados evidenciam que a pandemia não afetou a população de maneira uniforme, sendo modulada por fatores biológicos, clínicos e territoriais.

No que tange aos aspectos demográficos e sintomatológicos, confirmou-se uma associação estatisticamente significativa entre o sexo e a classificação final dos casos (\(p<0.001\)), com destaque para a maior prevalência relativa de mulheres nas faixas etárias mais avançadas (80+). Contudo, a interpretação desses dados exige prudência devido às limitações observadas nos pressupostos do teste qui-quadrado em categorias marginais. Clinicamente, a febre consolidou-se como um discriminador relevante, sendo significativamente mais frequente nos casos confirmados (\(67\%\)) do que nos descartados (\(58\%\)). Entretanto, a magnitude moderada dessa diferença sugere que a febre, isoladamente, é insuficiente para o diagnóstico diferencial, reforçando a importância da testagem laboratorial e da avaliação de um conjunto mais amplo de sintomas.

A investigação dos fatores determinantes para a gravidade clínica (evolução para óbito ou UTI) revelou padrões inequívocos de vulnerabilidade. A idade avançada mostrou-se um preditor determinante, com a mediana de idade dos casos graves (aprox. 70 anos) significativamente superior à dos casos não graves (\(p<0.001\)). Da mesma forma, a presença de comorbidades apresentou-se como um fator de risco crítico, elevando em aproximadamente \(3,7\) vezes a chance de um desfecho desfavorável (Odds Ratio \(\approx 3,67\)). Além disso, observaram-se disparidades raciais significativas (\(p<0,001\)), onde indivíduos autodeclarados brancos e pretos apresentaram proporções de agravamento superiores às de outros grupos, indicando a necessidade de investigar determinantes sociais de saúde subjacentes a esses dados.

Por fim, a análise espaço-temporal demonstrou a volatilidade da epidemia no município. A identificação de três ondas epidêmicas distintas, aliada à heterogeneidade espacial — com concentração expressiva de casos no Distrito Sanitário IV e menor incidência notificada nos Distritos I, VIII e III —, reflete a complexa dinâmica de transmissão viral em ambientes urbanos desiguais. Esses achados sugerem que fatores como densidade populacional e estrutura socioeconômica dos distritos podem ter influenciado tanto a disseminação do vírus quanto o acesso ao diagnóstico.

Em suma, este estudo reforça que a vigilância e o manejo da COVID-19 devem ser pautados na estratificação de risco. Políticas públicas e protocolos clínicos devem priorizar o monitoramento intensivo de idosos e portadores de comorbidades, além de considerar as especificidades territoriais para alocação eficiente de recursos em saúde nos momentos de maior pressão sobre o sistema.