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

Простые прогнозы на основе оценённой AR-модели

Теперь, когда данные смоделированы с помощью функции arima(), можно перейти к построению простых прогнозов. Функция predict() позволяет получать прогнозы на основе оценённой AR-модели. В объекте, который возвращает predict(), значение $pred содержит прогноз, а $se — стандартную ошибку прогноза.

Чтобы строить прогнозы на несколько периодов вперёд относительно последнего наблюдения, используйте аргумент n.ahead в функции predict(). Он задаёт горизонт прогнозирования (h), то есть количество периодов. Прогнозы строятся рекурсивно — от 1 до h шагов вперёд от конца наблюдаемого временного ряда.

В этом упражнении вы построите простые прогнозы с помощью AR-модели, применённой к данным Nile — ряду годовых наблюдений расхода воды в реке Нил с 1871 по 1970 год.

Это упражнение является частью курса

Анализ временных рядов в R

Посмотреть курс

Инструкции к упражнению

  • С помощью arima() подберите AR-модель для временного ряда Nile. Сохраните результат в переменную AR_fit.
  • С помощью predict() постройте прогноз расхода воды в Ниле на 1971 год.
  • Используйте predict_AR вместе с $pred[1], чтобы получить прогноз на 1 шаг вперёд.
  • Снова вызовите predict(), чтобы построить прогнозы от 1 до 10 шагов вперёд (с 1971 по 1980 год). Для этого задайте аргумент n.ahead равным 10.
  • Запустите готовый код, чтобы отобразить данные Nile, прогнозы и 95%-й доверительный интервал прогноза.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Fit an AR model to Nile
AR_fit <- arima(___, order  = ___)
print(AR_fit)

# Use predict() to make a 1-step forecast
predict_AR <- predict(___)

# Obtain the 1-step forecast using $pred[1]


# Use predict to make 1-step through 10-step forecasts
predict(___, n.ahead = ___)

# Run to plot the Nile series plus the forecast and 95% prediction intervals
ts.plot(Nile, xlim = c(1871, 1980))
AR_forecast <- predict(AR_fit, n.ahead = 10)$pred
AR_forecast_se <- predict(AR_fit, n.ahead = 10)$se
points(AR_forecast, type = "l", col = 2)
points(AR_forecast - 2*AR_forecast_se, type = "l", col = 2, lty = 2)
points(AR_forecast + 2*AR_forecast_se, type = "l", col = 2, lty = 2)
Редактировать и запускать код