Python'da ljung-box testi nasıl yapılır


Ljung-Box testi, bir zaman serisinde otokorelasyonun olup olmadığını kontrol eden istatistiksel bir testtir.

Aşağıdaki varsayımları kullanır:

H 0 : Artıklar bağımsız olarak dağıtılır.

H A : Artıklar bağımsız olarak dağıtılmaz; seri korelasyon sergilerler.

İdeal durumda sıfır hipotezini reddetmemek isteriz. Yani testin p değerinin 0,05’ten büyük olmasını isteriz çünkü bu, zaman serisi modelimizin artıklarının bağımsız olduğu anlamına gelir ki bu da genellikle bir model oluştururken yaptığımız bir varsayımdır.

Bu eğitimde Python’da Ljung-Box testinin nasıl gerçekleştirileceği açıklanmaktadır.

Örnek: Python’da Ljung-Box testi

Python’da bir veri serisi üzerinde Ljung-Box testini gerçekleştirmek için statsmodels kütüphanesindeki aşağıdaki sözdizimini kullanan acorr_ljungbox() fonksiyonunu kullanabilirsiniz:

acorr_ljungbox(x, ofsetler=Yok)

Altın:

  • x: veri serisi
  • gecikmeler: Test edilecek gecikme sayısı

Bu fonksiyon bir test istatistiği ve buna karşılık gelen bir p değeri döndürür. P değeri belirli bir eşiğin altındaysa (örneğin α = 0,05), sıfır hipotezini reddedebilir ve artıkların bağımsız olarak dağılmadığı sonucuna varabilirsiniz.

Aşağıdaki kod, “SUNACTIVITY” adı verilen yerleşik istatistik modeli veri kümesi üzerinde Ljung-Box testini gerçekleştirmek için bu işlevin nasıl kullanılacağını gösterir:

 import statsmodels.api as sm

#load data series
data = sm.datasets.sunspots.load_pandas().data

#view first ten rows of data series 
data[:5]

YEAR SUNACTIVITY
0 1700.0 5.0
1 1701.0 11.0
2 1702.0 16.0
3 1703.0 23.0
4 1704.0 36.0

#fit ARMA model to dataset
res = sm. tsa . ARMA (data[" SUNACTIVITY "],(1,1)). fit (disp=-1)

#perform Ljung-Box test on residuals with lag=5
sm. stats . acorr_ljungbox (res. resid , lags=[5], return_df= True )

          lb_stat lb_pvalue
5 107.86488 1.157710e-21

Test istatistiği 107,86488’dir ve test p değeri 1,157710e-21’dir ; bu da 0,05’ten çok daha azdır. Dolayısıyla testin sıfır hipotezini reddediyoruz ve artıkların bağımsız olmadığı sonucuna varıyoruz.

Bu örnekte 5 ofset değerini kullanmayı seçtiğimizi unutmayın, ancak ofset için kullanmak istediğiniz herhangi bir değeri seçebilirsiniz. Örneğin bunun yerine 20 değerini kullanabiliriz:

 #perform Ljung-Box test on residuals with lag=20
sm. stats . acorr_ljungbox (res. resid , lags=[20], return_df= True )

           lb_stat lb_pvalue
20 343.634016 9.117477e-61

Testin test istatistiği 343.634016 ve testin p değeri 9.117477e-61 olup 0,05’ten çok daha düşüktür. Böylece testin sıfır hipotezini bir kez daha reddediyoruz ve artıkların bağımsız olmadığı sonucuna varıyoruz.

Özel durumunuza bağlı olarak ofset için kullanılacak daha düşük veya daha yüksek bir değer seçebilirsiniz.

Yorum ekle

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