Resumo

Material produzido para o curso: Análise e visualização de dados do coronavírus usando o R da Universidade Federal de São Carlos. Tem como objetivo realizar uma análise Exploratória dos Dados da COVID-19 no Brasil. Os dados foram obtidos pelo portal Brasil.io que organizam a tabela como fonte oficial as Secretarias Estaduais de Saúde. Esses dados permitem realizar um acompahamento dos casos de COVID-19 em todo o território nacional. Vou agregar os dados por Estados para um conhecimento macro, e depois algumas informações por municípios. Também é utilizado o conceito de médias móveis, para extrair estatísticas dos dados gerados pela pandemia, nesse caso vou usar os dados do Estado de São Paulo e Rio de Janeiro. Ao final, uma breve análise com o pacote gtrendsR obtendo dados de palavras buscadas no google (no Brasil) relacionadas ao novo coronavírus, e ainda, a correlação dessas palavras com os dados do coronavírus no Brasil, com a tentativa de extrair alguma informação relevante para um futuro estudo.

caso_full dataset tem os seguintes campos:

  • city - Nome do município (pode estar em branco quando o registro é referente ao estado, pode ser preenchido com Importados/Indefinidos também);

  • city_ibge_code - código IBGE do local;

  • date - A data do resumono formato YYYY-MM-DD;

  • epidemiological_week - Número da semana epidemiológica;

  • estimated_population - População estimada para esse município/estado em 2020;

  • estimated_population_2019 - População estimada para esse município/estado em 2019, segundo o IBGE. ATENÇÃO: essa coluna possui valores desatualizados, prefira usar a coluna estimated_population;

  • is_last - Campo pré-computado que diz se esse registro é o mais novo para esse local, pode ser True ou False;

  • is_repeated - Campo pré-computado que diz se as informações nesse registro foram publicadas pela Secretaria Estadual de Saúde no dia date ou se o dado é repetido do último dia em que o dado está disponível (igual ou anterior a date). Isso ocorre pois nem todas as secretarias publicam boletins todos os dias. Veja também o campo last_available_date;

  • last_available_confirmed - Número de casos confirmados do último dia disponível igual ou anterior à data date;

  • last_available_confirmed_per_100k_inhabitants - Número de casos confirmados por 100.000 habitantes (baseado em estimated_population) do último dia disponível igual ou anterior à data date;

  • last_available_date - Data da qual o dado se refere;

  • last_available_death_rate - Taxa de mortalidade (mortes / confirmados) do último dia disponível igual ou anterior à data date;

  • last_available_deaths - Número de mortes do último dia disponível igual ou anterior à data date;

  • order_for_place - Número que identifica a ordem do registro para este local. O registro referente ao primeiro boletim em que esse local aparecer será contabilizado como 1 e os demais boletins incrementarão esse valor;

  • place_type - Tipo de local que esse registro descreve, pode ser city ou state;

  • state - Sigla da unidade federativa;

  • new_confirmed - Número de novos casos confirmados desde o último dia (note que caso is_repeated seja True, esse valor sempre será 0 e que esse valor pode ser negativo caso a SES remaneje os casos desse município para outro);

  • new_deaths - Número de novos óbitos desde o último dia (note que caso is_repeated seja True, esse valor sempre será 0 e que esse valor pode ser negativo caso a SES remaneje os casos desse município para outro).

Fonte: Secretarias de Saúde das Unidades Federativas, dados tratados por Álvaro Justen e equipe de voluntários do Brasil.IO

\[ \cdots \]

Pacotes usados

if(!require("pacman")) install.packges("pacman")

pacman::p_load(tidyverse,
               magrittr,
               ggthemes,
               kableExtra,
               zoo,
               gtrendsR,
               gridExtra,
               corrplot,
               readr)

\[ \star \]

Manipulando dados

Carregando os dados .csv

dados <- read_csv("caso_full.csv")

Estados

Agrupando os dados para uma visualização por Estados brasileiros.

dados <- tbl_df(dados)
data_ant <- (Sys.Date() - 1)
estados <- dados %>% 
    filter(date == data_ant, place_type == "state") %>% 
    group_by(state) %>% 
    summarise(case = last_available_confirmed,
              death = last_available_deaths,
              death_rate = last_available_death_rate * 100,
              new_case = new_confirmed,
              new_death = new_deaths,
              case_100kpop = round(last_available_confirmed_per_100k_inhabitants,digits=2),
              pop = estimated_population) %>% 
    arrange(-case) 

\[ \cdots \]

Municípios

Agrupando os dados para uma visualização por municípios brasileiros. Abaixo uma separação pela região do Grande ABC, em SP.

municipios <- dados %>% 
    filter(date == data_ant, place_type == "city") %>% 
    group_by(city) %>% 
    summarise(state = state,
              case = last_available_confirmed,
              death = last_available_deaths,
              death_rate = last_available_death_rate * 100,
              new_case = new_confirmed,
              new_death = new_deaths,
              case_100kpop = round(last_available_confirmed_per_100k_inhabitants,digits=2),
              pop = estimated_population) %>% 
    arrange(-case)
abc <- municipios %>%
    filter(state == "SP") %>% 
    filter(city %in% c("Diadema",
                      "São Bernardo do Campo",
                      "Santo André",
                      "São Caetano do Sul",
                      "Mauá",
                      "Ribeirão Pires",
                      "Rio Grande da Serra"))

\[ \cdots \]

Panorama geral

Tabela que mostra os resumos dos dados por Estado brasileiro e mais informações relevantes para entender a situação em uma visão macro.

kable(head(estados, 27),
      col.names = c("Estados",
                    "Casos",
                    "Mortes",
                    "M(%)",
                    "Casos(24hrs)",
                    "Mortes(24hr)",
                    "Tot/100k pop",
                    "População")) %>% 
    kable_styling(full_width = FALSE,
                  bootstrap_options = c("striped","hover","condensed","responsive"))
Estados Casos Mortes M(%) Casos(24hrs) Mortes(24hr) Tot/100k pop População
SP 1316371 43661 3.32 9786 200 2843.79 46289333
MG 453364 10499 2.32 4484 70 2129.20 21292666
BA 436662 8531 1.95 4876 29 2924.60 14930634
SC 416752 4224 1.01 5121 41 5746.32 7252502
RJ 381644 23546 6.17 3560 116 2197.63 17366189
RS 363979 7452 2.05 4435 64 3186.38 11422973
PR 317861 6653 2.09 3981 45 2759.97 11516840
CE 313761 9772 3.11 1693 10 3415.23 9187103
GO 292282 6531 2.23 2175 11 4108.81 7113540
PA 278858 6980 2.50 792 8 3208.68 8690745
DF 237114 4043 1.71 792 11 7761.13 3055149
ES 208508 4514 2.16 1524 29 5130.54 4064052
MA 196446 4362 2.22 488 7 2761.17 7114598
PE 195118 9229 4.73 1588 29 2028.97 9616621
AM 185089 4978 2.69 821 6 4398.80 4207714
MT 165454 4233 2.56 742 11 4692.11 3526220
PB 152073 3407 2.24 761 16 3764.86 4039277
PI 133870 2714 2.03 534 10 4079.56 3281480
MS 109785 1888 1.72 0 0 3907.78 2809394
RN 101692 2781 2.73 0 0 2877.40 3534165
AL 97562 2366 2.43 314 3 2910.96 3351543
SE 96990 2351 2.42 644 5 4182.73 2318822
RO 84919 1628 1.92 514 11 4727.02 1796460
TO 84637 1192 1.41 0 0 5322.25 1590248
RR 65595 749 1.14 0 0 10392.42 631181
AP 62221 841 1.35 296 3 7220.11 861773
AC 37902 744 1.96 230 2 4237.37 894470

Casos no Brasil:

Total de casos Total de mortes Mortes (%)
6786509 179869 2.65
+(50151)/24hrs +(737)/24hrs

Informações relevantes n° de cidades:

Mortes Casos
+ de 500: 49 + de 10k: 101
+ de 1k: 21 + de 50k: 10
+ de 5k: 2 + de 100k: 4

Dados da região do Grande ABC, em São Paulo.

kable(head(abc, 7),
      col.names = c("Cidade",
                    "Estado",
                    "Casos",
                    "Mortes",
                    "M(%)",
                    "Casos(24hrs)",
                    "Mortes(24hr)",
                    "Tot/100k pop",
                    "População")) %>% 
    kable_styling(full_width = FALSE,
                  bootstrap_options = c("striped","hover","condensed","responsive"))
Cidade Estado Casos Mortes M(%) Casos(24hrs) Mortes(24hr) Tot/100k pop População
São Bernardo do Campo SP 31197 1124 3.60 293 6 3694.21 844483
Santo André SP 24631 723 2.94 293 1 3414.48 721368
Diadema SP 10567 456 4.32 74 2 2476.12 426757
Mauá SP 9981 422 4.23 77 3 2090.03 477552
São Caetano do Sul SP 6741 280 4.15 45 4 4162.22 161957
Ribeirão Pires SP 2733 90 3.29 5 1 2201.21 124159
Rio Grande da Serra SP 798 31 3.88 4 1 1551.44 51436

10 municípios com maior taxa de letalidade e mais de 200mil habitantes.

mun_deathrate <- municipios %>% filter(pop >= 200000) %>% 
    arrange(-death_rate)

kable(head(mun_deathrate, 10),
      col.names = c("Cidade",
                    "Estado",
                    "Casos",
                    "Mortes",
                    "M(%)",
                    "Casos(24hrs)",
                    "Mortes(24hr)",
                    "Tot/100k pop",
                    "População")) %>% 
    kable_styling(full_width = FALSE,
                  bootstrap_options = c("striped","hover","condensed","responsive"))
Cidade Estado Casos Mortes M(%) Casos(24hrs) Mortes(24hr) Tot/100k pop População
São João de Meriti RJ 4551 544 11.95 0 0 962.35 472906
Cabo de Santo Agostinho PE 2431 288 11.85 19 0 1163.47 208944
Rio de Janeiro RJ 145763 13676 9.38 0 0 2160.15 6747815
Nova Iguaçu RJ 8909 779 8.74 0 0 1082.11 823302
Petrópolis RJ 3406 296 8.69 0 0 1110.61 306678
Paulista PE 5042 425 8.43 38 1 1507.88 334376
Jaboatão dos Guararapes PE 11984 905 7.55 83 3 1695.37 706867
Duque de Caxias RJ 12133 860 7.09 0 0 1312.21 924624
Olinda PE 7727 543 7.03 50 1 1965.58 393115
Itapevi SP 3801 247 6.50 31 1 1577.43 240961

10 municípios com maior índice de casos por 100mil habitantes e mais de 200mil habitantes.

mun_100kpop <- municipios %>% filter(pop >= 200000) %>% 
    arrange(-case_100kpop)

kable(head(mun_100kpop, 10),
      col.names = c("Cidade",
                    "Estado",
                    "Casos",
                    "Mortes",
                    "M(%)",
                    "Casos(24hrs)",
                    "Mortes(24hr)",
                    "Tot/100k pop",
                    "População")) %>% 
    kable_styling(full_width = FALSE,
                  bootstrap_options = c("striped","hover","condensed","responsive"))
Cidade Estado Casos Mortes M(%) Casos(24hrs) Mortes(24hr) Tot/100k pop População
Parauapebas PA 29375 197 0.67 0 0 13753.89 213576
Boa Vista RR 48718 547 1.12 0 0 11609.14 419652
São José SC 19457 153 0.79 0 0 7777.17 250181
Porto Velho RO 39145 847 2.16 0 0 7257.76 539354
Itabuna BA 14964 357 2.39 0 0 7002.83 213685
São José do Rio Preto SP 32475 837 2.58 59 3 6984.13 464983
Criciúma SC 15127 153 1.01 0 0 6960.99 217311
Vitória ES 25459 533 2.09 118 1 6958.77 365855
Florianópolis SC 35313 259 0.73 0 0 6940.09 508826
Aracaju SE 45718 860 1.88 0 0 6875.84 664908

\[ \cdots \]

Visualização dos dados

Nessa seção vamos analisar os dados através de gráficos de barras. Primeiro de um conjunto de municípios, depois através de uma evolução dos casos com um gráfico animado.

Grande ABC

Vamos visualizar através de um gráfico de barras, os dados de casos/100Mil habitantes da região do Grande ABC em São Paulo. Abaixo um mapa representativo da região.

new_abc <- data.frame(city = c("SBC",
                             "STA",
                             "DIA",
                             "MAU",
                             "SCS",
                             "RBP",
                             "RGS"),
                 case_100kpop = abc$case_100kpop)
new_abc %<>% tbl_df() %>% arrange(-case_100kpop)

plot <- ggplot(new_abc) +
    geom_bar(aes(x = city,
                 y = case_100kpop),
             stat = "identity",
             fill = "tomato",
             alpha = 0.5,
             color = "red",
             width = .75) +
    
    labs(caption = "Fonte: Secretarias de Saúde das Unidades Federativas",
         x = "",
         y = "Número de casos",
         title = "Casos de COVID-19 no Grande ABC",
         subtitle = "Casos por 100Mil habitantes") +
    theme_clean(base_size = 14,
                base_family = "mono") +
    theme(axis.text.x = element_text(size = 9,
                                     angle = 45,
                                     colour = "black",
                                     vjust = 1,
                                     hjust = 1),
          axis.title.x = element_text(size = 8),
          plot.subtitle = element_text(size = 10.5, color = "#A9A9A9"))

plot

\[ \cdots \]

Gráfico de barras animado

Agora vamos ver um gráfico de barras animado, dos Casos acumulados por região.

\[ \cdots \]

Médias móveis

Em Estatística, uma média móvel (MM) é um estimador calculado a partir de amostras sequenciais da população. Médias móveis são comumente usadas com séries temporais para suavizar flutuações curtas e destacar tendências de longo prazo.

abril <- lubridate::as_date("2020-04-01")
sp_mm7 <- dados %>% 
    filter(date >= abril, place_type == "state", state == "SP")

sp_mm7 %<>%
    mutate(MM7_death_sp = zoo::rollmean(new_deaths, k = 7, fill = NA)) %>% 
    mutate(MM7_conf_sp = zoo::rollmean(new_confirmed, k = 7, fill = NA)) %>% 
    select(date, MM7_death_sp, MM7_conf_sp)
rj_mm7 <- dados %>% 
    filter(date >= abril, place_type == "state", state == "RJ")

rj_mm7 %<>%
    mutate(MM7_death_rj = zoo::rollmean(new_deaths, k = 7, fill = NA)) %>% 
    mutate(MM7_conf_rj = zoo::rollmean(new_confirmed, k = 7, fill = NA)) %>% 
    select(date, MM7_death_rj, MM7_conf_rj)

Evolução Casos e Óbitos em SP

sp_mm7_2 <- dados %>% 
    filter(place_type == "state", state == "SP")

sp_mm7_2 %<>%
    mutate(MM7_death_sp = zoo::rollmean(new_deaths, k = 7, fill = NA)) %>% 
    mutate(MM7_conf_sp = zoo::rollmean(new_confirmed, k = 7, fill = NA))

plot <- ggplot(sp_mm7_2) +

    geom_line(aes(x = date,
                  y = MM7_conf_sp,
                  color = "Casos"),
              size = 1.2) +
    geom_line(aes(x = date,
                  y = MM7_death_sp,
                  color = "Mortes"),
              size = 1.2) +
    
    labs(x = "Fonte: Secretarias de Saúde das Unidades Federativas",
         y = "População afetada/dia",
         title = "COVID-19 em São Paulo",
         subtitle = "Média móvel de 7 dias e escala logarítmica") +
    theme_clean(base_size = 14,
                base_family = "mono") +
    theme(axis.text.x = element_text(size = 10,
                                     angle = 45,
                                     colour = "black",
                                     vjust = 1,
                                     hjust = 1),
          axis.title.x = element_text(size = 8),
          legend.title = element_blank(),
          legend.position = "top",
          legend.text = element_text(size=9),
          plot.subtitle = element_text(size = 10.5, color = "#A9A9A9")) +
    scale_x_date(date_labels = "%b/%y", breaks = "1 month") +
    scale_y_log10(n.breaks = 6) +
    scale_color_manual(values = c("Casos" = "#4169E1",
                                  "Mortes" = "#DC143C"))
plot

plot1 <- ggplot(sp_mm7_2) +

    geom_line(aes(x = date,
                  y = MM7_conf_sp),
                  color = "#4169E1",
              size = 0.9) +
    
    labs(x = "",
         y = "Número de casos/dia",
         title = "Casos de COVID-19",
         subtitle = "Média móvel de 7 dias") +
    theme_clean(base_size = 10,
                base_family = "mono") +
    theme(axis.text.x = element_text(size = 8,
                                     angle = 45,
                                     colour = "black",
                                     vjust = 1,
                                     hjust = 1),
          axis.title.x = element_text(size = 6),
          legend.title = element_blank(),
          legend.position = "top",
          legend.text = element_text(size=9),
          plot.subtitle = element_text(size = 10.5, color = "#A9A9A9")) +
    scale_x_date(date_labels = "%b/%y", breaks = "1 month") +
    scale_y_continuous(n.breaks = 6)

plot2 <- ggplot(sp_mm7_2) +

    geom_line(aes(x = date,
                  y = MM7_death_sp),
                  color = "#DC143C",
              size = 0.9) +
    
    labs(x = "Fonte: Secretarias de Saúde das Unidades Federativas",
         y = "Número de mortes/dia",
         title = "Mortes de COVID-19",
         subtitle = "Média móvel de 7 dias") +
    theme_clean(base_size = 10,
                base_family = "mono") +
    theme(axis.text.x = element_text(size = 8,
                                     angle = 45,
                                     colour = "black",
                                     vjust = 1,
                                     hjust = 1),
          axis.title.x = element_text(size = 7.0),
          legend.title = element_blank(),
          legend.position = "top",
          legend.text = element_text(size=9),
          plot.subtitle = element_text(size = 9.5, color = "#A9A9A9")) +
    scale_x_date(date_labels = "%b/%y", breaks = "1 month") +
    scale_y_continuous(n.breaks = 6)

grid.arrange(plot1, plot2, ncol = 2, top = "Dados em São Paulo. (Gráficos não comparáveis pois cada um está em sua própia escala)")

\[ \cdots \]

Evolução Casos e Óbitos no RJ

rj_mm7_2 <- dados %>% 
    filter(place_type == "state", state == "RJ")

rj_mm7_2 %<>%
    mutate(MM7_death_rj = zoo::rollmean(new_deaths, k = 7, fill = NA)) %>% 
    mutate(MM7_conf_rj = zoo::rollmean(new_confirmed, k = 7, fill = NA))

plot1 <- ggplot(rj_mm7_2) +

    geom_line(aes(x = date,
                  y = MM7_conf_rj),
                  color = "#4169E1",
              size = 0.9) +
    
    labs(x = "",
         y = "Número de casos/dia",
         title = "Casos de COVID-19",
         subtitle = "Média móvel de 7 dias") +
    theme_clean(base_size = 10,
                base_family = "mono") +
    theme(axis.text.x = element_text(size = 8,
                                     angle = 45,
                                     colour = "black",
                                     vjust = 1,
                                     hjust = 1),
          axis.title.x = element_text(size = 6),
          legend.title = element_blank(),
          legend.position = "top",
          legend.text = element_text(size=9),
          plot.subtitle = element_text(size = 10.5, color = "#A9A9A9")) +
    scale_x_date(date_labels = "%b/%y", breaks = "1 month") +
    scale_y_continuous(n.breaks = 6)

plot2 <- ggplot(rj_mm7_2) +

    geom_line(aes(x = date,
                  y = MM7_death_rj),
                  color = "#DC143C",
              size = 0.9) +
    
    labs(x = "Fonte: Secretarias de Saúde das Unidades Federativas",
         y = "Número de mortes/dia",
         title = "Mortes de COVID-19",
         subtitle = "Média móvel de 7 dias") +
    theme_clean(base_size = 10,
                base_family = "mono") +
    theme(axis.text.x = element_text(size = 8,
                                     angle = 45,
                                     colour = "black",
                                     vjust = 1,
                                     hjust = 1),
          axis.title.x = element_text(size = 7.0),
          legend.title = element_blank(),
          legend.position = "top",
          legend.text = element_text(size=9),
          plot.subtitle = element_text(size = 9.5, color = "#A9A9A9")) +
    scale_x_date(date_labels = "%b/%y", breaks = "1 month") +
    scale_y_continuous(n.breaks = 6)

grid.arrange(plot1, plot2, ncol = 2, top = "Dados no Rio de Janeiro. (Gráficos não comparáveis pois cada um está em sua própia escala)")

\[ \cdots \]

Taxa de Letalidade

# Gráfico da taxa de letalidade
sp_mm7_2 %<>%
    mutate(death_rate = round((MM7_death_sp * 100) / MM7_conf_sp, digits=2))

plot3 <- ggplot(sp_mm7_2) +

    geom_line(aes(x = date,
                  y = death_rate),
                  color = "#4169E1",
              size = 0.9) +
    
    labs(x = "",
         y = "Porcentagem",
         title = "Taxa de Letalidade COVID-19 SP",
         subtitle = "Média móvel de 7 dias") +
    theme_clean(base_size = 10,
                base_family = "mono") +
    theme(axis.text.x = element_text(size = 8,
                                     angle = 45,
                                     colour = "black",
                                     vjust = 1,
                                     hjust = 1),
          axis.title.x = element_text(size = 7),
          legend.title = element_blank(),
          legend.position = "top",
          legend.text = element_text(size=9),
          plot.subtitle = element_text(size = 10.5, color = "#A9A9A9")) +
    scale_x_date(date_labels = "%b/%y", breaks = "1 month") +
    scale_y_continuous(n.breaks = 10)

rj_mm7_2 %<>%
    mutate(death_rate = round((MM7_death_rj * 100) / MM7_conf_rj, digits=2))

plot4 <- ggplot(rj_mm7_2) +

    geom_line(aes(x = date,
                  y = death_rate),
                  color = "#DC143C",
              size = 0.9) +
    
    labs(x = "Fonte: Secretarias de Saúde das Unidades Federativas",
         y = "Porcentagem",
         title = "Taxa de Letalidade COVID-19 RJ",
         subtitle = "Média móvel de 7 dias") +
    theme_clean(base_size = 10,
                base_family = "mono") +
    theme(axis.text.x = element_text(size = 8,
                                     angle = 45,
                                     colour = "black",
                                     vjust = 1,
                                     hjust = 1),
          axis.title.x = element_text(size = 7),
          legend.title = element_blank(),
          legend.position = "top",
          legend.text = element_text(size=9),
          plot.subtitle = element_text(size = 9.5, color = "#A9A9A9")) +
    scale_x_date(date_labels = "%b/%y", breaks = "1 month") +
    scale_y_continuous(n.breaks = 10)
    
grid.arrange(plot3, plot4, ncol = 2, top = "Comparativo de taxa de letalidade ao longo do tempo(Observar escalas)")

\[ \cdots \]

Explorando dados diários

Últimos dias

Evolução dos casos de COVID-19 nos últimos 15 dias do Estado de São Paulo.

#ultimos 15 dias
sp <- dados %>% 
    filter(place_type == "state", state == "SP")

sp %<>%
    mutate(MM7_death_sp = zoo::rollmean(new_deaths, k = 7, fill = NA)) %>% 
    mutate(MM7_conf_sp = zoo::rollmean(new_confirmed, k = 7, fill = NA))

sp %<>%
    arrange(desc(date)) %>% 
    mutate(date2 = format(date, "%d/%b/%Y")) %>% 
    select(date2, last_available_confirmed, new_confirmed, last_available_deaths, new_deaths)

kable(head(sp, 15),
      col.names = c("Data",
                    "Total de confirmados",
                    "Confirmados no dia",
                    "Total de mortes",
                    "Mortes no dia")) %>% 
    kable_styling(full_width = FALSE,
                  bootstrap_options = c("striped","hover","condensed","responsive"))
Data Total de confirmados Confirmados no dia Total de mortes Mortes no dia
10/dez/2020 1316371 9786 43661 200
09/dez/2020 1306585 9784 43461 179
08/dez/2020 1296801 7923 43282 242
07/dez/2020 1288878 1116 43040 25
06/dez/2020 1287762 2675 43015 46
05/dez/2020 1285087 8938 42969 181
04/dez/2020 1276149 8237 42788 151
03/dez/2020 1267912 8208 42637 181
02/dez/2020 1259704 9114 42456 166
01/dez/2020 1250590 8937 42290 195
30/nov/2020 1241653 1180 42095 19
29/nov/2020 1240473 2379 42076 28
28/nov/2020 1238094 4507 42048 146
27/nov/2020 1233587 4320 41902 129
26/nov/2020 1229267 4523 41773 172

\[ \cdots \]

Dias com mais mortes

10 dias com mais mortes de COVID-19, no Estado de São Paulo.

# 10 dias com mais mortes
death_days <- sp %>% arrange(desc(new_deaths)) %>% select(date2, new_deaths)
kable(head(death_days, 10),
      col.names = c("Data",
                    "Mortes no dia")) %>% 
    kable_styling(full_width = FALSE,
                  bootstrap_options = c("striped","hover","condensed","responsive"))
Data Mortes no dia
13/ago/2020 455
23/jun/2020 434
11/ago/2020 420
14/jul/2020 417
18/ago/2020 416
25/ago/2020 407
05/ago/2020 407
25/jun/2020 407
16/jul/2020 398
09/set/2020 391

\[ \cdots \]

Análise de correlação

Verificar a correlação nas buscas de palavras relacionadas ao coronavírus no Brasil, armazenando em um data frame as informações de hits de cada palavras, retiradas dos dados fornecidos com o pacote gtrendsR. Além disso, a correlação dessas palavras com as médias móveis de mortes e casos confirmados dos Estados do Rio de Janeiro e São Paulo, com informações de Abril até hoje.

Correlação das buscas

busca1 <- gtrends(c("Teste covid"),
                     geo = c("BR"),
                     time = "2020-04-01 2020-12-09")
    
time_trend1 <-busca1$interest_over_time

time_trend1 %<>% 
    tbl_df() %>% 
    select(date, hits) %>% 
    rename(Teste_covid = hits)

busca2 <- gtrends(c("PCR"),
                     geo = c("BR"),
                     time = "2020-04-01 2020-12-09")
    
time_trend2 <-busca2$interest_over_time

time_trend2 %<>% 
    tbl_df() %>% 
    select(date, hits) %>% 
    rename(PCR = hits)

busca3 <- gtrends(c("Vacina"),
                     geo = c("BR"),
                     time = "2020-04-01 2020-12-09")
    
time_trend3 <-busca3$interest_over_time

time_trend3 %<>% 
    tbl_df() %>% 
    select(date, hits) %>% 
    rename(Vacina = hits)

busca4 <- gtrends(c("UTI"),
                     geo = c("BR"),
                     time = "2020-04-01 2020-12-09")
    
time_trend4 <-busca4$interest_over_time

time_trend4 %<>% 
    tbl_df() %>% 
    select(date, hits) %>% 
    rename(UTI = hits)

busca5 <- gtrends(c("Segunda onda"),
                     geo = c("BR"),
                     time = "2020-04-01 2020-12-09")
    
time_trend5 <-busca5$interest_over_time

time_trend5 %<>% 
    tbl_df() %>% 
    select(date, hits) %>% 
    rename(Segunda_onda = hits)
summary_df <- time_trend2 %>% left_join(time_trend1)
summary_df <- summary_df %>% left_join(time_trend3)
summary_df <- summary_df %>% left_join(time_trend4)
summary_df <- summary_df %>% left_join(time_trend5)
correl <- summary_df %>% 
    select(PCR, Teste_covid, Vacina, UTI, Segunda_onda) %>% 
    data.frame()

col1 <- colorRampPalette(c("#FC4E07", "orange", "gray", "#00AFBB", "purple"))

corrplot(cor(correl), method = "color", type = "lower", tl.col = "black", tl.srt = 35, diag = F, addCoef.col = "white", number.digits = 2, addgrid.col = "darkgray", cl.pos = "b", col = col1(100))

\[ \star \]

Correlação das buscas X dados COVID-19

Vamos analisar essas palavras buscadas no Google com os dados de médias móveis de São Paulo e Rio de Janeiro.

sp_mm7 %<>%  na.omit()
summary_df <- summary_df %>% left_join(sp_mm7)
rj_mm7 %<>%  na.omit()
summary_df <- summary_df %>% left_join(rj_mm7)
summary_df %<>%  na.omit()
correl <- summary_df %>% 
    select(PCR, Teste_covid, Vacina, UTI, Segunda_onda, MM7_death_sp, MM7_conf_sp, MM7_death_rj, MM7_conf_rj) %>% 
    data.frame()

col1 <- colorRampPalette(c("#FC4E07", "orange", "gray", "#00AFBB", "purple"))

corrplot(cor(correl), method = "color", type = "lower", tl.col = "black", tl.srt = 35, diag = F, addCoef.col = "white", number.digits = 2, addgrid.col = "darkgray", cl.pos = "b", col = col1(100))

d1 <- ggplot(correl, aes(x = MM7_death_sp,
                            y =Teste_covid)) + 
        geom_point(color = "#00AFBB") +
        geom_smooth(method = "lm",
                color = "#FC4E07",
                alpha = 0.08,
                fill = "#FC4E07") +
    labs(title = "Gráfico de dispersão COVID-19",
         x = "Mortes em SP",
         y = "Pesquisa no Google",
         subtitle = "Procura pelo termo no google: 'Teste covid' abr/20 até hoje",
         caption = "Fonte: Google Trends e Secretaria de Saúde") +
    
    theme_clean(base_size = 13,
                base_family = "mono") +
    theme(axis.text.x = element_text(size = 10,
                                     angle = 45,
                                     colour = "black",
                                     vjust = 1,
                                     hjust = 1),
          axis.title.x = element_text(size = 9),
          legend.title = element_blank(),
          legend.position = "top",
          legend.text = element_text(size=9),
          plot.subtitle = element_text(size = 10.5, color = "#A9A9A9"))
d1

\[ \star \]