НачатьНачать бесплатно

Сравнение 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 %>% ___ %>% ____
Редактировать и запускать код