Kom igångKom igång gratis

Beräkna och visualisera ett säsongsmedelvärde

I föregående övning använde du endpoints() och period.apply() för att snabbt beräkna vinst/förlust-genomsnittet för Boston Red Sox i slutet av varje säsong. Men vad händer om du behöver känna till det kumulativa genomsnittet under varje säsong? Statistiker och sportentusiaster förlitar sig ofta på detta genomsnitt för att jämföra ett lag med dess rivaler.

För att beräkna ett kumulativt medelvärde per säsong behöver du återgå till formeln split-lapply-rbind som du använde i kapitel tre. Först delar du upp data efter säsong, sedan tillämpar du en kumulativ medelvärdesfunktion på kolumnen win_loss för varje säsong, och slutligen binder du ihop värdena till ett xts-objekt.

En anpassad cummean()-funktion, som beräknar en kumulativ summa och dividerar med antalet värden i summan, har redan skapats åt dig. Data i redsox_xts, inklusive kolumnen win_loss, finns tillgänglig i din arbetsmiljö.

Den här övningen är en del av kursen

Fallstudie: Analys av tidsseridata för städer i R

Visa kurs

Övningsinstruktioner

  • Använd split() för att dela upp redsox_xts-data i säsonger (i det här fallet years). Tilldela resultatet till redsox_seasons.
  • Använd lapply() för att beräkna det kumulativa medelvärdet för varje säsong. I den här övningen finns en cummean()-funktion som beräknar summan (med cumsum()) och dividerar med antalet poster i summan (med seq_along()). Spara resultatet i redsox_ytd.
  • Använd do.call() med rbind för att konvertera din listutdata till ett enskilt xts-objekt (redsox_winloss) som innehåller vinst/förlust-genomsnittet under varje säsong.
  • Använd plot.xts() för att visualisera det kumulativa vinst/förlust-genomsnittet under säsongen 2013. Lämna argumentet ylim som det är i den förberedda koden.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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))
Redigera och kör kod