Introdução

Descrição do problema

Desde o início da pandemia de COVID-19, a vacinação emergiu como uma ferramenta crucial para conter a propagação do vírus e reduzir a mortalidade. No entanto, o progresso da vacinação não ocorreu de forma uniforme ao longo do tempo ou entre diferentes grupos da população. Este relatório examina a evolução da campanha de vacinação na cidade do Recife durante diferentes fases da pandemia, explorando como a chegada de novas variantes, mudanças nas políticas públicas e crises de saúde impactaram as taxas de vacinação.

Além disso, foi investigado se houve desigualdades significativas na cobertura vacinal entre diferentes grupos raciais e de gênero ao longo do tempo, e como essas disparidades se manifestaram em resposta às dinâmicas da pandemia. Essa análise pode ajudar os formuladores de políticas públicas e profissionais de saúde a entender melhor os padrões de vacinação e as barreiras enfrentadas por certos grupos, permitindo intervenções mais direcionadas e eficazes em campanhas futuras. Além disso, ela pode servir como base para discussões mais amplas sobre como melhorar a equidade na saúde em tempos de crise.

Introdução aos dados

A análise utiliza um conjunto de microdados dos perfis de pessoas vacinadas do Recife de todo o ano de 2021, que inclui informações sobre idade, sexo, raça/cor, fabricante da vacina, dose, e data de vacinação. Utilizando gráficos temporais e análises segmentadas, o relatório busca fornecer uma visão abrangente de como a vacinação avançou na cidade, enquanto destaca desigualdades que podem ter influenciado o acesso à vacina e a confiança na vacinação.

Link para o conjunto de dados

Pacotes Utilizados

Pacotes usados para a análise

Foram usados os seguintes pacotes para executar o código:

Nome Uso
rmdformats Poder usar o template para RMarkdown
DT Criar tabelas interativas
knitr Exibir o relatório em formato HTML
dplyr Manipular e filtrar os dados
tidyr Manipulação de tabelas
stringr Manipulação de strings
ggplot2 Visualizar os gráficos
lubridate Facilitar o trabalho de manipular dados relacionados ao tempo

Carregando e preparando os dados

Importando os dados

O dataset com microdados dos perfis de vacinados contra a COVID-19 foi disponibilizado de forma pública em .csv pela prefeitura do Recife a partir dos dados da Secretaria de Saúde para promover o desenvolvimento de aplicações e/ou análise de dados.

A importação dos dados foi feita na seguinte linha de código:

dados <- read.csv("http://dados.recife.pe.gov.br/dataset/7ccb3816-0d62-49e1-b39a-3159870883b0/resource/bceb5759-5500-49db-bc86-b038892acc06/download/vacinados.csv", sep=";",  stringsAsFactors = FALSE)

Abaixo está o dicionário de dados desse conjunto:

Nome Tipo
faixa_etaria text
idade text
sexo text
raca_cor text
municipio text
grupo text
categoria text
lote text
vacina_fabricante text
descricao_dose text
cnes text
sistema_origem text
data_vacinacao timestamp

Limpeza dos dados

Antes de começar a análise desses dados, é preciso uma limpeza para remover informações irrelevantes, incorretas e/ou trocadas. Inicialmente o dataset possui 378250 registros.

datatable(head(dados, 25), options = list(pageLength = 5), caption = 'Amostra de dados importados antes da limpeza')

Para essa limpeza, optei por remover as colunas sistema_origem, cnes, lote e categoria. O sistema_origem não me seria útil por praticamente todas as entradas terem o mesmo valor, com exceção de campos vazios; o cnes por conter informações específicas de códigos do cadastro nacional de estabelecimento de saúde, que não seriam relevantes para esse estudo; o lote por indicar informações dos lotes específicos de vacinas, que poderiam ser relevantes em uma análise de eficácia ou eventos adversos por lote, mas que não vai ser abordado aqui; e por fim, a coluna categoria que iria ser usada por ter informações relevantes, mas que ao ver nela uma variação baixa de dados e a imensa maioria deles estar marcada como OUTROS ou vazia, optei por removê-la.

#Remoção das colunas cnes, sistema_origem, lote, categoria
dados_limpos <- dados %>%
  select(-c(cnes, sistema_origem, lote, categoria))

#Remoção de NAs e strings vazias
dados_limpos <- dados_limpos%>%
  filter(across(everything(), ~ !is.na(.) & . != ""))

Além disso, removi registros incorretos ou vazios, corrigi os valores da coluna raca_cor de “ÍNDIGENAS” para “INDÍGENAS”, alterei os dados que possuíam a vacina_fabricante sendo da Janssen (Johnson & Johnson) como sendo “DOSE ÚNICA”, e agrupei grupos relacionados na coluna grupos, como os de trabalhadores essenciais, o de crianças, público geral e grupos menores ou menos significativos foram colocados em “OUTRAS PRIORIDADES”.

#Correção da coluna raca_cor
dados_limpos <- dados_limpos %>%
  mutate(raca_cor = str_replace(raca_cor, 'ÍNDIGENAS', 'INDÍGENAS'))

# Atualizar os registros da Janssen em 'descricao_dose' para "dose única" 
dados_limpos <- dados_limpos %>%
  mutate(descricao_dose = ifelse(vacina_fabricante == "4 - JANSSEN COVID-19 VACCINE (JOHNSON & JOHNSON)", "DOSE ÚNICA", descricao_dose))

# Agrupar grupos semelhantes e categorizar o restante em 'Outras Prioridades'
dados_limpos <- dados_limpos %>%
  mutate(grupo = case_when(
    grupo %in% c("TRABALHADORES DA EDUCAÇÃO", "TRABALHADORES DA SAÚDE",
                 "TRABALHADORES DE TRANSPORTE COLETIVO RODOVIÁRIO",
                 "TRABALHADORES INDUSTRIAIS E BANCÁRIOS", "TRABALHADORES DE TRANSPORTE AÉREO",
                 "TRABALHADORES DA LIMPEZA URBANA", "TRABALHADORES PORTUÁRIOS",
                 "TRABALHADORES DE TRANSPORTE METROVIÁRIO E FERROVIÁRIO",
                 "TRABALHADORES DA ASSISTÊNCIA SOCIAL", "TRABALHADORES DE TRANSPORTE AQUAVIÁRIO",
                 "CAMINHONEIROS") ~ "TRABALHADORES ESSENCIAIS",

    grupo %in% c("PÚBLICO EM GERAL (18 a 59 anos)", "PÚBLICO EM GERAL - MENOR DE 18 ANOS") ~ "PÚBLICO EM GERAL",

    grupo %in% c("GESTANTES E PUÉRPERAS", "GESTANTES E PUÉRPERAS NÃO RESIDENTES EM RECIFE", "GESTANTES E PUÉRPERAS - 12 A 17 ANOS") ~ "GESTANTES E PUÉRPERAS",

    grupo %in% c("CRIANÇAS DE 05 A 11 ANOS", "CRIANÇAS DE 05 A 11 ANOS - Prioritárias",
                 "CRIANÇAS DE 05 A 11 ANOS - Síndrome de Down") ~ "CRIANÇAS",

    grupo %in% c("PESSOAS COM COMORBIDADES", "PESSOAS COM COMORBIDADES - 12 A 17 ANOS",
                 "PESSOAS COM DEFICIÊNCIA - 12 A 17 ANOS") ~ "COMORBIDADES/DEFICIÊNCIA",
    
    grupo == "IDOSOS" ~ "IDOSOS",

    TRUE ~ "OUTRAS PRIORIDADES"  # Resto dos grupos
  ))

Análise exploratória dos dados

Evolução temporal das vacinações

Abaixo está uma visualização inicial para as vacinações durante o tempo

dados_limpos$data_vacinacao <- as.Date(ymd_hms(dados_limpos$data_vacinacao))

ggplot(dados_limpos, aes(x = data_vacinacao)) +
  geom_line(stat = "count", color = "blue") +
  labs(title = "Evolução da Vacinação ao Longo de 2021",
       x = "Data de Vacinação", y = "Número de Pessoas Vacinadas") +
  scale_x_date(date_labels = "%b", date_breaks = "1 month")

Os valores baixos no início do ano correspondem ao início das campanhas de vacinação do Recife, em que estava mais restrita aos grupos prioritários, como idosos, e que foi aumentando e teve um pico em agosto quando as políticas públicas, campanhas de vacinação e demanda da população estavam em alta. Por fim, baixando ao final do ano a medida em que a população já estava vacinada.

Diferentes doses em relação ao tempo

Aqui é possivel ver as ondas de vacinação em diferentes categorias de doses (primeira, segunda, terceira dose e dose única) que ocorreram durante o ano. As ondas aconteceram por questões de disponibilidade, novas variantes e novos chamados da prefeitura para a população.

ggplot(dados_limpos, aes(x = data_vacinacao, fill = descricao_dose)) +
  geom_histogram(binwidth = 7, position = "stack", color = "black") +
  labs(title = "Vacinação em 2021 por Dose",
       x = "Data de Vacinação", y = "Número de Pessoas Vacinadas",
       fill = "Dose") +
  scale_x_date(date_labels = "%b", date_breaks = "1 month") +
  theme_minimal()

Cobertura vacinal por grupo

Aqui vemos que o gráfico mostra a progressão da vacinação entre os grupos. Trabalhadores essenciais, pessoas com comorbidades ou deficiências e idosos tiveram prioridade nos primeiros lotes de vacina, refletindo as políticas de priorização de vacinação. Ambos os grupos se mantiveram com prioridade, e os picos desses grupos se sobrepõem com os meses que houveram uma aplicação de novas doses de reforço da vacina.

dados_grupo_agrupado <- dados_limpos %>%
  group_by(data_vacinacao, grupo) %>%
  summarise(total_vacinados = n(), .groups = 'drop')

ggplot(dados_grupo_agrupado, aes(x = data_vacinacao, y = total_vacinados, color = grupo)) +
  geom_line() +
  labs(title = "Evolução da Vacinação por Grupos Prioritários ao Longo do Tempo",
       x = "Data de Vacinação",
       y = "Número de Vacinas Aplicadas",
       color = "Grupo Prioritário") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Comparação entre diferentes doses e fabricantes

É visível que a cidade do Recife teve preferência para as vacinas da Pfizer e Astrazeneca. Também dá para ver que, por conta da Janssen ser uma única dose, ela não foi significativa neste gráfico, que conta com diferentes doses da mesma fabricante.

# Ajustar a coluna descricao_dose para Janssen
dados_limpos <- dados_limpos %>%
  mutate(descricao_dose = ifelse(vacina_fabricante == "4 - JANSSEN COVID-19 VACCINE (JOHNSON & JOHNSON)", "Dose Única", descricao_dose))

# Criar o mapeamento de nomes das fabricantes, pois o nome do jeito que estão no dataset não cabem no gráfico
dados_limpos <- dados_limpos %>%
  mutate(vacina_fabricante = case_when(
    vacina_fabricante %in% c("1 - CORONAVAC - SINOVAC (BUTANTAN)", "6 - CORONAVAC - SINOVAC (BUTANTAN) PEDIÁTRICA") ~ "SINOVAC (BUTANTAN)",
    vacina_fabricante %in% c("3 - COMIRNATY (PFIZER)", "5 - COMIRNATY (PFIZER) - PEDIÁTRICA") ~ "COMIRNATY (PFIZER)",
    vacina_fabricante == "2 - CHADOX1NCOV-19 - OXFORD/ASTRAZENECA (FIOCRUZ)" ~ "OXFORD/ASTRAZENECA (FIOCRUZ)",
    vacina_fabricante == "4 - JANSSEN COVID-19 VACCINE (JOHNSON & JOHNSON)" ~ "JANSSEN",
    TRUE ~ vacina_fabricante
  ))

# Contagem de doses por fabricante e tipo de dose
dados_doses_fabricantes <- dados_limpos %>%
  group_by(vacina_fabricante, descricao_dose) %>%
  summarise(total_doses = n(), .groups = 'drop')

# Criar o gráfico de barras para comparar doses administradas por fabricante
ggplot(dados_doses_fabricantes, aes(x = vacina_fabricante, y = total_doses, fill = descricao_dose)) +
  geom_bar(stat = "identity", position = "stack") +
  labs(title = "Comparação das Doses Administradas por Fabricante",
       x = "Fabricante da Vacina",
       y = "Número de Doses Administradas",
       fill = "Tipo de Dose") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Conclusões

Esse relatório analisou a evolução da vacinação contra a COVID-19 em Recife, considerando tanto o avanço temporal da vacinação quanto as diferenças entre fabricantes e doses. A análise temporal revelou que a vacinação progrediu significativamente ao longo de 2021, com picos associados a novas fases da campanha de vacinação e à introdução de novas vacinas. Observou-se um aumento na cobertura vacinal em períodos críticos, como a chegada de novas variantes e campanhas de vacinação intensificadas. Recomenda-se que futuras campanhas de vacinação melhore o acesso a grupos que tiveram menor cobertura.