Oblicz i zwizualizuj sezonową średnią
W poprzednim ćwiczeniu użyłeś(-aś) funkcji endpoints() i period.apply(), aby szybko obliczyć średnią zwycięstw i porażek Boston Red Sox na koniec każdego sezonu. A co, jeśli potrzebujesz znać skumulowaną średnią w trakcie każdego sezonu? Statystycy i kibice sportu często korzystają z tej średniej, by porównywać drużyny między sobą.
Aby obliczyć skumulowaną średnią dla każdego sezonu, wrócimy do formuły split-lapply-rbind ćwiczonej w rozdziale trzecim. Najpierw podzielisz dane według sezonu, następnie zastosujesz funkcję skumulowanej średniej do kolumny win_loss w każdym sezonie, a na końcu połączysz wartości z powrotem w obiekt xts.
Na potrzeby tego ćwiczenia przygotowano dla ciebie niestandardową funkcję cummean(), która oblicza sumę skumulowaną i dzieli ją przez liczbę uwzględnionych wartości. Dane redsox_xts wraz z kolumną win_loss są dostępne w twoim środowisku roboczym.
To ćwiczenie jest częścią kursu
Studium przypadku: analiza danych szeregów czasowych miasta w R
Instrukcje do ćwiczenia
- Użyj funkcji
split(), aby podzielić daneredsox_xtsna sezony (w tym przypadkuyears). Przypisz wynik do zmiennejredsox_seasons. - Użyj funkcji
lapply(), aby obliczyć skumulowaną średnią dla każdego sezonu. W tym ćwiczeniu przygotowano funkcjęcummean(), która oblicza sumę (przy użyciucumsum()) i dzieli ją przez liczbę wpisów w sumie (przy użyciuseq_along()). Zapisz te dane do zmiennejredsox_ytd. - Użyj funkcji
do.call()z argumentemrbind, aby przekształcić listę wynikową w pojedynczy obiekt xts (redsox_winloss) zawierający średnią zwycięstw i porażek przez cały czas trwania każdego sezonu. - Użyj funkcji
plot.xts(), aby wyświetlić skumulowaną średnią zwycięstw i porażek w sezonie2013. Pozostaw argumentylimbez zmian w gotowym kodzie.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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))