Hlavní navigace

Máte třetí vlnu? A mohl bych ji vidět?

22. 1. 2021 21:02 (aktualizováno) Petr Kajzar

Pandemické vlny zřejmě nemají žádnou definici. Jde vlastně jen o shodu vlády, médií, lidu, že tomuhle kopečku na grafu budeme nějak říkat. Pojmenování vyvolává dojem, že jsme něco poznali a provedli nějakou akci (aspoň tedy ono pojmenování). No a tak se stalo, že se pacienti ptají, jestli bude čtvrtá vlna.

Tohle je fakt záludná otázka. Nejsem odborník a prakticky vůbec nesleduju zpravodajství. Tak mi nezbývá, než spustit eRko a podívat se do dat. Zjistím, kolik kopečků se od začátku pandemie událo.

Vezmu si data Evropského střediska pro prevenci a kontrolu nemocí (European Centre for Disease Prevention and Control, ECDC). Sice během prosince přešli z denního na týdenní cyklus zveřejňování dat, ale pro můj účel to nevadí, spíše budu rád.

Pro zobrazení dat použiju jazyk R a balíček ggplot2.

# nacteme balicek ggplot2 pro zobrazeni dat
library(ggplot2)

# nacteme data ze stranek ECDC
covid_data <- read.csv("https://opendata.ecdc.europa.eu/covid19/casedistribution/csv")

Prozkoumám, jak vypadají získaná data.

str(covid_data)
#> 'data.frame':    10005 obs. of  10 variables:
#>  $ dateRep                                        : chr  "18/01/2021" "11/01/2021" "04/01/2021" "28/12/2020" ...
#>  $ year_week                                      : chr  "2021-02" "2021-01" "2020-53" "2020-52" ...
#>  $ cases_weekly                                   : int  557 675 902 1994 740 1757 1672 1073 1368 1164 ...
#>  $ deaths_weekly                                  : int  45 71 60 88 111 71 137 68 69 61 ...
#>  $ countriesAndTerritories                        : chr  "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
#>  $ geoId                                          : chr  "AF" "AF" "AF" "AF" ...
#>  $ countryterritoryCode                           : chr  "AFG" "AFG" "AFG" "AFG" ...
#>  $ popData2019                                    : int  38041757 38041757 38041757 38041757 38041757 38041757 38041757 38041757 38041757 38041757 ...
#>  $ continentExp                                   : chr  "Asia" "Asia" "Asia" "Asia" ...
#>  $ notification_rate_per_100000_population_14.days: num  3.24 4.15 7.61 7.19 6.56 9.01 7.22 6.42 6.66 4.65 ...

To vypadá slušně, mám přehled o týdenním počtu případů (proměnná cases_weekly) a úmrtí ( deaths_weekly) v jednotlivých zemích ( countriesAndTerritories) k danému datu ( dateRep).

Potřebuji jen převést proměnnou dateRep na datum:

covid_data$dateRep = as.Date(covid_data$dateRep, format = "%d/%m/%Y")

Rád bych měl přehled o všech zemích EU, tak si připravím vektor:

# toto jsou evropske zeme
eu_countries <- c("Austria", "Belgium", "Bulgaria", "Croatia", "Cyprus",
                  "Czechia", "Denmark", "Estonia", "Finland", "France",
                  "Germany", "Greece", "Hungary", "Ireland", "Italy", "Latvia",
                  "Lithuania", "Luxembourg", "Malta", "Netherlands", "Poland",
                  "Portugal", "Romania", "Slovakia", "Slovenia", "Spain",
                  "Sweden")

A profiltruji dataset, abych získal opravdu jen data EU:

eu_data <- covid_data[covid_data$countriesAndTerritories %in% eu_countries, ]

No a konečně můžu kreslit:

ggplot(eu_data, aes(x = dateRep, y = cases_weekly)) +
    geom_line() +
    facet_wrap(~ countriesAndTerritories)

Nevypadá to úplně špatně. Kreslím týdenní počet případů na ose y k danému datu na ose x. Grafy pak rozdělím pomocífacet_wrap() podle zemí, ať je nemám všechny v jedné hromadě.

Protože cílem je vidět jen kopečky a spočítat vlny, můžu si dovolit zrušit čísla na osách pomocí theme_void() a popisku země přesunu pod jednotlivé grafy pomocí parametru strip.position ve funkci  facet_wrap().

ggplot(eu_data, aes(x = dateRep, y = cases_weekly)) +
    geom_line() +
    facet_wrap(~ countriesAndTerritories,
        strip.position = "bottom") +
    theme_void() +
    labs(title = "Absolutní počet případů COVID-19 v EU zemích")

Tohle vypadá ještě lépe. Vidíme, že některé země bojují s virem víc než jiné. Můžu si zkusit vykreslit stejná data s přepočtem na počet obyvatel dané země, protože dataset obsahuje proměnnou popData2019 , čili počet obyvatel dané země v roce 2019.

ggplot(eu_data, aes(x = dateRep, y = cases_weekly/popData2019)) +
    geom_line() +
    facet_wrap(~ countriesAndTerritories,
        strip.position = "bottom") +
    theme_void() +
    labs(title = "Relativní počet případů COVID-19 v EU zemích na počet obyvatel")

Tady už naše republika nevypadá jako úplné neviňátko. Pokud chci dokonale spočítat kopečky pandemie v dané zemi, můžu rozvolnit osu y. Neboli každá země bude mít svou vlastní osu y tak, aby linie grafu vyplnila prostor až nahoru ke kraji. To pak ale znamená, že země nebudou porovnatelné mezi sebou navzájem, půjde jen o relativní vývoj nových případů onemocnění v dané zemi v daném týdnu vůči maximálnímu počtu případů za týden v dané zemi. Z takového grafu jde už jen propočítat, zda je první vlna větší než druhá, nebo zda daná země pomalu ztrácí disciplínu a třetí vlna je nejhorší.

Rozvolnění osy y provedeme parametrem scale = "free_y" ve funkci  facet_wrap:

ggplot(eu_data, aes(x = dateRep, y = cases_weekly)) +
    geom_line() +
    facet_wrap(~ countriesAndTerritories,
        scale = "free_y",
        strip.position = "bottom") +
    theme_void() +
    labs(title = "Počet případů COVID-19 v EU zemích s volnou osou 'y'")

Z tohoto grafu vychází např. Taiwan výborně (má první vlnu nejvyšší, ale není na tomto EU grafu), zatímco ČR po vzorové první vlně najednou skáče jako jojo a Španělsko se utrhává z řetězu s každou další vlnou.

Jsou to jen prachbídné hrátky s vizualizací dat a nakonec nám grafy neřekly nic nového, co bychom dávno nevěděli. Aspoň si můžeme psát čárky za každý nový kopeček. A až bude vln pandemie více než vln EET, pak teprve začne ta pravá legrace!

Sdílet