Python'da breusch-godfrey testi nasıl yapılır?


Doğrusal regresyonun temel varsayımlarından biri, artıklar arasında herhangi bir korelasyonun olmaması, yani artıkların bağımsız olmasıdır.

Birinci dereceden otokorelasyonu test etmek için Durbin-Watson testi yapabiliriz. Ancak otokorelasyonu daha yüksek derecelerde test etmek istiyorsak Breusch-Godfrey testi yapmamız gerekir.

Bu test aşağıdaki varsayımları kullanır:

H 0 (sıfır hipotezi): p’den küçük veya p’ye eşit bir otokorelasyon yoktur.

HA (alternatif hipotez): p’den küçük veya p’ye eşit belirli bir düzeyde otokorelasyon vardır.

Test istatistiği, p serbestlik derecesine sahip bir Ki-kare dağılımını takip eder.

Bu test istatistiğine karşılık gelen p değeri belirli bir anlamlılık düzeyinin (örneğin 0,05) altındaysa, o zaman sıfır hipotezini reddedebilir ve artıklar arasında belirli bir düşük düzeyde veya p’ye eşit bir otokorelasyonun var olduğu sonucuna varabiliriz.

Python’da Breusch-Godfrey testi gerçekleştirmek için statsmodels kütüphanesindeki acorr_breusch_godfrey() fonksiyonunu kullanabilirsiniz.

Aşağıdaki adım adım örnek, Python’da Breusch-Godfrey testinin nasıl gerçekleştirileceğini açıklamaktadır.

1. Adım: Verileri oluşturun

Öncelikle iki öngörücü değişken (x1 ve x2) ve bir yanıt değişkeni (y) içeren bir veri kümesi oluşturalım.

 import pandas as pd

#create dataset
df = pd. DataFrame ({' x1 ': [3, 4, 4, 5, 8, 9, 11, 13, 14, 16, 17, 20],
                   ' x2 ': [7, 7, 8, 8, 12, 4, 5, 15, 9, 17, 19, 19],
                    ' y ': [24, 25, 25, 27, 29, 31, 34, 34, 39, 30, 40, 49]})

#view first five rows of dataset
df. head ()

	x1 x2 y
0 3 7 24
1 4 7 25
2 4 8 25
3 5 8 27
4 8 12 29

Adım 2: Bir regresyon modeli yerleştirin

Daha sonra, yordayıcı değişkenler olarak x1 ve x2’yi ve yanıt değişkeni olarak y’yi kullanarak çoklu doğrusal regresyon modelini yerleştirebiliriz.

 import statsmodels. api as sm

#define response variable
y = df[' y ']

#define predictor variables
x = df[[' x1 ', ' x2 ']]

#add constant to predictor variables
x = sm. add_constant (x)

#fit linear regression model
model = sm. OLS (y,x). fit ()

Adım 3: Breusch-Godfrey testini gerçekleştirin

Daha sonra p düzeyindeki artıklar arasındaki otokorelasyonu test etmek için Breusch-Godfrey testini gerçekleştireceğiz. Bu örnek için p = 3’ü seçeceğiz.

 import statsmodels. stats . diagnosis as dg

#perform Breusch-Godfrey test at order p = 3
print (dg. acorr_breusch_godfrey (model, nlags= 3 ))

(8.70314827, 0.0335094873, 5.27967224, 0.0403980576)

Çıkışın ilk değeri test istatistiğini, ikinci değeri ise karşılık gelen p değerini temsil eder.

Sonuçtan şunları görebiliriz:

  • Test istatistiği X 2 = 8,7031
  • P değeri = 0,0335

Bu p değeri 0,05’ten küçük olduğundan sıfır hipotezini reddedebilir ve 3’ten küçük veya ona eşit olan sıradaki artıklar arasında bir otokorelasyon olduğu sonucuna varabiliriz.

Otokorelasyonla nasıl başa çıkılır?

Sıfır hipotezini reddederseniz ve artıklarda otokorelasyonun mevcut olduğu sonucuna varırsanız, yeterince ciddi olduğunu düşünüyorsanız bu sorunu düzeltmek için birkaç seçeneğiniz vardır:

  • Pozitif seri korelasyon için bağımlı ve/veya bağımsız değişkenin gecikmelerini modele eklemeyi düşünün.
  • Negatif seri korelasyon için değişkenlerinizden hiçbirinin aşırı gecikmediğinden emin olun.
  • Mevsimsel korelasyon için modele mevsimsel kuklalar eklemeyi düşünün.

Ek kaynaklar

Python’da Doğrusal Regresyon İçin Tam Bir Kılavuz
Python’da Durbin-Watson testi nasıl yapılır?
Python’da Ljung-Box testi nasıl yapılır

Yorum ekle

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