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

Зимнее пальто ещё пригодится

На завершающем этапе вы построите прогноз температуры на следующие 30 лет с помощью модели ARMA(1,1), включая доверительные интервалы вокруг оценки. Имейте в виду, что оценка дрейфа оказывает значительно большее влияние на долгосрочные прогнозы, чем параметры ARMA.

Ранее вы установили, что данные о температуре описываются случайным блужданием, и рассмотрели взятие первых разностей. В этом упражнении вы применените модуль ARIMA к исходным данным температуры (до взятия разностей) — это эквивалентно применению модуля ARMA к изменениям температуры с последующим суммированием этих изменений нарастающим итогом для получения прогноза.

Поскольку температуры со временем растут, при определении модели ARIMA необходимо добавить трендовую составляющую. В упражнении используется линейный тренд по времени: для этого задайте аргумент trend='t'. Вы также можете попробовать другие модели тренда и посмотреть, как изменятся прогнозы. Например, для квадратичного тренда \(\small a + bt + ct^2\) задайте trend=[0,1,1], чтобы включить в модель как линейный член \(\small bt\), так и квадратичный \(\small ct^2\).

Данные предварительно загружены в DataFrame с именем temp_NY.

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

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

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

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

  • Создайте экземпляр класса ARIMA с именем mod для интегрированной модели ARMA(1,1), то есть ARIMA(1,1,1)
    • Параметр d в order(p,d,q) равен единице, так как мы взяли первые разности один раз
    • Подгоните mod с помощью метода .fit() и сохраните результаты в переменную res
  • Постройте прогноз ряда с помощью метода plot_predict() для объекта res
    • Задайте дату начала 1872 и дату окончания 2046

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

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

# Import the ARIMA module from statsmodels
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_predict

# Forecast temperatures using an ARIMA(1,1,1) model
mod = ARIMA(temp_NY, trend='t', order=(1,1,1))
___ = ___.fit()

# Plot the original series and the forecasted series
fig, ax = plt.subplots()
temp_NY.plot(ax=ax)
plot_predict(___, start='1872', end='2046', ax=ax)
plt.show()
Редактировать и запускать код