Atividade: Análise de Dados do Coronavı́rus no Brasil

  1. Aprendemos, através de vários exemplos, como podemos explorar o conjunto de dados sobre covid19 disponibilizado pelo Ministério da Saúde. Agora é a sua vez. Nessa atividade, você deverá usar o mesmo banco de dados para avaliar questões distintas das que foram propostas na aula. Você pode usar os dados diretamente da planilha ou através de pacotes. Busque analisar outras variáveis, fazer uma análise por região, estado, grupo de municípios, etc. As possibilidades são imensas e você deverá explorá-las. Coloque em prática todas as ferramentas que aprendemos anteriormente. Quanto maior o número de elementos utilizados, maior será a sua nota. Utilize toda a sua criatividade e conhecimento. Bom trabalho!

Resp:

Usaremos a seguinte base de dados, disponibilizada pelo Ministério da Saúde (https://covid.saude.gov.br), para nossas análises.

Descrição da base de dados utilizada

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(ggplot2)
library(readxl)
library(readr)

dataset_full <- read_excel("HIST_PAINEL_COVIDBR_15jun2020.xlsx",
                           col_types = c("text",    # Regiao
                                         "text",    # Estado
                                         "text",    # Municipio
                                         "text",    # coduf
                                         "numeric", # codmun
                                         "numeric", # codRegiaoSaude
                                         "text",    # nomeRegiaoSaude
                                         "date",    # data
                                         "numeric", # semanaEpi
                                         "text",    # populacaoTCU2019
                                         "numeric", # casosAcumulado
                                         "numeric", # casosNovos
                                         "numeric", # obitosAcumulado
                                         "numeric", # obitosNovos
                                         "numeric", # Recuperadosnovos
                                         "numeric"  # emAcompanhamentoNovos
                                         ))

head(dataset_full)
## # A tibble: 6 × 16
##   regiao estado municipio coduf codmun codRegiaoSaude nomeRegiaoSaude
##   <chr>  <chr>  <chr>     <chr>  <dbl>          <dbl> <chr>          
## 1 Brasil <NA>   <NA>      76        NA             NA <NA>           
## 2 Brasil <NA>   <NA>      76        NA             NA <NA>           
## 3 Brasil <NA>   <NA>      76        NA             NA <NA>           
## 4 Brasil <NA>   <NA>      76        NA             NA <NA>           
## 5 Brasil <NA>   <NA>      76        NA             NA <NA>           
## 6 Brasil <NA>   <NA>      76        NA             NA <NA>           
## # ℹ 9 more variables: data <dttm>, semanaEpi <dbl>, populacaoTCU2019 <chr>,
## #   casosAcumulado <dbl>, casosNovos <dbl>, obitosAcumulado <dbl>,
## #   obitosNovos <dbl>, Recuperadosnovos <dbl>, emAcompanhamentoNovos <dbl>

Vejamos a estrutura desta base de dados:

str(dataset_full)
## tibble [389,992 × 16] (S3: tbl_df/tbl/data.frame)
##  $ regiao               : chr [1:389992] "Brasil" "Brasil" "Brasil" "Brasil" ...
##  $ estado               : chr [1:389992] NA NA NA NA ...
##  $ municipio            : chr [1:389992] NA NA NA NA ...
##  $ coduf                : chr [1:389992] "76" "76" "76" "76" ...
##  $ codmun               : num [1:389992] NA NA NA NA NA NA NA NA NA NA ...
##  $ codRegiaoSaude       : num [1:389992] NA NA NA NA NA NA NA NA NA NA ...
##  $ nomeRegiaoSaude      : chr [1:389992] NA NA NA NA ...
##  $ data                 : POSIXct[1:389992], format: "2020-02-25" "2020-02-26" ...
##  $ semanaEpi            : num [1:389992] 9 9 9 9 9 10 10 10 10 10 ...
##  $ populacaoTCU2019     : chr [1:389992] "210147125" "210147125" "210147125" "210147125" ...
##  $ casosAcumulado       : num [1:389992] 0 1 1 1 2 2 2 2 3 7 ...
##  $ casosNovos           : num [1:389992] 0 1 0 0 1 0 0 0 1 4 ...
##  $ obitosAcumulado      : num [1:389992] 0 0 0 0 0 0 0 0 0 0 ...
##  $ obitosNovos          : num [1:389992] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Recuperadosnovos     : num [1:389992] NA NA NA NA NA NA NA NA NA NA ...
##  $ emAcompanhamentoNovos: num [1:389992] NA NA NA NA NA NA NA NA NA NA ...
summary(dataset_full)
##     regiao             estado           municipio            coduf          
##  Length:389992      Length:389992      Length:389992      Length:389992     
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##      codmun       codRegiaoSaude  nomeRegiaoSaude   
##  Min.   :110000   Min.   :11001   Length:389992     
##  1st Qu.:250228   1st Qu.:25002   Class :character  
##  Median :313378   Median :31038   Mode  :character  
##  Mean   :318774   Mean   :31762                     
##  3rd Qu.:411025   3rd Qu.:41010                     
##  Max.   :530010   Max.   :53001                     
##  NA's   :3136     NA's   :4675                      
##       data                       semanaEpi     populacaoTCU2019  
##  Min.   :2020-02-25 00:00:00   Min.   : 9.00   Length:389992     
##  1st Qu.:2020-04-16 00:00:00   1st Qu.:16.00   Class :character  
##  Median :2020-05-06 00:00:00   Median :19.00   Mode  :character  
##  Mean   :2020-05-05 21:00:31   Mean   :18.98                     
##  3rd Qu.:2020-05-26 00:00:00   3rd Qu.:22.00                     
##  Max.   :2020-06-15 00:00:00   Max.   :25.00                     
##                                                                  
##  casosAcumulado       casosNovos       obitosAcumulado     obitosNovos       
##  Min.   :     0.0   Min.   :-1370.00   Min.   :    0.00   Min.   : -36.0000  
##  1st Qu.:     0.0   1st Qu.:    0.00   1st Qu.:    0.00   1st Qu.:   0.0000  
##  Median :     1.0   Median :    0.00   Median :    0.00   Median :   0.0000  
##  Mean   :   151.9   Mean   :    6.83   Mean   :    8.75   Mean   :   0.3382  
##  3rd Qu.:     7.0   3rd Qu.:    0.00   3rd Qu.:    0.00   3rd Qu.:   0.0000  
##  Max.   :888271.0   Max.   :33274.00   Max.   :43959.00   Max.   :1473.0000  
##                                                                              
##  Recuperadosnovos emAcompanhamentoNovos
##  Min.   : 22130   Min.   : 14062       
##  1st Qu.: 43540   1st Qu.: 52166       
##  Median : 97290   Median :133904       
##  Mean   :140028   Mean   :174675       
##  3rd Qu.:209949   3rd Qu.:283655       
##  Max.   :412252   Max.   :435800       
##  NA's   :389934   NA's   :389934

Nota-se que há dados faltantes (NA’s) na base de dados. Dessa maneira devemos levar em conta tal particularidade nas análises.

Análise do COVID-19 por estados do Brasil

Apliquemos um filtro para selecionar dados referentes as regiões, desconsiderando dados NA’s nas variáveis estado e município:

dataset <- dataset_full %>% filter(!is.na(dataset_full$estado) & !is.na(dataset_full$municipio))
str(dataset)
## tibble [385,317 × 16] (S3: tbl_df/tbl/data.frame)
##  $ regiao               : chr [1:385317] "Norte" "Norte" "Norte" "Norte" ...
##  $ estado               : chr [1:385317] "RO" "RO" "RO" "RO" ...
##  $ municipio            : chr [1:385317] "Alta Floresta D'Oeste" "Alta Floresta D'Oeste" "Alta Floresta D'Oeste" "Alta Floresta D'Oeste" ...
##  $ coduf                : chr [1:385317] "11" "11" "11" "11" ...
##  $ codmun               : num [1:385317] 110001 110001 110001 110001 110001 ...
##  $ codRegiaoSaude       : num [1:385317] 11005 11005 11005 11005 11005 ...
##  $ nomeRegiaoSaude      : chr [1:385317] "ZONA DA MATA" "ZONA DA MATA" "ZONA DA MATA" "ZONA DA MATA" ...
##  $ data                 : POSIXct[1:385317], format: "2020-03-27" "2020-03-28" ...
##  $ semanaEpi            : num [1:385317] 13 13 14 14 14 14 14 14 14 15 ...
##  $ populacaoTCU2019     : chr [1:385317] "22945" "22945" "22945" "22945" ...
##  $ casosAcumulado       : num [1:385317] 0 0 0 0 0 0 0 0 0 0 ...
##  $ casosNovos           : num [1:385317] 0 0 0 0 0 0 0 0 0 0 ...
##  $ obitosAcumulado      : num [1:385317] 0 0 0 0 0 0 0 0 0 0 ...
##  $ obitosNovos          : num [1:385317] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Recuperadosnovos     : num [1:385317] NA NA NA NA NA NA NA NA NA NA ...
##  $ emAcompanhamentoNovos: num [1:385317] NA NA NA NA NA NA NA NA NA NA ...

Após aplicar o filtro as variáveis Estado e Município estão prontas para serem analisadas.

Vejamos os 10 estados com mais mortes no Brasil:

top_estados <- dataset %>%
  select(estado, obitosNovos) %>%
  group_by(estado) %>%
  summarise(total_mortes=sum(obitosNovos),  .groups='drop') %>%
  arrange(desc(total_mortes))

top10_estados <- top_estados[1:10,]
top10_estados
## # A tibble: 10 × 2
##    estado total_mortes
##    <chr>         <dbl>
##  1 SP            10767
##  2 RJ             7728
##  3 CE             4999
##  4 PA             4201
##  5 PE             3866
##  6 AM             2512
##  7 MA             1499
##  8 BA             1141
##  9 ES             1081
## 10 AL              763

Os dados mostram que estados do sudeste assumem as primeiras posições com respeito a quantidade de mortes decorridas por COVID-19.

total_obitos <- sum(top_estados$total_mortes)

library(crayon)
## 
## Attaching package: 'crayon'
## The following object is masked from 'package:ggplot2':
## 
##     %+%
subtitle_grafico <- "TOP 10 / Total de óbitos: " %+% chr(total_obitos) %+% "/ Dados do Ministério da Saúde"

eixo_x_ordenado <- factor(top10_estados$estado, level = top10_estados$estado)

ggplot(top10_estados, mapping=aes(x=eixo_x_ordenado, y=total_mortes)) +
  geom_bar(stat="identity", aes(fill=estado), width=0.5) +
  labs(title="Estados com maior quantidade de óbitos por COVID-19", subtitle=subtitle_grafico,
       x="", y="# óbitos", tag="  ") +
  geom_text(aes(label=total_mortes, vjust=-0.1), size=3) +
  scale_fill_discrete(name="Estado") +
  theme_dark() +
  guides(col = guide_legend(nrow=1))+
  theme(axis.title = element_text(size=10, face="italic"),
        plot.caption = element_text(hjust= 0.0, size=20, vjust=0.0),
        axis.line.y = element_blank(), 
        axis.line.x = element_line(lineend="round"),
        axis.ticks.length = unit(0.2, "lines"), 
        axis.ticks.y = element_line(colour="gray", size=1),
        legend.background = element_rect(fill="white", colour=NA),
        legend.position = 'top', 
        legend.justification = 'left',
        legend.direction = 'horizontal',
        legend.title = element_text(size=rel(0.9), face="bold", hjust=0.2, vjust=0.8),
        panel.background = element_blank(),
        axis.text.x = element_text(angle=45, vjust=0.5, hjust=1),
        panel.border = element_blank(), 
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_line(colour="gray", size=1),
        panel.grid.major.x = element_blank(),
        plot.margin = unit(c(1, 1, 0.5, 0.5), "lines"),
        plot.title = element_text(size=rel(1.4)),
        strip.background = element_rect(fill="grey90", colour="grey50"),
        strip.text.y = element_text(size=rel(0.8), angle=-90)
  ) 
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

round((10767+7728)/43900, 4)*100
## [1] 42.13

Em particular, os estados de São Paulo e Rio de Janeiro correspondem por cerca de 42.13% das mortes por CODIVD-19.

Análise do COVID-19 por municípios

Agora vejamos quais são as cidades mais afetadas pela pandemia de COVID-19.

library(scales)
## 
## Attaching package: 'scales'
## The following object is masked from 'package:readr':
## 
##     col_factor
municipios <- dataset %>%
  filter(!is.na(estado), !is.na(municipio)) %>%
  group_by(municipio, populacaoTCU2019) %>%
  summarise(total_obitos = sum(obitosNovos), .groups = 'drop')  %>%
  arrange(desc(total_obitos))
head(municipios,10)
## # A tibble: 10 × 3
##    municipio      populacaoTCU2019 total_obitos
##    <chr>          <chr>                   <dbl>
##  1 São Paulo      12252023                 5652
##  2 Rio de Janeiro 6718903                  5090
##  3 Fortaleza      2669342                  2915
##  4 Belém          1492745                  1736
##  5 Manaus         2182763                  1620
##  6 Recife         1645727                  1538
##  7 Salvador       2872347                   752
##  8 São Luís       1101884                   642
##  9 Guarulhos      1379182                   469
## 10 Maceió         1018948                   467

A tabela acima mostra os 10 primeiros municípios com maior quantidade de mortes por COVID-19. Nota-se que a cidade do Rio de Janeiro possui quantidade de mortes muito próximas da cidade de São Paulo, mesmo sendo sua população praticamente cerca de 40% menor. Isso reflete problemas na gestão no combate ao COVID-19 implementadas neste ano no Rio de Janeiro. Nota-se ainda que os demais município também estão em situação precaria nesse quesito. O gráfico abaixo ilustra esse resultado.

top10_municipios <- top_n(municipios, 10)
## Selecting by total_obitos
grafico_pizza <- ggplot(top10_municipios, aes(x="", y=total_obitos,
                                              fill=municipio)) +
  geom_bar(width=4, stat="identity", colour="white") +
  geom_text(aes(label = total_obitos), 
            check_overlap = TRUE, size=2.5, 
            position = position_stack(vjust = 0.5)) +
  coord_polar(theta="y") +
  labs(title="Número de óbitos por municípios", subtitle="TOP10",
       x="", y="", tag="  ", color = "Municípios:") +
  theme_dark() +
  guides(col = guide_legend(nrow=3))+
  theme(axis.line = element_blank(),
        axis.ticks=element_blank(),
        axis.title=element_blank(),
        axis.text.y=element_blank(),
        axis.text.x=element_blank(),
        legend.title = element_blank(),
        panel.background = element_blank(),
        panel.border = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        plot.background = element_rect(fill = "white"),
        plot.margin = unit(c(0, 0, 0, 0), "cm"),
        legend.background = element_rect(fill="white", colour=NA),
        legend.position = 'top', 
        legend.justification = 'left',
        legend.direction = 'horizontal')
  
grafico_pizza

Outro aspecto interessante é que das 10 cidades com mais mortes por COVID-19, nove são capitais estaduais. Guarulhos, embora não seja uma capital, ocupa posição de destaque no número de mortes por COVID-19.

COVID-19 na Região Intermediária de Campinas

A Região Intermediária de Campinas é formada por 11 municípios do estado de SP, sendo um deles a jução de 2. Ou seja, podemos considerar esta região como sendo composta por 12 municíios (https://ia601506.us.archive.org/35/items/NovaDivisoTerritorialIBGE/Nova%20Divis%C3%A3o%20Territorial_IBGE.pdf). Para as próximas análises focaremos nessa região do interior paulista.

sub_municipios <- dataset %>%
  filter(estado == 'SP', municipio %in% c("Campinas", "Jundiaí", "Piracicaba", 
                          "Bragança Paulista", "Limeira", "Mogi Guaçu", 
                          "São João da Boa Vista", "Araras", "Rio Claro",
                          "São José do Rio Pardo", "Mococa", "Amparo")) %>%
  group_by(municipio, populacaoTCU2019) %>%
  summarise(total_obitos = sum(obitosNovos), 
            total_casos = sum(casosNovos), .groups = 'drop') %>%
  arrange(desc(total_obitos))

sub_municipios
## # A tibble: 12 × 4
##    municipio             populacaoTCU2019 total_obitos total_casos
##    <chr>                 <chr>                   <dbl>       <dbl>
##  1 Campinas              1204073                   149        3884
##  2 Jundiaí               418962                    110        2023
##  3 Piracicaba            404142                     44        1122
##  4 Limeira               306114                     21         362
##  5 Rio Claro             206424                     19         231
##  6 Bragança Paulista     168668                     12         318
##  7 Mogi Guaçu            151888                      8         240
##  8 Amparo                72195                       5          88
##  9 São João da Boa Vista 91211                       5          70
## 10 São José do Rio Pardo 54946                       4          34
## 11 Araras                134236                      3         182
## 12 Mococa                68885                       3          60

Dentre os 12 munícipios de interesse, Campinas e Jundiaí concentram a maior quantidade de óbitos por COVID-19. O diagrama mostra a distribuição do número de casos, óbitos e a população de cada um dos munícipios da Região Intermediária de Campinas.

library(treemapify)

ggplot(data=sub_municipios, 
       aes(area=total_casos, fill=municipio, 
           label = municipio %+% 
             "\n\n Total óbitos: " %+% chr(total_obitos) %+% 
             "\n Total infectados: " %+% chr(total_casos) %+%
             "\n População total: " %+% chr(populacaoTCU2019))
       ) +
   geom_treemap(show.legend=FALSE, layout="scol") +
   geom_treemap_text(colour="black", place = "center",
                     size=12, reflow=FALSE, grow=FALSE) +
  scale_fill_brewer(palette="Set3") +
  labs(title = "COVID-19 - Região Intermediária de Campinas",
             y = NULL, x = NULL)

Abaixo temos os 5 primeiros municípios com respeito a quantidade total de mortes por COVID-19 na região aqui analisada.

top5_sub_municipios <- sub_municipios[1:5,]

sum_total_obitos <- sum(sub_municipios$total_obitos)

subtitle_grafico <- "Região Intermediária de Campinas - TOP 5 / Total de óbitos na região: " %+%
  chr(sum_total_obitos)

library(crayon)
eixo_x_ordenado_municipio <- factor(top5_sub_municipios$municipio,
                                    level=top5_sub_municipios$municipio)

ggplot(data=top5_sub_municipios, mapping=aes(x=eixo_x_ordenado_municipio, y=total_obitos, 
                                             group=1)) +
  geom_bar(stat="identity", aes(fill=municipio), width=0.5) +
  geom_line(size = 1, alpha=0.5) +
  labs(title="Região Intermediária de Campinas - Municípios Mais Afetados",
       subtitle=subtitle_grafico,
       x="", y="# óbitos", tag="  ",
       color = "Municípios: ") +
  geom_text(aes(label=total_obitos, vjust=-0.1), size=3) +
  scale_fill_discrete(name="Municípios: ") +
  theme_dark() +
  guides(col = guide_legend(nrow=3))+
  theme(axis.title = element_text(size=10, face="italic"),
        plot.caption = element_text(hjust= 0.0, size=20, vjust=0.0),
        axis.line.y = element_blank(), 
        axis.line.x = element_line(lineend="round"),
        axis.ticks.length = unit(0.2, "lines"), 
        axis.ticks.y = element_line(colour="gray", size=1),
        legend.background = element_rect(fill="white", colour=NA),
        legend.position = 'top', 
        legend.justification = 'left',
        legend.direction = 'horizontal',
        legend.title = element_text(size=rel(0.9), face="bold", hjust=0.2, vjust=0.8),
        panel.background = element_blank(),
        axis.text.x = element_text(angle=45, vjust=0.5, hjust=1),
        panel.border = element_blank(), 
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_line(colour="gray", size=1),
        panel.grid.major.x = element_blank(),
        plot.margin = unit(c(1, 1, 0.5, 0.5), "lines"),
        plot.title = element_text(size=rel(1.4)),
        strip.background = element_rect(fill="grey90", colour="grey50"),
        strip.text.y = element_text(size=rel(0.8), angle=-90)
  )
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Pelos gráficos acima notamos as cidades da região que são menos populosas possuem um menor número de casos.

COVID-19 nos municípios TOP3 mais afetados da Região Intermediária de Campinas

Os gráfico abaixo mostram a evolução do número de casos e de óbitos de COVID-19 nos municípios de Campinas, Jundiaí e Piracicaba.

top3_sub_municipios <- sub_municipios[1:3,]

sub_dataset <- dataset %>%
  filter(estado == "SP", !is.na(municipio), 
         municipio %in% top3_sub_municipios$municipio) %>%
  group_by(data, municipio, estado) %>%
  arrange(data)

g1 <- ggplot(data=sub_dataset, aes(x=as.Date(data), y=obitosNovos, colour=municipio)) +
  geom_point() +
  geom_line(size = 1) +
  labs(title = "Número de óbitos por COVID-19, 2020",
             y = "# óbitos",
             x = NULL,
       color = "Municípios:") +
  scale_x_date(date_breaks = "2 week", date_minor_breaks = "1 month",
               date_labels = "%d/%b") +
  theme_classic() +
  guides(col = guide_legend(nrow = 1))+
  theme(axis.title=element_text(size=8, face="italic"),
        plot.caption = element_text(hjust = 0.0, size=8),
        axis.line.y = element_blank(), 
        axis.line.x = element_line(lineend="round"),
        axis.ticks.length.x =unit(0.2, "lines"), 
        axis.ticks.length.y =unit(0, "lines"), 
        axis.ticks.y = element_line(colour= "gray", size=1),
        legend.background=element_rect(fill="white", colour=NA),
        legend.position='top', 
        legend.justification='left',
        legend.direction='horizontal',
        legend.title=element_text(size=rel(0.8), face="bold", hjust=0),
        panel.background=element_blank(),
        panel.border=element_blank(), 
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_line(colour= "gray",size=1),
        plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"),
        plot.title=element_text(size=rel(1.2)),
        strip.background=element_rect(fill="grey90", colour="grey50"),
        strip.text.y=element_text(size=rel(0.8), angle=-90)
  )


g2 <- ggplot(data=sub_dataset, aes(x=as.Date(data), y=casosNovos, colour=municipio)) +
  geom_point() +
  geom_line(size = 1) +
  labs(title = "Número de casos de COVID-19, 2020",
             y = "# casos",
             x = NULL,
       color = "Municípios:") +
  scale_x_date(date_breaks = "2 week", date_minor_breaks = "1 month",
               date_labels = "%d/%b") +
  theme_classic() +
  guides(col = guide_legend(nrow = 1))+
  theme(axis.title=element_text(size=8, face="italic"),
        plot.caption = element_text(hjust = 0.0, size=8),
        axis.line.y = element_blank(), 
        axis.line.x = element_line(lineend="round"),
        axis.ticks.length.x =unit(0.2, "lines"), 
        axis.ticks.length.y =unit(0, "lines"), 
        axis.ticks.y = element_line(colour= "gray", size=1),
        legend.background=element_rect(fill="white", colour=NA),
        legend.position='top', 
        legend.justification='left',
        legend.direction='horizontal',
        legend.title=element_text(size=rel(0.8), face="bold", hjust=0),
        panel.background=element_blank(),
        panel.border=element_blank(), 
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_line(colour= "gray",size=1),
        plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"),
        plot.title=element_text(size=rel(1.2)),
        strip.background=element_rect(fill="grey90", colour="grey50"),
        strip.text.y=element_text(size=rel(0.8), angle=-90)
  )

g1

g2

Comparando os gráficos percebe-se que a tendência do número de óbitos decorridos por COVID-19 acompanha o número de casos. Analisando a última quinzena do gráfico, que vai de 1 a 15 de junho de 2020, notamos uma tendência de aumento no número de casos, assim como no número de mortes pela doença.

COVID-19, Campinas/SP, 2020

sub_dataset_campinas <- dataset %>%
  filter(municipio == "Campinas") %>%
  group_by(data, municipio, estado) %>%
  arrange(data)

g3 <- ggplot(data=sub_dataset_campinas, aes(x=as.Date(data), y=casosNovos)) +
  geom_point(color="red") +
  stat_smooth(method="loess", span=0.2, formula = y ~ poly(x, 1), color="violet") +
  geom_hline(yintercept = mean(sub_dataset_campinas$casosNovos, na.rm=TRUE), 
             linetype=2, size=1.5, color="black") +
  scale_x_date(date_breaks = "2 week", date_minor_breaks = "1 month",
             date_labels = "%d/%b") +
  labs(title = "# Casos confirmados COVID-19 Campinas/SP - 2020",
             y = "# casos",
             x = NULL,
       color = NULL) +
  theme_classic() +
  guides(col = guide_legend(nrow = 1))+
  theme(axis.title=element_text(size=8, face="italic"),
        plot.caption = element_blank(), #element_text(hjust = 0.0, size=8),
        axis.line.y = element_blank(), 
        axis.line.x = element_line(lineend="round"),
        axis.ticks.length.x =unit(0.2, "lines"), 
        axis.ticks.length.y =unit(0, "lines"), 
        axis.ticks.y = element_line(colour= "gray", size=1),
        legend.background=element_rect(fill="white", colour=NA),
        legend.position="none", 
        legend.justification='left',
        legend.direction='horizontal',
        legend.title=element_blank(), 
        panel.background=element_blank(),
        panel.border=element_blank(), 
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_line(colour= "gray",size=1),
        plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"),
        plot.title=element_text(size=rel(1.2)),
        strip.background=element_rect(fill="Set3", colour="Set2"),
        strip.text.y=element_text(size=rel(0.8), angle=-90)
  )

g3

Comparando o gráfico acima com o que temos abaixo, é possível notar que as tendências do número de mortes e número de casos são semelhantes. No mês junho o município de Campinas atingiu os maiores indíces decorrentes da pandemia.

print("média casos novos por dia: " %+% chr(round(mean(sub_dataset_campinas$casosNovos))))
## [1] "média casos novos por dia: 48"
print("média óbitos por dia: " %+% chr(round(mean(sub_dataset_campinas$obitosNovos))))
## [1] "média óbitos por dia: 2"

As médias de casos novos e óbitos para cidade de Campinas, considerando o período analisado, são respectivamente 48 e 2. Esses valores são representados nos gráficos acima e abaixo por meio de uma linha horizontal pontilhada.

g4 <- ggplot(data=sub_dataset_campinas, aes(x=as.Date(data), y=obitosNovos)) +
  geom_point(color="blue") +
  stat_smooth(method="loess", span=0.2, formula = y ~ poly(x, 1), color="green") +
  geom_hline(yintercept = mean(sub_dataset_campinas$obitosNovos, na.rm=TRUE), 
             linetype=2, size=1.5, color="black") +
  scale_x_date(date_breaks = "2 week", date_minor_breaks = "1 month",
             date_labels = "%d/%b") +
  labs(title = "# Óbitos COVID-19 Campinas/SP - 2020",
             y = "# casos",
             x = NULL,
       color = NULL) +
  theme_classic() +
  guides(col = guide_legend(nrow = 1))+
  theme(axis.title=element_text(size=8, face="italic"),
        plot.caption = element_blank(), #element_text(hjust = 0.0, size=8),
        axis.line.y = element_blank(), 
        axis.line.x = element_line(lineend="round"),
        axis.ticks.length.x =unit(0.2, "lines"), 
        axis.ticks.length.y =unit(0, "lines"), 
        axis.ticks.y = element_line(colour= "gray", size=1),
        legend.background=element_rect(fill="white", colour=NA),
        legend.position="none", 
        legend.justification='left',
        legend.direction='horizontal',
        legend.title=element_blank(), 
        panel.background=element_blank(),
        panel.border=element_blank(), 
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_line(colour= "gray",size=1),
        plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"),
        plot.title=element_text(size=rel(1.2)),
        strip.background=element_rect(fill="Set3", colour="Set2"),
        strip.text.y=element_text(size=rel(0.8), angle=-90)
  )

g4

Dados atualizados do COVID-19 e o município de Campinas/SP

Atualizando a base fornecida pela Ministério da Saúde (https://covid.saude.gov.br) para o dia de 19 de dezembro de 2020 temos os seguintes dados sobre a pandemia de COVID-19. Esta base atualizada está em formato .csv e possui 133 MB.

library(readr)

file="HIST_PAINEL_COVIDBR_19dez2020.csv"
dataset_atualizado <- read.csv2(file, header = TRUE, sep = ";", quote = "\"",
                    dec = ",", fill = TRUE, comment.char = "")

head(dataset_atualizado)
##   regiao estado municipio coduf codmun codRegiaoSaude nomeRegiaoSaude
## 1 Brasil                     76     NA             NA                
## 2 Brasil                     76     NA             NA                
## 3 Brasil                     76     NA             NA                
## 4 Brasil                     76     NA             NA                
## 5 Brasil                     76     NA             NA                
## 6 Brasil                     76     NA             NA                
##         data semanaEpi populacaoTCU2019 casosAcumulado casosNovos
## 1 2020-02-25         9        210147125              0          0
## 2 2020-02-26         9        210147125              1          1
## 3 2020-02-27         9        210147125              1          0
## 4 2020-02-28         9        210147125              1          0
## 5 2020-02-29         9        210147125              2          1
## 6 2020-03-01        10        210147125              2          0
##   obitosAcumulado obitosNovos Recuperadosnovos emAcompanhamentoNovos
## 1               0           0               NA                    NA
## 2               0           0               NA                    NA
## 3               0           0               NA                    NA
## 4               0           0               NA                    NA
## 5               0           0               NA                    NA
## 6               0           0               NA                    NA
##   interior.metropolitana
## 1                     NA
## 2                     NA
## 3                     NA
## 4                     NA
## 5                     NA
## 6                     NA

A partir da base de dados atualizada podemos analisar novamente a evolução da pandemia no município de Campinas. Os gráficos abaixo mostram os como os números de morte e casos novos em Campinas evoluiram desde o início da pandemia até a data presente (i.e., até 19 de dezembro de 2020).

dataset2 <- dataset_atualizado %>% 
  filter(!is.na(dataset_atualizado$estado), !is.na(dataset_atualizado$municipio))

sub_dataset_campinas <- dataset2 %>%
  filter(municipio == "Campinas") %>%
  group_by(data, municipio, estado) %>%
  arrange(data)

#head(sub_dataset_campinas)

g5 <- ggplot(data=sub_dataset_campinas, aes(x=as.Date(data))) +
  geom_bar(aes(y=casosNovos, fill="#casos"), 
           stat="identity",  alpha=0.6, na.rm=TRUE) + 
  geom_line(mapping=aes(x=as.Date(data), y=casosNovos),
            size=1.2, na.rm=TRUE, color="violet") +
  geom_hline(yintercept = mean(sub_dataset_campinas$casosNovos, na.rm=TRUE), 
             linetype=2, size=1.5, color="black") +
  scale_fill_manual("", values="gray") +
  labs(title = "# Casos confirmados COVID-19 Campinas/SP - dez/2020",
             y = "# casos",
             x = NULL,
       color = NULL) +
  scale_x_date(date_breaks = "2 month", date_minor_breaks = "1 month",
             date_labels = "%b/%y") +
  theme_classic() +
  guides(col = guide_legend(nrow = 2))+
  theme(axis.title=element_text(size=8, face="italic"),
        plot.caption = element_text(hjust = 0.0, size=8),
        axis.line.y = element_blank(), 
        axis.line.x = element_line(lineend="round"),
        axis.ticks.length.x =unit(0.2, "lines"), 
        axis.ticks.length.y =unit(0, "lines"), 
        axis.ticks.y = element_line(colour= "gray", size=1),
        legend.background=element_rect(fill="white", colour=NA),
        legend.position='', 
        legend.justification='left',
        legend.direction='horizontal',
        legend.title=element_text(size=rel(0.8), face="bold", hjust=1),
        panel.background=element_blank(),
        panel.border=element_blank(), 
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_line(colour= "gray",size=1),
        plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"),
        plot.title=element_text(size=rel(1.2)),
        strip.background=element_rect(fill="Set3", colour="Set2"),
        strip.text.y=element_text(size=rel(0.8), angle=-90)
  )


g6 <- ggplot(data=sub_dataset_campinas, aes(x=as.Date(data))) +
  geom_bar(aes(y=obitosNovos, fill="#casos"), 
           stat="identity",  alpha=0.8, na.rm=TRUE) + 
  geom_line(mapping=aes(x=as.Date(data), y=obitosNovos, color="moving average"),
            size=1.2, na.rm=TRUE, color="red") +
  geom_hline(yintercept = mean(sub_dataset_campinas$obitosNovos, na.rm=TRUE), 
             linetype=2, size=1.5, color="black") +
  scale_colour_manual(" ", values=c("#casos"="red", "moving average"="violet")) +
  scale_fill_manual("", values="gray") +
  labs(title = "# Óbitos COVID-19 Campinas/SP - dez/2020",
             y = "# óbitos",
             x = NULL,
       color = NULL) +
  scale_x_date(date_breaks = "2 month", date_minor_breaks = "1 month",
             date_labels = "%b/%y") +
  theme_classic() +
  guides(col = guide_legend(nrow = 2))+
  theme(axis.title=element_text(size=8, face="italic"),
        plot.caption = element_text(hjust = 0.0, size=8),
        axis.line.y = element_blank(), 
        axis.line.x = element_line(lineend="round"),
        axis.ticks.length.x =unit(0.2, "lines"), 
        axis.ticks.length.y =unit(0, "lines"), 
        axis.ticks.y = element_line(colour= "gray", size=1),
        legend.background=element_rect(fill="white", colour=NA),
        legend.position='', 
        legend.justification='left',
        legend.direction='horizontal',
        legend.title=element_text(size=rel(0.8), face="bold", hjust=1),
        panel.background=element_blank(),
        panel.border=element_blank(), 
        panel.grid.minor = element_blank(),
        panel.grid.major.y = element_line(colour= "gray",size=1),
        plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"),
        plot.title=element_text(size=rel(1.2)),
        strip.background=element_rect(fill="Set3", colour="Set2"),
        strip.text.y=element_text(size=rel(0.8), angle=-90)
  )

g5 

g6

Os gráficos acima mostram os números de mortes e casos novos decorrentes da pandemia de COVID-19 no município de Campinas ainda não estão em fase de decrescimento. As médias, indicadas pelas linhas horizontais tracejadas, mostram que houve um aumento no número de casos novos e óbitos registrados por dia, sendo agora 153 e 4, respectivamente.

print("média casos novos por dia: " %+% chr(round(mean(sub_dataset_campinas$casosNovos))))
## [1] "média casos novos por dia: 153"
print("média óbitos por dia: " %+% chr(round(mean(sub_dataset_campinas$obitosNovos))))
## [1] "média óbitos por dia: 5"

Considerando que atualmente os hospitais deveriam estar preparados para atender os contaminados por coronavírus, que há um conhecimento científico acumulado sobre pesquisas relacionadas ao COVID-19, que há um investimento por parte dos órgãos envolvidos no combate a doença, era esperado que os gráficos refletissem esses pontos positivos. No entanto, os números sugerem que a doença se comporta e tem uma dinâmica de evolução que pode chegar ao que foi há alguns meses atrás, quando o número total de mortes por COVID-19 no munícipio de Campinas chegou ao pico de 36 mortes em um único dia.

max(sub_dataset_campinas$obitosNovos)
## [1] 36