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
Instrukcje do ćwiczenia
- Utwórz instancję klasy
ARIMAo nazwiemoddla zintegrowanego modelu ARMA(1,1), czyli ARIMA(1,1,1)- Parametr
dworder(p,d,q)wynosi jeden, ponieważ dane były różnicowane jednokrotnie - Dopasuj
modmetodą.fit()i zapisz wyniki jakores
- Parametr
- Prognozuj szereg, wywołując metodę
plot_predict()na obiekcieres- Ustaw datę początkową na
1872, a datę końcową na2046
- Ustaw datę początkową na
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()