I denne labben skal vi bruke r til å laste-inn, visualisere og analysere data om korona-pandemien.

Det kan kanskje være nyttig å se tilbake til prelab og (https://jmaurit.github.io/makro/labs/lab1.html)[intro til r] fra forrige semester.

Hvis det er kommandoer som du ikke forstår, så er det ingen grunn for bekymring. Vi skal gå grundig gjennom r i løpet av semesteret.

Data om koronaviruset.

Vi bruker coronavirus pakken som samler data fra Johns Hopkins University Center for Systems Science

Vi kan installere den direkte fra forfatterens github-side, men for det trenger vi noen funksjoner fra pakken devtools:

install.packages("devtools")

Vanligvis trenger vi bare å kjøre install.packages (eller her install_github) en gang, men her vil vi om-installere hver gang vi ønsker å oppdatere dataen.

library(devtools)
## Loading required package: usethis
devtools::install_github("RamiKrispin/coronavirus")
## Skipping install of 'coronavirus' from a github remote, the SHA1 (723ee9d2) has not changed since last install.
##   Use `force = TRUE` to force installation

Vi skal også bruke verktøyene i tidyverse

library(tidyverse)
## ── Attaching packages ──────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.0     ✓ purrr   0.3.4
## ✓ tibble  3.0.3     ✓ dplyr   0.8.5
## ✓ tidyr   1.1.0     ✓ stringr 1.4.0
## ✓ readr   1.3.1     ✓ forcats 0.5.0
## ── Conflicts ─────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(coronavirus)

Pakken coronavirus består kun av 2 store data frames. Den som heter coronavirus inneholder den fullstendige tidsrekker av bekreftet koronatilfeller fra ulike land.

head(coronavirus)
##         date province     country      lat     long      type cases
## 1 2020-01-22          Afghanistan 33.93911 67.70995 confirmed     0
## 2 2020-01-23          Afghanistan 33.93911 67.70995 confirmed     0
## 3 2020-01-24          Afghanistan 33.93911 67.70995 confirmed     0
## 4 2020-01-25          Afghanistan 33.93911 67.70995 confirmed     0
## 5 2020-01-26          Afghanistan 33.93911 67.70995 confirmed     0
## 6 2020-01-27          Afghanistan 33.93911 67.70995 confirmed     0

Datasettet består av tre typer data:

unique(coronavirus$type)
## [1] "confirmed" "death"     "recovered"

Let’s start by plotting the total number of new confirmed cases and deaths by date.

vi begynner med å plotte de totale antalle nye bekreftet Covid-19 tilfeller og dødsfall per dag.

totals = coronavirus %>% group_by(date, type) %>% 
  summarise(
    total_new_cases = sum(cases)
  )


totals %>% ggplot(aes(x=date, y=total_new_cases)) +
                    geom_line() +
                    facet_wrap(~type, ncol=1, scales="free_y")

Vi kan også skape og plotte kumulative figurer:

totals = totals %>% group_by(type) %>%  mutate(
    total_cum_cases = cumsum(total_new_cases)
  )

totals %>% ggplot(aes(x=date, y=total_cum_cases)) +
                    geom_line() +
                    facet_wrap(~type, ncol=1, scales="free_y")

Det kan være nyttig å se på figurene i log 10 skala:

totals %>% ggplot(aes(x=date, y=total_cum_cases)) +
                    geom_line() +
                    facet_wrap(~type, ncol=1, scales="free_y") +
                  scale_y_log10() 

Kartlegge data

Det kan også være nyttig å se på den geografiske dataen. For å gjøre dette må du etablere en (gratis) konto på google cloud og skaffe deg en “key” til å få laste ned kart fra google.

Du kan hoppe over dette hvis du ikke vil skaffe deg konto med google.

library(ggmap)
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
register_google(key="put_your_google_cloud_key_here")

Vi kan se på Europa

europe=get_map(location = c(lon = 10, lat = 55), zoom=4, maptype="roadmap") 
## Source : https://maps.googleapis.com/maps/api/staticmap?center=55,10&zoom=4&size=640x640&scale=2&maptype=roadmap&language=en-EN&key=xxx

Og da kan vi begynne å lage vår kart.

Vi begynner ved å filterere ut data basert på breddegrad og lengdegrad (lattitude og longitude)

euro_data = coronavirus %>% dplyr::filter(long>-20, long<40, lat>38, lat<70)

Og da kan vi aggregere til kumulativ data:

euro_cum = euro_data %>% group_by(country, type) %>% summarise(
  cumCases = sum(cases),
  long = mean(long),
  lat =mean(lat)
)

euro_confirmed = euro_cum %>% filter(type=="confirmed")
ggmap(europe) +
geom_point(aes(x = long, y = lat, size=cumCases), color="red", data = euro_confirmed)
## Warning: Removed 1 rows containing missing values (geom_point).

Facets

For mapping multiple trends - like cumulative cases in multiple countries, facets can be an effective strategy. Here I will plot the trend line for all european countries

For å plotte flere trender samtidig – som tilfeller i flere land – kan facets være en effektiv strategi. Her skal vi plotte trendlinjen for kumulative tilfeller for alle europeiske land:

#First exclude provinces/states - only look at national level
euro_data = euro_data %>% filter(province=="")
euro_data = euro_data %>% group_by(type, country) %>% mutate(
  cumCases = cumsum(cases)
)
euro_data %>% filter(type=="confirmed", date>as.Date("2020-02-15")) %>% ggplot(aes(x=date, y=cumCases)) +
  geom_line(color="red") +
  facet_wrap(~country, ncol=5, scales="free_y") +
  theme_classic() +
   theme(axis.text.x = element_text(angle = 90))

For videre analyse, en anbefaling ville vært å linke koronavirus data med nasjonal økonomisk data fra PENN world tables, som gir info om for eksempel BNP, befolkning, osv.

Du kan laste ned PENN data fra min webside her:

penn = read_csv("https://jmaurit.github.io/makro/labs/data/pwt90.csv")
## Parsed with column specification:
## cols(
##   `countrycode;country;currency_unit;year;rgdpe;rgdpo;pop;emp;avh;hc;ccon;cda;cgdpe;cgdpo;ck;ctfp;cwtfp;rgdpna;rconna;rdana;rkna;rtfpna;rwtfpna;labsh;delta;xr;pl_con;pl_da;pl_gdpo;i_cig;i_xm;i_xr;i_outlier;cor_exp;statcap;csh_c;csh_i;csh_g;csh_x;csh_m;csh_r;pl_c;pl_i;pl_g;pl_x;pl_m;pl_k` = col_character()
## )
## Warning: 9869 parsing failures.
## row col  expected     actual                                                  file
##  21  -- 1 columns 31 columns 'https://jmaurit.github.io/makro/labs/data/pwt90.csv'
##  22  -- 1 columns 31 columns 'https://jmaurit.github.io/makro/labs/data/pwt90.csv'
##  23  -- 1 columns 31 columns 'https://jmaurit.github.io/makro/labs/data/pwt90.csv'
##  24  -- 1 columns 31 columns 'https://jmaurit.github.io/makro/labs/data/pwt90.csv'
##  25  -- 1 columns 31 columns 'https://jmaurit.github.io/makro/labs/data/pwt90.csv'
## ... ... ......... .......... .....................................................
## See problems(...) for more details.