IniziaInizia gratis

Calcolare e tracciare una media stagionale

Nell’esercizio precedente hai usato endpoints() e period.apply() per calcolare rapidamente la media vittorie/sconfitte dei Boston Red Sox alla fine di ogni stagione. Ma cosa fare se ti serve conoscere la media cumulativa per tutta la durata di ciascuna stagione? Sia gli statistici sia gli appassionati di sport si affidano spesso a questa media per confrontare una squadra con le sue rivali.

Per calcolare una media cumulativa in ogni stagione, dovrai tornare alla formula split-lapply-rbind vista nel Capitolo Tre. Per prima cosa, suddividerai i dati per stagione, poi applicherai una funzione di media cumulativa alla colonna win_loss in ciascuna stagione e infine unirai di nuovo i valori in un oggetto xts.

Per te è stata preparata una funzione personalizzata cummean(), che genera una somma cumulativa e la divide per il numero di valori inclusi nella somma. I dati redsox_xts, inclusa la colonna win_loss, sono disponibili nel tuo workspace.

Questo esercizio fa parte del corso

Caso di studio: analisi di serie temporali cittadine in R

Visualizza il corso

Istruzioni dell'esercizio

  • Usa split() per suddividere i dati redsox_xts in stagioni (in questo caso, years). Assegna il risultato a redsox_seasons.
  • Usa lapply() per calcolare la media cumulativa per ogni stagione. Per questo esercizio è stata predisposta una funzione cummean() che calcola la somma (con cumsum()) e la divide per il numero di elementi nella somma (con seq_along()). Salva questi dati in redsox_ytd.
  • Usa do.call() con rbind per convertire l’output della lista in un singolo oggetto xts (redsox_winloss) che contenga la media vittorie/sconfitte lungo ciascuna stagione.
  • Usa plot.xts() per visualizzare la media cumulativa vittorie/sconfitte durante la stagione 2013. Lascia l’argomento ylim così com’è nel codice precompilato.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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))
Modifica ed esegui il codice