ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Usa split() para dividir los datos de redsox_xts por temporadas (en este caso, years). Asígnalo a redsox_seasons.
  • Usa lapply() para calcular la media acumulada de cada temporada. Para este ejercicio, se ha diseñado una función cummean() que calcula la suma (con cumsum()) y la divide por el número de entradas en la suma (con seq_along()). Guarda estos datos en redsox_ytd.
  • Usa do.call() con rbind para 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 temporada 2013. Deja el argumento ylim tal 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))
Editar y ejecutar código