Calculer et tracer une moyenne saisonnière
Dans l’exercice précédent, vous avez utilisé endpoints() et period.apply() pour calculer rapidement la moyenne victoires/défaites des Boston Red Sox à la fin de chaque saison. Mais que faire si vous avez besoin de connaître la moyenne cumulative tout au long de chaque saison ? Les statisticiens comme les passionnés de sport s’appuient souvent sur cette moyenne pour comparer une équipe à ses rivales.
Pour calculer une moyenne cumulative dans chaque saison, vous allez revenir à la formule split-lapply-rbind vue au chapitre trois. Vous commencerez par scinder les données par saison, puis vous appliquerez une fonction de moyenne cumulative à la colonne win_loss de chaque saison, puis vous recombinerez les valeurs dans un objet xts.
Une fonction personnalisée cummean(), qui calcule une somme cumulative et la divise par le nombre de valeurs incluses dans la somme, a été mise à votre disposition. Les données redsox_xts, incluant la colonne win_loss, sont disponibles dans votre espace de travail.
Cet exercice fait partie du cours
Étude de cas : analyser des séries temporelles urbaines en R
Instructions
- Utilisez
split()pour découper les donnéesredsox_xtspar saisons (ici, paryears). Assignez le résultat àredsox_seasons. - Utilisez
lapply()pour calculer la moyenne cumulative de chaque saison. Pour cet exercice, une fonctioncummean()a été prévue : elle calcule la somme (aveccumsum()) et la divise par le nombre d’entrées dans la somme (avecseq_along()). Enregistrez ce résultat dansredsox_ytd. - Utilisez
do.call()avecrbindpour convertir la liste produite en un seul objet xts (redsox_winloss) qui contient la moyenne victoires/défaites tout au long de chaque saison. - Utilisez
plot.xts()pour visualiser la moyenne cumulative victoires/défaites pendant la saison2013. Laissez l’argumentylimtel quel dans le code prérempli.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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))