Zacznij terazZacznij za darmo

Jeszcze nie odkładaj zimowego płaszcza

Na zakończenie prognozujesz temperaturę na kolejne 30 lat za pomocą modelu ARMA(1,1), wraz z przedziałami ufności wokół tej prognozy. Pamiętaj, że estymata dryfu będzie miała znacznie większy wpływ na prognozy długoterminowe niż parametry ARMA.

Wcześniej ustaliłeś, że dane dotyczące temperatury zachowują się jak błądzenie losowe, i przeanalizowałeś pierwsze różnicowanie danych. W tym ćwiczeniu użyjesz modułu ARIMA na oryginalnych danych temperatury (przed różnicowaniem), co jest równoważne zastosowaniu modułu ARMA do zmian temperatury, a następnie obliczeniu ich sum skumulowanych w celu uzyskania prognozy temperatury.

Ponieważ temperatury wykazują tendencję wzrostową, podczas definiowania modelu ARIMA trzeba też uwzględnić składnik trendu. W ćwiczeniu użyjesz liniowego trendu czasowego, ustawiając argument trend='t'. Możesz też wypróbować inne modele trendu, aby zobaczyć, jak zmieniają się prognozy. Na przykład dla trendu kwadratowego \(\small a+ bt + ct^2\) ustaw trend=[0,1,1], aby uwzględnić w modelu zarówno składnik liniowy \(\small bt\), jak i kwadratowy \(\small ct^2\).

Dane są wstępnie załadowane do ramki danych temp_NY.

To ćwiczenie jest częścią kursu

Analiza szeregów czasowych w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz instancję klasy ARIMA o nazwie mod dla zintegrowanego modelu ARMA(1,1), czyli ARIMA(1,1,1)
    • Parametr d w order(p,d,q) wynosi jeden, ponieważ dane były różnicowane jednokrotnie
    • Dopasuj mod metodą .fit() i zapisz wyniki jako res
  • Prognozuj szereg, wywołując metodę plot_predict() na obiekcie res
    • Ustaw datę początkową na 1872, a datę końcową na 2046

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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()
Edytuj i uruchom kod