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 \]
if(!require("pacman")) install.packges("pacman")
pacman::p_load(tidyverse,
magrittr,
ggthemes,
kableExtra,
zoo,
gtrendsR,
gridExtra,
corrplot,
readr)\[ \star \]
Carregando os dados .csv
dados <- read_csv("caso_full.csv")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 \]
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 \]
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 \]
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.
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 \]
Agora vamos ver um gráfico de barras animado, dos Casos acumulados por região.
\[ \cdots \]
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)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"))
plotplot1 <- 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 \]
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 \]
# 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 \]
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 \]
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 \]
Google Trends é uma ferramenta do Google que mostra os mais populares termos buscados em um passado recente. A ferramenta apresenta gráficos com a frequência em que um termo particular é procurado em várias regiões do mundo, e em vários idiomas. Os números representam o interesse de pesquisa relativo ao ponto mais alto no gráfico de uma determinada região em um dado período. Um valor de 100 representa o pico de popularidade de um termo. Um valor de 50 significa que o termo teve metade da popularidade. Uma pontuação de 0 significa que não havia dados suficientes sobre o termo. Nos exemplos a seguir, a pesquisa de 4 palavras relacionadas a pandemia de COVID-19, pesquisadas no Brasil, de Abril até hoje.
busca_google <- function(busca, plot){
teste <- gtrends(c(busca),
geo = c("BR"),
time = "2020-04-01 2020-12-09")
time_trend <-teste$interest_over_time
g1 <-ggplot(data=time_trend,
aes(x=date, y=hits, group=keyword, col=keyword)) +
geom_line(size = .9, alpha = .75) +
ylab("Interesse relativo") +
labs(subtitle = "Interesse ao longo do tempo: Abr/2020 até hoje",
caption = "Fonte: Google Trends") +
theme_clean(base_size = 14, base_family = "mono") +
theme(legend.title = element_blank(),
legend.position = "bottom",
legend.text = element_text(size=9),
plot.subtitle = element_text(size = 10.5, color = "#A9A9A9"),
axis.title.x = element_blank()) +
ggtitle("Volume de Busca no Google") +
scale_color_brewer(palette = "Dark2")
if(plot == TRUE){
g1
}
}busca_google("UTI", TRUE)\[ \cdots \]
busca_google("Teste covid", TRUE)\[ \cdots \]
busca_google("PCR", TRUE)\[ \cdots \]
busca_google("Vacina", TRUE)\[ \cdots \]
busca_google("Segunda onda", TRUE)\[ \cdots \]
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.
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 \]
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 \]
\(\quad\)