Saison-Durchschnitt berechnen und plotten
In der vorherigen Übung hast du mit endpoints() und period.apply() schnell den Sieg/Niederlage-Durchschnitt der Boston Red Sox am Ende jeder Saison berechnet. Aber was, wenn du den kumulativen Durchschnitt über den Verlauf jeder Saison brauchst? Statistiker und Sportfans verlassen sich oft auf diesen Durchschnitt, um ein Team mit seinen Rivalen zu vergleichen.
Um in jeder Saison einen kumulativen Durchschnitt zu berechnen, kehrst du zur in Kapitel 3 geübten split-lapply-rbind-Formel zurück. Zuerst teilst du die Daten nach Saison auf, dann wendest du in jeder Saison eine Funktion für den kumulativen Mittelwert auf die Spalte win_loss an, und anschließend fügst du die Werte wieder zu einem xts-Objekt zusammen.
Eine benutzerdefinierte Funktion cummean(), die eine kumulative Summe bildet und durch die Anzahl der in der Summe enthaltenen Werte teilt, wurde für dich vorbereitet. Die Daten redsox_xts einschließlich der Spalte win_loss stehen in deiner Arbeitsumgebung bereit.
Diese Übung ist Teil des Kurses
Fallstudie: Zeitreihendaten von Städten in R analysieren
Anleitung zur Übung
- Verwende
split(), um dieredsox_xts-Daten in Saisons (hier:years) aufzuteilen. Weise das Ergebnisredsox_seasonszu. - Verwende
lapply(), um für jede Saison den kumulativen Mittelwert zu berechnen. Für diese Übung steht eine Funktioncummean()bereit, die die Summe (mitcumsum()) bildet und durch die Anzahl der Einträge in der Summe (mitseq_along()) teilt. Speichere diese Daten inredsox_ytd. - Verwende
do.call()mitrbind, um deine Listen-Ausgabe in ein einzelnes xts-Objekt (redsox_winloss) zu konvertieren, das den Sieg/Niederlage-Durchschnitt über jede Saison hinweg enthält. - Verwende
plot.xts(), um den kumulativen Sieg/Niederlage-Durchschnitt in der Saison2013anzuzeigen. Lass das Argumentylimin deinem vorgefertigten Code unverändert.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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))