Вычисление и визуализация сезонного среднего
В предыдущем упражнении вы использовали endpoints() и period.apply(), чтобы быстро вычислить среднее соотношение побед и поражений команды Boston Red Sox по итогам каждого сезона. Но что, если нужно знать накопленное среднее на протяжении всего сезона? Статистики и болельщики часто опираются на этот показатель, сравнивая команды между собой.
Чтобы вычислить накопленное среднее для каждого сезона, потребуется вернуться к формуле split-lapply-rbind, которую вы отрабатывали в третьей главе. Сначала данные разбиваются по сезонам, затем к столбцу win_loss каждого сезона применяется функция накопленного среднего, после чего значения объединяются обратно в объект xts.
Пользовательская функция cummean(), которая вычисляет накопленную сумму и делит её на количество учтённых значений, уже создана за вас. Данные redsox_xts, включая столбец win_loss, доступны в вашем рабочем пространстве.
Это упражнение является частью курса
Практический пример: анализ городских временных рядов в R
Инструкции к упражнению
- Используйте
split(), чтобы разбить данныеredsox_xtsпо сезонам (в данном случае — поyears). Результат сохраните вredsox_seasons. - Используйте
lapply(), чтобы вычислить накопленное среднее для каждого сезона. В этом упражнении для вас создана функцияcummean(), которая вычисляет сумму с помощьюcumsum()и делит её на количество элементов с помощьюseq_along(). Сохраните результат вredsox_ytd. - Используйте
do.call()сrbind, чтобы преобразовать список в единый объект xts (redsox_winloss), содержащий среднее соотношение побед и поражений на протяжении каждого сезона. - Используйте
plot.xts(), чтобы визуализировать накопленное среднее соотношение побед и поражений в сезоне2013. Оставьте аргументylimбез изменений в заранее написанном коде.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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))