ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Use split() para dividir os dados de redsox_xts em temporadas (neste caso, years). Atribua isso a redsox_seasons.
  • Use lapply() para calcular a média acumulada de cada temporada. Para este exercício, foi criada uma função cummean() que calcula a soma (usando cumsum()) e divide pelo número de entradas na soma (usando seq_along()). Salve esses dados em redsox_ytd.
  • Use do.call() com rbind para 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 de 2013. Deixe o argumento ylim como 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))
Editar e executar o código