Análise Descritiva do Coronavírus nos Estados Brasileiros

Justificativa

Hoje, 24 de março de 2020, o coronavírus está muito presente em todas as conversas dos brasileiros. Aqueles que podem estão em quarentena, tentando evitar ao máximo que a doença se espalhe.

Estou aproveitando este tempo de molho para aprender sobre um assunto que domino muito pouco: a criação de mapas no R. Por isso, resolvi utilizar os dados disponibilizados pela equipe do site Brasil.io e realizar uma análise espacial simples, a nível estadual, tentando identificar os estados brasileiros com a maior taxa de casos confirmados.

Optei por utilizar uma escala baseada na taxa de casos confirmados por 100.000 habitantes por 2 motivos principais:

  1. Acredito que comparar valores absolutos entre estados não é a melhor maneira de entender a proliferação da doença, pois São Paulo possui muito mais habitantes do que Roraima, por exemplo;
  2. Casos suspeitos poderiam deixar a análise ainda mais enviesada do que ela já provavelmente está.

Com isso, quero dizer que sei das limitações da minha análise, especialmente no que tange à subnotificação de casos. Além de termos limitações me relação à verba que cada estado da federação possui em caixa para comprar os testes necessários para identificação da doença.

Além disso, nem todas as secretarias de saúde estaduais possuem a mesma velocidade de divulgação nos dados. Assim, apesar de estarmos em 24 de março, estou usando os dados do dia 21 deste mês. Qualquer um pode realizar novamente esta análise para outros dias alterando o valor da variável hoje colocada no código abaixo.

Preparação dos Dados

Esta parte pode ser pulada por quem não está interessado em reproduzir este estudo. Basicamente o que faço abaixo é carregar pacotes necessários para a minha análise, ler os dados no R e prepará-los para aquilo que me interessa.

library(tidyverse)
## ── Attaching packages ───────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.2     ✓ purrr   0.3.4
## ✓ tibble  3.0.1     ✓ dplyr   1.0.0
## ✓ tidyr   1.1.0     ✓ stringr 1.4.0
## ✓ readr   1.3.1     ✓ forcats 0.5.0
## ── Conflicts ──────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
theme_set(theme_bw())
library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(brazilmaps) # devtools::install_github("rpradosiqueira/brazilmaps")


############################
### preparacao dos dados ###
############################

# dados obtidos partir do site brasil.io:
# 
# https://brasil.io/dataset/covid19/caso

corona <- read.csv(file="https://brasil.io/dataset/covid19/caso?format=csv")
corona <- as_tibble(corona)

# transformar coluna `date` em data

corona <- corona %>% 
  mutate(date = ymd(date))

# transformar a coluna `is_last` em logical

corona <- corona %>% 
  mutate(is_last = ifelse(is_last == "True", TRUE, FALSE))

# remover as linhas com totais por cidade

corona <- corona %>% 
  filter(place_type == "state")

Com isso os dados do site Brasil.io estão prontos para a análise que delineeei.

Análise Exploratória dos Dados

A primeira análise que realizo é a comparação dos casos totais em cinco estados que considero importantes: SP, RJ e MG, por possuírem os três maiores PIBs do país, além de RS e RN, o estado em que nasci e o estado em que moro atualmente. Devido à velocidade de atualização dos dados estaduais, minha análise se refere à situação do dia 21 de março de 2020. Para realizar estudos mais atuais, substitua o valor da variável hoje pelo dia da sua preferência no formato aaaa-mm-dd.

######################################
### analise exploratoria dos dados ###
######################################

# altere a data abaixo, no formato aaaa-mm-dd para realizar 
# esta análise para outro dia

hoje <- ymd("2020-03-21")

corona %>%
  filter(date == hoje) %>%
  arrange(desc(confirmed)) %>%
  select(state, confirmed) %>%
  print(n = Inf)
## # A tibble: 26 x 2
##    state confirmed
##    <chr>     <int>
##  1 SP          396
##  2 RJ          119
##  3 DF          108
##  4 CE           84
##  5 RS           69
##  6 SC           57
##  7 MG           55
##  8 PR           43
##  9 BA           41
## 10 PE           33
## 11 ES           26
## 12 GO           19
## 13 MS           16
## 14 AC           11
## 15 AM           11
## 16 SE           10
## 17 RN            9
## 18 AL            7
## 19 PI            4
## 20 RO            3
## 21 MA            2
## 22 PA            2
## 23 RR            2
## 24 TO            2
## 25 AP            1
## 26 PB            1
g <- corona %>%
  filter(state %in% c("SP", "RJ", "MG", "RS", "RN")) %>%
  group_by(date) %>%
  #top_n(1, confirmed) %>%
  ggplot(., aes(x = date, y = confirmed, group = state, colour = state)) +
  geom_line() +
  labs(x = "Data", y = "Casos Confirmados", colour = "Estado") +
  scale_colour_viridis_d()

ggplotly(g)
## Warning: `group_by_()` is deprecated as of dplyr 0.7.0.
## Please use `group_by()` instead.
## See vignette('programming') for more help
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.

Note que o gráfico acima é interativo. É possível obter mais informações sobre as curvas passando o mouse por cima delas, dando zoom na imagem e clicando nos nomes dos estados para desabilitá-los.

A seguir, faço um mapa com a taxa de casos confirmados para cada 100.000 habitantes:

######################################
### analise exploratoria dos dados ###
######################################

# adiciona uma coluna chamada `estado`, com o nome do estado por extenso

codigos <- structure(
  list(codigo = c(11L, 12L, 13L, 14L, 15L, 16L, 17L, 
                  21L, 22L, 23L, 24L, 25L, 26L, 27L, 
                  28L, 29L, 31L, 32L, 33L, 35L, 
                  41L, 42L, 43L, 50L, 51L, 52L, 53L), 
      estado = structure(c(22L, 1L, 4L, 23L, 14L, 3L, 
               27L, 10L, 18L, 6L, 20L, 15L, 17L, 2L, 26L, 
               5L, 13L, 8L, 19L, 25L, 16L, 24L, 21L, 12L, 
               11L, 9L, 7L), 
        .Label = c("Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", 
                 "Ceará", "Distrito Federal", "Espírito Santo", 
                 "Goiás", "Maranhão", "Mato Grosso", 
                 "Mato Grosso do Sul", "Minas Gerais", "Pará", 
                 "Paraíba", "Paraná", "Pernambuco", 
                 "Piauí", "Rio de Janeiro", "Rio Grande do Norte", 
                 "Rio Grande do Sul", "Rondônia", "Roraima", 
                 "Santa Catarina", "São Paulo", "Sergipe", 
                 "Tocantins"), class = "factor"), 
      uf = structure(c(21L, 1L, 3L, 22L, 14L, 4L, 27L, 10L, 
            17L, 6L, 20L, 15L, 16L, 2L, 25L, 5L, 
            11L, 8L, 19L, 26L, 18L, 24L, 23L, 12L, 13L, 9L, 7L), 
        .Label = c("AC", "AL", "AM", "AP", "BA", "CE", "DF", 
          "ES", "GO", "MA", "MG", "MS", "MT", "PA", "PB", 
          "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", 
          "SC", "SE", "SP", "TO"), class = "factor")), 
  class = "data.frame", row.names = c(NA, -27L))
mapa_br <- get_brmap("State")

mapa_br %>%
  left_join(codigos, c("State" = "codigo")) %>%
  left_join(filter(corona, date == hoje), c("uf" = "state")) %>%
  ggplot() +
  geom_sf(aes(fill = confirmed_per_100k_inhabitants)) +
  labs(fill = "Casos por 100k habitantes") +
  scale_fill_viridis_c(na.value = "grey") +
  theme(panel.grid = element_line(colour = "transparent"),
        panel.background = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        rect = element_blank(),
        legend.position = "bottom")

Clique para ver o Mapa com Taxa de Casos Confirmados de Coronavírus no Brasil

O que acho mais interessante na imagem acima é o destaque para o Distrito Federal. Note como ele possui uma cor muito diferente do restante do país, destacando-se muito em relação aos demais. Eu tenho algumas hipóteses para isso:

  1. É o local mais importante da política nacional, então é natural que mais testes tenham sido realizados lá
  2. Há um intenso fluxo de pessoas no DF
  3. Com a renda per capita mais alta do país, é natural que mais pessoas consigam se testar por lá

Alguém possui mais alguma hipótese para esta diferença tão grande entre o DF e os demais estados brasileiros?

Como sempre, o código utilizado nesta análise está disponível em meu github.


comments powered by Disqus