Zaman Serileri - ARIMA Varyasyonları
Bir önceki bölümde, ARIMA modelinin nasıl çalıştığını ve mevsimsel verileri veya çok değişkenli zaman serilerini işleyememesi konusundaki sınırlamalarını şimdi gördük ve bu nedenle, bu özellikleri içeren yeni modeller tanıtıldı.
Bu yeni modellere bir bakış burada verilmiştir -
Vektör Otomatik Regresyon (VAR)
Çok değişkenli durağan zaman serileri için otomatik regresyon modelinin genelleştirilmiş bir versiyonudur. 'P' parametresi ile karakterizedir.
Vektör Hareketli Ortalama (VMA)
Çok değişkenli durağan zaman serileri için hareketli ortalama modelinin genelleştirilmiş bir versiyonudur. 'Q' parametresi ile karakterizedir.
Vektör Otomatik Regresyon Hareketli Ortalama (VARMA)
VAR ve VMA'nın birleşimidir ve çok değişkenli durağan zaman serileri için ARMA modelinin genelleştirilmiş bir versiyonudur. 'P' ve 'q' parametreleri ile karakterizedir. Benzer şekilde, ARMA, 'q' parametresini 0 olarak ayarlayarak ve 'p' parametresini 0 olarak ayarlayarak bir MA modeli olarak bir AR modeli gibi davranabilir, VARMA da 'q' parametresini ayarlayarak bir VAR modeli gibi davranabilir. 0 olarak ve 'p' parametresini 0 olarak ayarlayarak bir VMA modeli olarak.
[209] 'da:
df_multi = df[['T', 'C6H6(GT)']]
split = len(df) - int(0.2*len(df))
train_multi, test_multi = df_multi[0:split], df_multi[split:]
[211] içinde:
from statsmodels.tsa.statespace.varmax import VARMAX
model = VARMAX(train_multi, order = (2,1))
model_fit = model.fit()
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\tsa\statespace\varmax.py:152:
EstimationWarning: Estimation of VARMA(p,q) models is not generically robust,
due especially to identification issues.
EstimationWarning)
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\tsa\base\tsa_model.py:171:
ValueWarning: No frequency information was provided, so inferred frequency H will be used.
% freq, ValueWarning)
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\base\model.py:508:
ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
"Check mle_retvals", ConvergenceWarning)
[213] içinde:
predictions_multi = model_fit.forecast( steps=len(test_multi))
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\tsa\base\tsa_model.py:320:
FutureWarning: Creating a DatetimeIndex by passing range endpoints is deprecated. Use `pandas.date_range` instead.
freq = base_index.freq)
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\tsa\statespace\varmax.py:152:
EstimationWarning: Estimation of VARMA(p,q) models is not generically robust, due especially to identification issues.
EstimationWarning)
[231] 'de:
plt.plot(train_multi['T'])
plt.plot(test_multi['T'])
plt.plot(predictions_multi.iloc[:,0:1], '--')
plt.show()
plt.plot(train_multi['C6H6(GT)'])
plt.plot(test_multi['C6H6(GT)'])
plt.plot(predictions_multi.iloc[:,1:2], '--')
plt.show()
Yukarıdaki kod, VARMA modelinin çok değişkenli zaman serilerini modellemek için nasıl kullanılabileceğini gösterir, ancak bu model verilerimiz için en uygun olmayabilir.
Dışsal Değişkenlerle VARMA (VARMAX)
Bu, ilgilendiğimiz birincil değişkeni modellemek için ortak değişken adı verilen ekstra değişkenlerin kullanıldığı VARMA modelinin bir uzantısıdır.
Mevsimsel Otomatik Regresif Entegre Hareketli Ortalama (SARIMA)
Bu, ARIMA modelinin mevsimsel verilerle ilgilenen uzantısıdır. Verileri mevsimsel ve mevsimsel olmayan bileşenlere ayırır ve benzer bir şekilde modeller. Mevsimsel olmayan kısım (p, d, q) parametreleri için ARIMA modeli ile aynı ve mevsimsel kısım (P, D, Q, m) parametreleri için 7 parametre ile karakterize edilir, burada 'm' mevsimsel dönemlerin sayısıdır ve P, D, Q, ARIMA modelinin parametrelerine benzer. Bu parametreler, ızgara araması veya genetik algoritma kullanılarak kalibre edilebilir.
Dışsal Değişkenlerle SARIMA (SARIMAX)
Bu, SARIMA modelinin, ilgilendiğimiz değişkeni modellememize yardımcı olan dışsal değişkenleri içerecek bir uzantısıdır.
Değişkenleri dışsal değişkenler olarak koymadan önce, değişkenler üzerinde bir eş-ilişki analizi yapmak faydalı olabilir.
[251] içinde:
from scipy.stats.stats import pearsonr
x = train_multi['T'].values
y = train_multi['C6H6(GT)'].values
corr , p = pearsonr(x,y)
print ('Corelation Coefficient =', corr,'\nP-Value =',p)
Corelation Coefficient = 0.9701173437269858
P-Value = 0.0
Pearson Korelasyonu 2 değişken arasında doğrusal bir ilişki gösterir, sonuçları yorumlamak için önce p değerine bakarız, 0,05'ten düşükse katsayı değeri anlamlıdır, aksi takdirde katsayı değeri anlamlı değildir. Önemli p değeri için, pozitif bir korelasyon katsayısı değeri pozitif korelasyonu gösterir ve negatif bir değer negatif bir korelasyonu gösterir.
Bu nedenle, verilerimiz için 'sıcaklık' ve 'C6H6' oldukça pozitif bir korelasyona sahip görünüyor. Bu nedenle yapacağız
[297] 'de:
from statsmodels.tsa.statespace.sarimax import SARIMAX
model = SARIMAX(x, exog = y, order = (2, 0, 2), seasonal_order = (2, 0, 1, 1), enforce_stationarity=False, enforce_invertibility = False)
model_fit = model.fit(disp = False)
c:\users\naveksha\appdata\local\programs\python\python37\lib\site-packages\statsmodels\base\model.py:508:
ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
"Check mle_retvals", ConvergenceWarning)
[298] 'de:
y_ = test_multi['C6H6(GT)'].values
predicted = model_fit.predict(exog=y_)
test_multi_ = pandas.DataFrame(test)
test_multi_['predictions'] = predicted[0:1871]
[299] 'da:
plt.plot(train_multi['T'])
plt.plot(test_multi_['T'])
plt.plot(test_multi_.predictions, '--')
Çıkış [299]:
[<matplotlib.lines.Line2D at 0x1eab0191c18>]
Buradaki tahminler, tek değişkenli ARIMA modellemesinin aksine şimdi daha büyük varyasyonlar alıyor gibi görünüyor.
Söylemeye gerek yok, SARIMAX, yalnızca karşılık gelen parametreleri sıfır olmayan değerlere ayarlayarak bir ARX, MAX, ARMAX veya ARIMAX modeli olarak kullanılabilir.
Kesirli Otomatik Regresif Entegre Hareketli Ortalama (FARIMA)
Zaman zaman serimiz sabit olmayabilir, ancak 1 değerini alan 'd' parametresiyle farklılaşmak onu fazla farklılaştırabilir. Bu nedenle, zaman serilerini kesirli bir değer kullanarak fark etmemiz gerekiyor.
Veri bilimi dünyasında tek bir üstün model yoktur, verileriniz üzerinde çalışan model büyük ölçüde veri kümenize bağlıdır. Çeşitli modellerin bilgisi, verilerimiz üzerinde çalışan birini seçmemize ve en iyi sonuçları elde etmek için bu modeli denememize olanak tanır. Ve sonuçlar, hata ölçütlerinin yanı sıra olay örgüsü olarak görülmelidir, bazen küçük bir hata da kötü olabilir, bu nedenle sonuçların grafiğini çizmek ve görselleştirmek önemlidir.
Bir sonraki bölümde, başka bir istatistiksel modele, üstel yumuşatmaya bakacağız.