Výpočet a vizualizace sezónního průměru
V předchozím cvičení jsi pomocí endpoints() a period.apply() rychle vypočítal/a průměr výher a proher Boston Red Sox na konci každé sezóny. Co kdybys ale potřeboval/a znát kumulativní průměr v průběhu každé sezóny? Statistici i fanoušci sportu se na tento průměr často spoléhají, když porovnávají výkon týmu s jeho rivaly.
Pro výpočet kumulativního průměru v každé sezóně se vrátíme ke vzoru split-lapply-rbind, který jsme procvičovali ve třetí kapitole. Nejprve rozdělíš data podle sezóny, pak na sloupec win_loss v každé sezóně aplikuješ funkci kumulativního průměru a nakonec hodnoty spojíš zpět do objektu xts.
Vlastní funkce cummean(), která vypočítá kumulativní součet a vydělí ho počtem zahrnutých hodnot, je už připravená. Data redsox_xts včetně sloupce win_loss máš k dispozici ve svém prostředí.
Toto cvičení je součástí kurzu
Případová studie: Analýza časových řad městských dat v R
Pokyny k cvičení
- Pomocí
split()rozděl dataredsox_xtspodle sezón (v tomto případě podleyears). Výsledek ulož doredsox_seasons. - Pomocí
lapply()vypočítej kumulativní průměr pro každou sezónu. Pro toto cvičení je připravená funkcecummean(), která vypočítá součet (pomocícumsum()) a vydělí ho počtem prvků v součtu (pomocíseq_along()). Data ulož doredsox_ytd. - Pomocí
do.call()s argumentemrbindpřeveď výstup ve formě listu na jeden objekt xts (redsox_winloss), který obsahuje průměr výher a proher v průběhu každé sezóny. - Pomocí
plot.xts()zobraz kumulativní průměr výher a proher během sezóny2013. Argumentylimponech tak, jak je ve předvyplněném kódu.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Split redsox_xts win_loss data into years
redsox_seasons <- split(___$___, f = "___")
# Use lapply to calculate the cumulative mean for each season
redsox_ytd <- lapply(___, cummean)
# Use do.call to rbind the results
redsox_winloss <- do.call(___, ___)
# Plot the win_loss average for the 2013 season
plot.xts(___["___"], ylim = c(0, 1))