Сравнение auto.arima() и ets() на несезонных данных
Статистика AICc полезна для выбора между моделями одного и того же класса. Например, с её помощью можно выбрать модель ETS или модель ARIMA. Однако сравнивать модели ETS и ARIMA с её помощью нельзя, поскольку они относятся к разным классам моделей.
Вместо этого для сравнения модели ARIMA и модели ETS на данных austa можно применить метод временно́го ряда с перекрёстной проверкой. Поскольку функция tsCV() требует, чтобы переданные функции возвращали объекты прогнозов, необходимо написать простые функции, которые обучают модели и возвращают прогнозы. Функция tsCV() принимает три аргумента: временной ряд, функцию прогнозирования и горизонт прогнозирования h. Ознакомьтесь с фрагментом кода из второй главы:
e <- matrix(NA_real_, nrow = 1000, ncol = 8)
for (h in 1:8)
e[, h] <- tsCV(goog, naive, h = h)
...
Также напомним, что оператор pipe в R берёт значение слева и передаёт его аргументом в функцию справа — шаг за шагом, слева направо. Вот пример на основе кода из предыдущей главы:
# Plot 20-year forecasts of the lynx series modeled by ets()
lynx %>% ets() %>% forecast(h = 20) %>% autoplot()
В этом упражнении вы сравните MSE двух функций прогнозирования, применённых к данным austa, и построите прогнозы с помощью той функции, которая даёт наилучшие результаты. Набор данных austa уже загружен в рабочую среду.
Это упражнение является частью курса
Прогнозирование в R
Инструкции к упражнению
- Заполните функцию
farima()так, чтобы она строила прогнозы на основеauto.arima(). Ориентируйтесь на структуру уже написанного кода функцииfets(), которая делает то же самое дляets(). - Вычислите кросс-валидационные ошибки для моделей ETS на данных
austaс помощьюtsCV()с одношаговыми ошибками и сохраните результат вe1. - Вычислите кросс-валидационные ошибки для моделей ARIMA на данных
austaс помощьюtsCV()с одношаговыми ошибками и сохраните результат вe2. - Вычислите кросс-валидационное MSE для каждого класса моделей, исключив пропущенные значения. Если вы не помните, как рассчитать MSE, обратитесь к предыдущей главе.
- Постройте прогноз будущих значений
austaна 10 лет вперёд с помощью наилучшего класса моделей и отобразите его на графике.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Set up forecast functions for ETS and ARIMA models
fets <- function(x, h) {
forecast(ets(x), h = h)
}
farima <- function(x, h) {
forecast(___, ___)
}
# Compute CV errors for ETS on austa as e1
e1 <- tsCV(austa, ___, ___)
# Compute CV errors for ARIMA on austa as e2
e2 <- tsCV(___, ___, ___)
# Find MSE of each model class
mean(___, ___)
mean(___, ___)
# Plot 10-year forecasts using the best model class
austa %>% ___ %>% ____