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