Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Gebruik split() om de gegevens redsox_xts op te splitsen in seizoenen (in dit geval years). Ken dit toe aan redsox_seasons.
  • Gebruik lapply() om het cumulatieve gemiddelde voor elk seizoen te berekenen. Voor deze oefening is een functie cummean() ontworpen die de som berekent (met cumsum()) en deelt door het aantal waarden in de som (met seq_along()). Sla deze gegevens op in redsox_ytd.
  • Gebruik do.call() met rbind om 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 seizoen 2013 te bekijken. Laat het argument ylim staan 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))
Code bewerken en uitvoeren