Calcula y representa una media estacional
En el ejercicio anterior usaste endpoints() y period.apply() para calcular rápidamente la media de victorias/derrotas de los Boston Red Sox al final de cada temporada. Pero ¿y si necesitas conocer la media acumulada a lo largo de cada temporada? Tanto estadísticos como aficionados al deporte suelen apoyarse en esta media para comparar a un equipo con sus rivales.
Para calcular una media acumulada en cada temporada, tendrás que volver a la fórmula split-lapply-rbind que practicaste en el capítulo tres. Primero, dividirás los datos por temporada; después, aplicarás una función de media acumulada a la columna win_loss en cada temporada; por último, volverás a unir los valores en un objeto xts.
Ya tienes preparada una función personalizada cummean(), que genera una suma acumulada y la divide por el número de valores incluidos en la suma. Los datos redsox_xts, incluida la columna win_loss, están disponibles en tu espacio de trabajo.
Este ejercicio forma parte del curso
Estudio de caso: Análisis de series temporales de una ciudad en R
Instrucciones del ejercicio
- Usa
split()para dividir los datos deredsox_xtspor temporadas (en este caso,years). Asígnalo aredsox_seasons. - Usa
lapply()para calcular la media acumulada de cada temporada. Para este ejercicio, se ha diseñado una funcióncummean()que calcula la suma (concumsum()) y la divide por el número de entradas en la suma (conseq_along()). Guarda estos datos enredsox_ytd. - Usa
do.call()conrbindpara convertir tu salida en lista a un único objeto xts (redsox_winloss) que contenga la media de victorias/derrotas a lo largo de cada temporada. - Usa
plot.xts()para ver la media acumulada de victorias/derrotas durante la temporada2013. Deja el argumentoylimtal como está en el código preescrito.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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))