1. Da epidemia à pandemia

Em dezembro de 2019, o coronavírus COVID-19 foi identificado pela primeira vez na região de Wuhan, na China. Em 11 de março de 2020, a Organização Mundial da Saúde (OMS) classificou o surto de COVID-19 como uma pandemia. Muita coisa aconteceu nos meses seguintes, com grandes surtos no Irã, Coréia do Sul e Itália.

Sabemos que o COVID-19 se espalha por gotículas respiratórias, como tossir, espirrar ou falar. Mas, com que rapidez o vírus se espalhou pelo mundo? E podemos ver algum efeito das políticas em todo o país, como paralisações e quarentenas?

Felizmente, organizações em todo o mundo estão coletando dados para que os governos possam monitorar e aprender com essa pandemia. Notavelmente, o Centro de Ciência e Engenharia da Universidade Johns Hopkins criou um repositório de dados publicamente disponível para consolidar esses dados de fontes como a OMS, os Centros de Controle e Prevenção de Doenças (CDC) e o Ministério da Saúde de vários países.

Neste caderno, você visualizará os dados do COVID-19 das primeiras semanas do surto para ver em que ponto esse vírus se tornou uma pandemia global.

Observe que as informações e dados referentes ao COVID-19 estão sendo atualizados com freqüência. Os dados utilizados neste projeto foram extraídos em 17 de março de 2020 e não devem ser considerados os dados mais atualizados disponíveis.

# Load the readr, ggplot2, and dplyr packages
library(readr)
library(ggplot2)
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
 ##Defina o ambiente de trabalho onde os arquivos estão armazenados no seu computador
setwd("~/Dropbox (InteligCooperativa)/Projetos de Ensino/2 - Esp CEUB CD/Visualizing COVID-19")

# Leia datasets/confirmed_cases_worldwide.csv para o arquivo confirmed_cases_worldwide
confirmed_cases_worldwide <- read_csv("datasets/confirmed_cases_worldwide.csv")
## Parsed with column specification:
## cols(
##   date = col_date(format = ""),
##   cum_cases = col_double()
## )
# See the result
confirmed_cases_worldwide
## # A tibble: 56 x 2
##    date       cum_cases
##    <date>         <dbl>
##  1 2020-01-22       555
##  2 2020-01-23       653
##  3 2020-01-24       941
##  4 2020-01-25      1434
##  5 2020-01-26      2118
##  6 2020-01-27      2927
##  7 2020-01-28      5578
##  8 2020-01-29      6166
##  9 2020-01-30      8234
## 10 2020-01-31      9927
## # … with 46 more rows

2. Casos confirmados em todo o mundo

A tabela acima mostra os casos cumulativos confirmados de COVID-19 em todo o mundo por data. Apenas ler os números em uma tabela dificulta a compreensão da escala e do crescimento do surto. Vamos desenhar um gráfico de linhas para visualizar os casos confirmados em todo o mundo.

3. China em comparação com o resto do mundo

O eixo y nesse gráfico é bastante assustador, com o número total de casos confirmados em todo o mundo se aproximando de 200.000. Além disso, algumas coisas estranhas estão acontecendo: há um salto estranho no meio de fevereiro, então a taxa de novos casos diminui por um tempo e depois acelera novamente em março. Precisamos nos aprofundar para ver o que está acontecendo.

No início do surto, os casos do COVID-19 estavam concentrados principalmente na China. Vamos traçar os casos confirmados de COVID-19 na China e no resto do mundo separadamente, para ver se isso nos dá alguma ideia.

Vamos desenvolver esse gráfico em tarefas futuras. Uma coisa que será importante para as tarefas a seguir é que você adicione estética dentro da geometria da linha do seu ggplot, em vez de torná-la estética global.

#Leia datasets/confirmed_cases_china_vs_world.csv
confirmed_cases_china_vs_world <- read_csv("datasets/confirmed_cases_china_vs_world.csv")
## Parsed with column specification:
## cols(
##   is_china = col_character(),
##   date = col_date(format = ""),
##   cases = col_double(),
##   cum_cases = col_double()
## )
# Veja os resultados
glimpse(confirmed_cases_china_vs_world)
## Rows: 112
## Columns: 4
## $ is_china  <chr> "China", "China", "China", "China", "China", "China", "Chin…
## $ date      <date> 2020-01-22, 2020-01-23, 2020-01-24, 2020-01-25, 2020-01-26…
## $ cases     <dbl> 548, 95, 277, 486, 669, 802, 2632, 578, 2054, 1661, 2089, 4…
## $ cum_cases <dbl> 548, 643, 920, 1406, 2075, 2877, 5509, 6087, 8141, 9802, 11…
# Desenhe um gráfico de linha dos cumulative cases vs. date, agrupado e colorido por is_china
# Defina a estética com o line geom
plt_cum_confirmed_cases_china_vs_world <- ggplot(confirmed_cases_china_vs_world) +
  geom_line(aes(date, cum_cases, group = is_china, color = is_china)) +
  ylab("Cumulative confirmed cases")

# Veja o gráfico
plt_cum_confirmed_cases_china_vs_world

4. Vamos anotar!

Uau! As duas linhas têm formas muito diferentes. Em fevereiro, a maioria dos casos ocorreu na China. Isso mudou em março, quando realmente se tornou um surto global: por volta de 14 de março, o número total de casos fora da China superou os casos dentro da China. Isso aconteceu dias depois que a OMS declarou uma pandemia.

Houve alguns outros eventos marcantes que ocorreram durante o surto. Por exemplo, o grande salto na linha da China em 13 de fevereiro de 2020 não foi apenas um dia ruim para o surto; A China mudou a maneira como relatou os dados naquele dia (as tomografias foram aceitas como evidência para o COVID-19, em vez de apenas testes de laboratório).

Ao anotar eventos como esse, podemos interpretar melhor as alterações no gráfico.

who_events <- tribble(
  ~ date, ~ event,
  "2020-01-30", "Global health\nemergency declared",
  "2020-03-11", "Pandemic\ndeclared",
  "2020-02-13", "China reporting\nchange"
) %>%
  mutate(date = as.Date(date))

# Using who_events, add vertical dashed lines with an xintercept at date
# and text at date, labeled by event, and at 100000 on the y-axis
plt_cum_confirmed_cases_china_vs_world +
  geom_vline(aes(xintercept = date), data = who_events, linetype = "dashed") + 
  geom_text(aes(x = date, label = event), data = who_events, y = 1e5)

5. Adicionando uma linha de tendência à China

Ao tentar avaliar quão grandes serão os problemas futuros, precisamos de uma medida da rapidez com que o número de casos está crescendo. Um bom ponto de partida é verificar se os casos estão crescendo mais rápido ou mais lentamente do que linearmente.

Há uma clara onda de casos por volta de 13 de fevereiro de 2020, com a mudança de relatórios na China. No entanto, alguns dias depois, o crescimento de casos na China diminui. Como podemos descrever o crescimento do COVID-19 na China após 15 de fevereiro de 2020?

# Filtre China, na data de Feb 15
china_after_feb15 <- confirmed_cases_china_vs_world %>%
  filter(is_china == "China", date >= "2020-02-15")

# Usando china_after_feb15, desenhe um gráfico de linha cum_cases vs. date
# Adicione uma linha suave utilizando regressão linerar sem barra de erro
ggplot(data = china_after_feb15, aes(x = date, y = cum_cases)) +
  geom_line() +
  geom_smooth(method = "lm", se = FALSE) +
  ylab("Cumulative confirmed cases")
## `geom_smooth()` using formula 'y ~ x'

6. E o resto do mundo?

A partir do gráfico acima, a taxa de crescimento na China é mais lenta que linear. Essa é uma ótima notícia, pois indica que a China pelo menos conteve o vírus no final de fevereiro e no início de março.

Como o resto do mundo se compara ao crescimento linear?

# Filtre confirmed_cases_china_vs_world para not China
not_china <- confirmed_cases_china_vs_world %>%
  filter(is_china == "Not China")

# Usando not_china, desenhe um gráfico de linha cum_cases vs. date
# Adicione uma linha suave utilizando regressão linerar sem barra de erro
plt_not_china_trend_lin <- ggplot(data = not_china, aes(x = date, y = cum_cases)) +
  geom_line() +
  geom_smooth(method = "lm", se = FALSE) +
  ylab("Cumulative confirmed cases")

# Veja os resultados
plt_not_china_trend_lin 
## `geom_smooth()` using formula 'y ~ x'

7. Adicionando uma escala logarítmica

A partir do gráfico acima, podemos ver que uma linha reta não se encaixa bem e o resto do mundo está crescendo muito mais rápido do que linearmente. E se adicionarmos uma escala logarítmica ao eixo y?

# Modifique o gráfico e use escala logarítimica no eixo y
plt_not_china_trend_lin + 
  scale_y_log10()
## `geom_smooth()` using formula 'y ~ x'

8. Quais países fora da China foram os mais atingidos?

Com a escala logarítmica, temos um ajuste muito mais próximo aos dados. Do ponto de vista da ciência de dados, um bom ajuste é uma ótima notícia. Infelizmente, do ponto de vista da saúde pública, isso significa que os casos de COVID-19 no resto do mundo estão crescendo a uma taxa exponencial, o que é uma notícia terrível.

Nem todos os países estão sendo afetados pelo COVID-19 igualmente, e seria útil saber onde os problemas são maiores no mundo. Vamos encontrar os países fora da China com os casos mais confirmados em nosso conjunto de dados.

# Rode este código para pegar os dados de cada pais
confirmed_cases_by_country <- read_csv("datasets/confirmed_cases_by_country.csv")
## Parsed with column specification:
## cols(
##   country = col_character(),
##   province = col_character(),
##   date = col_date(format = ""),
##   cases = col_double(),
##   cum_cases = col_double()
## )
glimpse(confirmed_cases_by_country)
## Rows: 13,272
## Columns: 5
## $ country   <chr> "Afghanistan", "Albania", "Algeria", "Andorra", "Antigua an…
## $ province  <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ date      <date> 2020-01-22, 2020-01-22, 2020-01-22, 2020-01-22, 2020-01-22…
## $ cases     <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ cum_cases <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
# Agrupe por country, sumarize para calcular o total de casos, mostre os 7 maiores
top_countries_by_total_cases <- confirmed_cases_by_country %>%
  group_by(country) %>%
  summarize(total_cases = max(cum_cases)) %>%
  top_n(7, total_cases)
## `summarise()` ungrouping output (override with `.groups` argument)
# Veja os resultados
top_countries_by_total_cases
## # A tibble: 7 x 2
##   country      total_cases
##   <chr>              <dbl>
## 1 France              7699
## 2 Germany             9257
## 3 Iran               16169
## 4 Italy              31506
## 5 Korea, South        8320
## 6 Spain              11748
## 7 US                  6421

9. Traçando os países mais atingidos em meados de março de 2020

Embora o surto tenha sido identificado pela primeira vez na China, existe apenas um país do leste da Ásia (Coréia do Sul) na tabela acima. Quatro dos países listados (França, Alemanha, Itália e Espanha) estão na Europa e compartilham fronteiras. Para obter mais contexto, podemos traçar os casos confirmados desses países ao longo do tempo.

Finalmente, parabéns por chegar ao último passo! Se você deseja continuar fazendo visualizações ou encontrar os países mais atingidos a partir de hoje, faça suas próprias análises com os dados mais recentes disponíveis aqui.

# Rode este código para pegar os dados dos 7 países com mais casos
confirmed_cases_top7_outside_china <- read_csv("datasets/confirmed_cases_top7_outside_china.csv")
## Parsed with column specification:
## cols(
##   country = col_character(),
##   date = col_date(format = ""),
##   cum_cases = col_double()
## )
# 
glimpse(confirmed_cases_top7_outside_china)
## Rows: 2,030
## Columns: 3
## $ country   <chr> "Germany", "Iran", "Italy", "Korea, South", "Spain", "US", …
## $ date      <date> 2020-02-18, 2020-02-18, 2020-02-18, 2020-02-18, 2020-02-18…
## $ cum_cases <dbl> 16, 0, 3, 31, 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13…
# Usando confirmed_cases_top7_outside_china, desenhe um gráfico de linha
# cum_cases vs. date, agrupado e colorido por country
ggplot(confirmed_cases_top7_outside_china, aes(date, cum_cases, color = country, group = country)) +
  geom_line() +
  ylab("Cumulative confirmed cases")