ПочатиПочніть безкоштовно

Пальто на зиму ще знадобиться

Нарешті ви спрогнозуєте температуру на наступні 30 років за допомогою моделі ARMA(1,1), включно з довірчими інтервалами навколо цієї оцінки. Пам'ятайте, що оцінка дрейфу має значно більший вплив на довгострокові прогнози, ніж параметри ARMA.

Раніше ви визначили, що температурні дані є випадковим блуканням, і розглянули перше різницювання даних. У цій вправі ви використаєте модуль ARIMA для температурних даних (до різницювання), що еквівалентно застосуванню модуля ARMA до змін температури з подальшим обчисленням кумулятивних сум цих змін, щоб отримати прогноз температури.

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

Дані вже завантажені в датафрейм 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()
Редагувати та запускати код