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.
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:
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:
regex) para estruturar campos de texto livre e identificar
a prevalência de sintomas respiratórios e sistêmicos.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.
As análises técnicas foram estruturadas para responder às seguintes questões norteadoras:
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. |
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.
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.
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.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:
Date) e fatores (Factor) para permitir
ordenação e cálculos.TRUE/FALSE) para
sintomas específicos (Febre, Tosse, Dispneia).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")
)
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 |
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). |
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.
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.
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”.
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).
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.
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.
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.
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.
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.