Kışlık Montunu Henüz Kaldırma
Son olarak, ARMA(1,1) modeli kullanarak önümüzdeki 30 yılın sıcaklığını, bu tahmin etrafındaki güven aralıklarıyla birlikte öngöreceksin. Unutma: Uzun vadeli tahminlerde, sürüklenme (drift) tahmini, ARMA parametrelerine kıyasla çok daha büyük bir etkiye sahiptir.
Daha önce, sıcaklık verisinin bir rassal yürüyüş izlediğini belirledin ve veriyi birinci farkını alarak inceledin. Bu egzersizde, sıcaklık verisine (fark almadan önce) ARIMA modülünü uygulayacaksın; bu, sıcaklıktaki değişimlere ARMA uygulayıp, ardından bu değişimlerin kümülatif toplamını alarak sıcaklık tahmini elde etmeye denktir.
Sıcaklıklar zaman içinde yükseliş eğiliminde olduğu için, ARIMA modelini tanımlarken bir trend bileşeni eklemen gerekecek. Egzersizde, trend='t' argümanını ayarlayarak zamana göre doğrusal bir trend kullanacaksın. Tahminlerin nasıl değiştiğini görmek için diğer trend modellerini de deneyebilirsin. Örneğin, karesel bir trend için \(\small a+ bt + ct^2\), modele hem doğrusal terim \(\small bt\) hem de karesel terim \(\small ct^2\) eklemek üzere trend=[0,1,1] ayarla.
Veri temp_NY adlı bir DataFrame içinde önceden yüklüdür.
Bu egzersiz
Python ile Zaman Serisi Analizi
kursunun bir parçasıdırEgzersiz talimatları
- Bütünleşik bir ARMA(1,1) modeli, yani ARIMA(1,1,1) modeli için
ARIMAsınıfındanmodadlı bir örnek oluşturorder(p,d,q)içindekidbir olmalı; çünkü bir kez birinci fark aldıkmod'u.fit()yöntemiyle uydur ve sonuçlarıresolarak adlandır
- Seriyi
resüzerindeplot_predict()yöntemiyle tahmin et- Başlangıç tarihini
1872, bitiş tarihini2046olarak seç
- Başlangıç tarihini
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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()