Python'da artırılmış dickey-fuller testi (örnekle)


Bir zaman serisinin trendi yoksa, zaman içinde sabit bir varyans sergiliyorsa ve zaman içinde sabit bir otokorelasyon yapısına sahipse “durağan” olduğu söylenir.

Bir zaman serisinin durağan olup olmadığını test etmenin bir yolu, aşağıdaki sıfır ve alternatif hipotezleri kullanan genişletilmiş Dickey-Fuller testinin gerçekleştirilmesidir:

H 0 : Zaman serisi durağan değildir. Yani yapısı zamana bağlıdır ve zaman içindeki değişimi sabit değildir.

H A : Zaman serisi durağandır.

Testin p değeri belirli bir anlamlılık düzeyinin altındaysa (örneğin α = 0,05), sıfır hipotezini reddedebilir ve zaman serisinin durağan olduğu sonucuna varabiliriz.

Aşağıdaki adım adım örnek, belirli bir zaman serisi için Python’da artırılmış Dickey-Fuller testinin nasıl gerçekleştirileceğini gösterir.

Örnek: Python’da artırılmış Dickey-Fuller testi

Python’da aşağıdaki zaman serisi verilerine sahip olduğumuzu varsayalım:

 data = [3, 4, 4, 5, 6, 7, 6, 6, 7, 8, 9, 12, 10]

Veriler üzerinde artırılmış Dickey-Fuller testi yapmadan önce verileri görselleştirmek için hızlı bir grafik oluşturabiliriz:

 import matplotlib. pyplot as plt

plt. plot (data) 

Genişletilmiş bir Dickey-Fuller testi gerçekleştirmek için statsmodels kütüphanesindeki adfuller() fonksiyonunu kullanabiliriz. Öncelikle istatistik modellerini kurmamız gerekiyor:

 pip install statsmodels

Daha sonra artırılmış Dickey-Fuller testini gerçekleştirmek için aşağıdaki kodu kullanabiliriz:

 from statsmodels. tsa . stattools import adfuller

#perform augmented Dickey-Fuller test
adfuller(data)

(-0.9753836234744063,
 0.7621363564361013,
 0,
 12,
 {'1%': -4.137829282407408,
  '5%': -3.1549724074074077,
  '10%': -2.7144769444444443},
 31.2466098872313)

Sonucun en önemli değerlerinin nasıl yorumlanacağı aşağıda açıklanmıştır:

  • Test istatistiği: -0,97538
  • P değeri: 0,7621

P değeri 0,05’ten küçük olmadığından sıfır hipotezini reddedemiyoruz.

Bu durum zaman serisinin durağan olmadığı anlamına gelmektedir. Yani yapısı zamana bağlıdır ve zaman içindeki değişimi sabit değildir.

Ek kaynaklar

Matplotlib’de bir zaman serisi nasıl çizilir
Pandas DataFrame’den birden fazla seri nasıl çizilir
Python’da Mann-Kendall Trend Testi Nasıl Gerçekleştirilir

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir