Calcular e plotar uma média sazonal
No exercício anterior, você usou endpoints() e period.apply() para calcular rapidamente a média de vitórias/derrotas do Boston Red Sox ao final de cada temporada. Mas e se você precisar saber a média acumulada ao longo de cada temporada? Estatísticos e fãs de esportes costumam usar essa média para comparar um time com seus rivais.
Para calcular uma média acumulada em cada temporada, você vai voltar à fórmula split-lapply-rbind praticada no Capítulo Três. Primeiro, você vai dividir os dados por temporada; depois, aplicar uma função de média acumulada na coluna win_loss de cada temporada; por fim, juntar os valores de volta em um objeto xts.
Uma função personalizada cummean(), que gera uma soma acumulada e divide pelo número de valores incluídos na soma, já foi criada para você. Os dados redsox_xts, incluindo a coluna win_loss, estão disponíveis no seu ambiente de trabalho.
Este exercício faz parte do curso
Estudo de Caso: Analisando Séries Temporais de Cidades em R
Instruções do exercício
- Use
split()para dividir os dados deredsox_xtsem temporadas (neste caso,years). Atribua isso aredsox_seasons. - Use
lapply()para calcular a média acumulada de cada temporada. Para este exercício, foi criada uma funçãocummean()que calcula a soma (usandocumsum()) e divide pelo número de entradas na soma (usandoseq_along()). Salve esses dados emredsox_ytd. - Use
do.call()comrbindpara converter a sua lista de saída em um único objeto xts (redsox_winloss) que contenha a média de vitórias/derrotas ao longo de cada temporada. - Use
plot.xts()para visualizar a média acumulada de vitórias/derrotas durante a temporada de2013. Deixe o argumentoylimcomo está no seu código pré-escrito.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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))