Bereken en plot een seizoensgemiddelde
In de vorige oefening gebruikte je endpoints() en period.apply() om snel het winst/verliesgemiddelde voor de Boston Red Sox aan het einde van elk seizoen te berekenen. Maar wat als je de cumulatieve gemiddelde tijdens elk seizoen nodig hebt? Statistici en sportfans vertrouwen vaak op dit gemiddelde om een team met zijn rivalen te vergelijken.
Om een cumulatieve gemiddelde in elk seizoen te berekenen, ga je terug naar de split-lapply-rbind-aanpak uit hoofdstuk drie. Eerst splits je de gegevens per seizoen, daarna pas je een cumulatieve gemiddeldefunctie toe op de kolom win_loss in elk seizoen, en vervolgens voeg je de waarden weer samen tot één xts-object.
Een aangepaste functie cummean(), die een cumulatieve som berekent en deelt door het aantal waarden in die som, is al voor je gemaakt. De gegevens redsox_xts, inclusief de kolom win_loss, zijn beschikbaar in je werkruimte.
Deze oefening maakt deel uit van de cursus
Casestudy: Tijdreeksgegevens van een stad analyseren in R
Oefeninstructies
- Gebruik
split()om de gegevensredsox_xtsop te splitsen in seizoenen (in dit gevalyears). Ken dit toe aanredsox_seasons. - Gebruik
lapply()om het cumulatieve gemiddelde voor elk seizoen te berekenen. Voor deze oefening is een functiecummean()ontworpen die de som berekent (metcumsum()) en deelt door het aantal waarden in de som (metseq_along()). Sla deze gegevens op inredsox_ytd. - Gebruik
do.call()metrbindom je lijstoutput om te zetten in één xts-object (redsox_winloss) dat het winst/verliesgemiddelde gedurende elk seizoen bevat. - Gebruik
plot.xts()om het cumulatieve winst/verliesgemiddelde tijdens het seizoen2013te bekijken. Laat het argumentylimstaan zoals in de voorgeschreven code.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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))