Jak wykonać test breuscha-godfreya w pythonie


Jednym z kluczowych założeń regresji liniowej jest to, że pomiędzy resztami nie ma korelacji, co oznacza, że reszty są niezależne.

Aby sprawdzić autokorelację pierwszego rzędu, możemy wykonać test Durbina-Watsona . Jeśli jednak chcemy przetestować autokorelację przy wyższych rzędach, musimy wykonać test Breuscha-Godfreya .

W tym teście przyjęto następujące założenia :

H 0 (hipoteza zerowa): Nie ma autokorelacji rzędu mniejszego lub równego p .

H A (hipoteza alternatywna): Istnieje autokorelacja pewnego rzędu mniejszego lub równego p .

Statystyka testowa ma rozkład chi-kwadrat z p stopniami swobody.

Jeżeli wartość p odpowiadająca tej statystyce testowej jest poniżej pewnego poziomu istotności (np. 0,05), wówczas możemy odrzucić hipotezę zerową i stwierdzić, że istnieje autokorelacja pomiędzy resztami na pewnym niższym poziomie lub równymi p .

Aby wykonać test Breuscha-Godfreya w Pythonie, możesz użyć funkcji acorr_breusch_godfrey() z biblioteki statsmodels .

Poniższy przykład krok po kroku wyjaśnia, jak wykonać test Breuscha-Godfreya w Pythonie.

Krok 1: Utwórz dane

Najpierw utwórzmy zbiór danych zawierający dwie zmienne predykcyjne (x1 i x2) oraz zmienną odpowiedzi (y).

 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

Krok 2: Dopasuj model regresji

Następnie możemy dopasować model regresji liniowej , używając x1 i x2 jako zmiennych predykcyjnych oraz y jakozmiennej odpowiedzi .

 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 ()

Krok 3: Wykonaj test Breuscha-Godfreya

Następnie przeprowadzimy test Breuscha-Godfreya, aby sprawdzić autokorelację między resztami rzędu p . W tym przykładzie wybierzemy p = 3.

 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)

Pierwsza wartość wyniku reprezentuje statystykę testową, a druga wartość reprezentuje odpowiednią wartość p.

Z wyniku możemy zobaczyć, co następuje:

  • Statystyka testowa X 2 = 8,7031
  • Wartość P = 0,0335

Ponieważ ta wartość p jest mniejsza niż 0,05, możemy odrzucić hipotezę zerową i stwierdzić, że istnieje autokorelacja między resztami rzędu mniejszego lub równego 3.

Jak sobie radzić z autokorelacją

Jeśli odrzucisz hipotezę zerową i dojdziesz do wniosku, że w resztach występuje autokorelacja, masz kilka możliwości rozwiązania tego problemu, jeśli uznasz go za wystarczająco poważny:

  • Aby uzyskać dodatnią korelację szeregową, należy rozważyć dodanie do modelu opóźnień zmiennej zależnej i/lub niezależnej.
  • W przypadku ujemnej korelacji szeregowej upewnij się, że żadna ze zmiennych nie jest nadmiernie opóźniona .
  • Aby uzyskać korelację sezonową, rozważ dodanie do modelu manekinów sezonowych.

Dodatkowe zasoby

Kompletny przewodnik po regresji liniowej w Pythonie
Jak wykonać test Durbina-Watsona w Pythonie
Jak wykonać test Ljung-Box w Pythonie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *