DATA.RIO - COVID-19 no Município do Rio de Janeiro - Dias decorridos entre o início dos sintomas e o óbito

COVID-19: Dias decorridos entre o início dos sintomas e o óbito no Município do Rio de Janeiro
COVID-19: Dias decorridos entre o início dos sintomas e o óbito no Município do Rio de Janeiro

Os gráficos acima mostram a distribuição dos dias decorridos entre o início dos sintomas e o óbito por COVID-19 no Município do Rio de Janeiro, nas formas de histograma e densidade. Dos 23.855 óbitos ocorridos até 30/04/2021, não foram considerados no gráfico os óbitos que ocorreram no mesmo dia do início dos sintomas (0 dias decorridos), nem os que ocorreram depois de 120 dias entre o início dos sintomas e o óbito, nem os com valores não disponíveis, restando 20.414 observações para gerar os gráficos.

As estatísticas geradas sobre estas observações usadas, indicam uma média de 17,26 dias e uma mediana de 14 dias, entre o início dos sintomas e o óbito por COVID-19. No Portal PEBMED está dito que “estudos mostraram uma média de 14,5 dias, do início dos sintomas até intubação, e de 4 a 5 dias, da intubação ao óbito em pacientes graves com Covid-19”, o que é consistente com os valores calculados.

Dados

Os dados foram baixados da página Dados individuais dos casos confirmados de COVID-19 no município do Rio de Janeiro do DATA.RIO - Instituto Pereira Passos.

São dados individuais dos casos confirmados de COVID-19 no município do Rio de Janeiro que servem de base para o Painel Rio COVID-19, atualização diária em sincronia com o Painel. Esta base de dados reflete os dados de óbitos da base Ministério da Saúde mostrada no Painel.

Programa

Abaixo está mostrado o código do programa, escrito em R, que gera os gráficos, mas antes de ser executado as bibliotecas utilizadas precisam ser instaladas.

#
# source('datario_mrj_inicio_sintomas_obito.R')
#
# DATA.RIO - COVID-19 no Município do Rio de Janeiro
# Dias decorridos entre o início dos sintomas e o óbito
#
# Dados:
# DATA.RIO - Instituto Pereira Passos
# Dados individuais dos casos confirmados de COVID-19 no município do Rio de Janeiro
# https://www.data.rio/datasets/f314453b3a55434ea8c8e8caaa2d8db5
# Dados individuais dos casos confirmados de COVID-19 no município do Rio de Janeiro
# que servem de base para o Painel Rio COVID-19, atualização diária em sincronia com o Painel.
# Esta base de dados reflete os dados de óbitos da base Ministério da Saúde mostrada no Painel.
#
# Bibliotecas
library(plyr)
library(tidyr)
library(lubridate)
library(ggplot2)
library(gridExtra)
library(hrbrthemes)

# Ler os dados baixados do DATA.RIO  no formato CSV
dp <- read.csv2('~/R/dados/db_PainelRioCovid.csv', encoding='latin1')

colnames(dp) <- c("classif_final", "data_notific", "data_inicio_sintomas",
                  "bairro", "ap", "Sexo",
                  "faixa_etaria", "evolucao", "data_evolucao", "raca_cor",
                  "data_atualizacao", "sistema")

# Atualizar os valores não disponíveis
dp$bairro[dp$bairro == "INDEFINIDO"] <- NA
dp$ap[dp$ap == "N/D"] <- NA
dp$faixa_etaria[dp$faixa_etaria == "N/D"] <- NA
dp$faixa_etaria[dp$faixa_etaria == "zzN/D"] <- NA

# Última data
dataDados = toString(max(parse_date_time(dp$data_atualizacao, orders = c("mdy", "dmY")),
                          na.rm = TRUE))
# Óbitos
dp_obito <- dp[dp$evolucao == "OBITO", ]

# Criar um data frame com os óbitos convertendo as datas
df_obito <- data.frame(
  classif_final = dp_obito$classif_final,
  data_notific = parse_date_time(dp_obito$data_notific, orders = c("dmY", "mdy")),
  data_inicio_sintomas = parse_date_time(dp_obito$data_inicio_sintomas, orders = c( "mdy", "dmY")),
  data_evolucao = parse_date_time(dp_obito$data_evolucao, orders = c( "mdy", "dmY")),
  bairro = dp_obito$bairro,
  ap = dp_obito$ap,
  Sexo = dp_obito$Sexo,
  faixa_etaria = dp_obito$faixa_etaria,
  evolucao = dp_obito$evolucao,
  raca_cor = dp_obito$raca_cor,
  data_atualizacao = parse_date_time(dp_obito$data_atualizacao, orders = c("mdy", "dmY")),
  sistema = dp_obito$sistema
)

# Número de dias entre o início dos sintomas e o óbitos
dias_obito <- as.numeric(difftime(df_obito$data_evolucao, df_obito$data_inicio_sintomas, units = "days"))
# Remover os óbitos que ocorreram no mesmo dia que os sintomas, ou acima de 120 dias
dias_obito <- dias_obito[dias_obito > 0 & dias_obito <= 120]
# Transformar de numeric para data.frame
dias_obito <- data.frame(dias_obito)
# Remover os valores não disponíveis
dias_obito <- drop_na(dias_obito)
# Atribuir nome à coluna
colnames(dias_obito) <- "Dias"
# Média, mediana, 1º/3º quartis, min, max
estatisticas <- summary(dias_obito)

# Gráficos Óbitos

histograma <- ggplot(dias_obito, aes(x = Dias)) +
    labs(
        title = NULL,
        x = "Dias",
        y = "Frequência"
    ) +
    geom_histogram(  
        fill = "#A20056FF",
        col = "white",
        breaks=seq(0, 120, by=2)
    ) +
    scale_x_continuous(
        breaks = c(0, 15, 30, 45, 60, 75, 90, 105, 120)
    ) +
    theme_ipsum(
      base_family = "Vera",
      axis_title_size = 12
    )
  
densidade <- ggplot(dias_obito, aes(x = Dias)) +
    labs(
        title = NULL,
        x = "Dias",
        y = "Densidade"
    ) +
    geom_density(
        fill = "#69b3a2",
        color = "#e9ecef",
        alpha= 0.8
    ) +
    geom_vline(
    	aes(xintercept = mean(Dias)),
        color = "blue",
        linetype = "dashed",
        size = 0.3
    ) +
  annotation_custom(
    tableGrob(
      estatisticas,
      rows = NULL,
      theme = ttheme_default(base_size = 9)
    ),
    xmin = 90,
    xmax = 120
  ) +
  scale_x_continuous(
        breaks = c(0, 15, 30, 45, 60, 75, 90, 105, 120)
    ) + 
  theme_ipsum(
    base_family = "Vera",
    axis_title_size = 12
  )

# Juntar os gráficos
plot <- grid.arrange(histograma, densidade,
    nrow = 1,
    ncol = 2,
    top = textGrob(paste("DATA.RIO - COVID-19 no Município do Rio de Janeiro - Data:",
              dataDados,
              "\nDias decorridos entre o início dos sintomas e o óbito"),
              gp = gpar(fontsize = 15,font = 2)),
    bottom = "Fonte: https://www.data.rio/datasets/f314453b3a55434ea8c8e8caaa2d8db5"
)

# Gravar o gráfico no disco
ggsave("~/R/img/datario_mrj_inicio_sintomas_obito.png",
       plot, device = png(), width = 11, height = 6.25, dpi = 72)

dev.off()
Referências