Come eseguire un test di breusch-godfrey in python


Uno dei presupposti chiave della regressione lineare è che non vi sia alcuna correlazione tra i residui, ovvero che i residui siano indipendenti.

Per verificare l’autocorrelazione del primo ordine, possiamo eseguire un test di Durbin-Watson . Tuttavia, se vogliamo testare l’autocorrelazione a ordini più alti, dobbiamo eseguire un test di Breusch-Godfrey .

Questo test utilizza le seguenti ipotesi :

H 0 (ipotesi nulla): non esiste autocorrelazione di ordine inferiore o uguale a p .

H A (ipotesi alternativa): esiste un’autocorrelazione di un certo ordine inferiore o uguale a p .

La statistica del test segue una distribuzione Chi-quadrato con p gradi di libertà.

Se il valore p che corrisponde a questa statistica test è inferiore a un certo livello di significatività (ad esempio 0,05), allora possiamo rifiutare l’ipotesi nulla e concludere che esiste un’autocorrelazione tra i residui ad un certo ordine inferiore o pari a p .

Per eseguire un test Breusch-Godfrey in Python, puoi utilizzare la funzione acorr_breusch_godfrey() dalla libreria statsmodels .

Il seguente esempio passo passo spiega come eseguire il test Breusch-Godfrey in Python.

Passaggio 1: creare i dati

Innanzitutto, creiamo un set di dati contenente due variabili predittive (x1 e x2) e una variabile di risposta (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

Passaggio 2: adattare un modello di regressione

Quindi possiamo adattare un modello di regressione lineare multipla utilizzando x1 e x2 come variabili predittive e y come variabile di risposta .

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

Passaggio 3: eseguire il test di Breusch-Godfrey

Successivamente, eseguiremo il test di Breusch-Godfrey per verificare l’autocorrelazione tra i residui all’ordine p . Per questo esempio, sceglieremo 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)

Il primo valore dell’output rappresenta la statistica del test e il secondo valore rappresenta il corrispondente valore p.

Dal risultato possiamo vedere quanto segue:

  • Statistica del test X 2 = 8,7031
  • Valore P = 0,0335

Poiché questo valore p è inferiore a 0,05, possiamo rifiutare l’ipotesi nulla e concludere che esiste un’autocorrelazione tra i residui di ordine inferiore o uguale a 3.

Come gestire l’autocorrelazione

Se rifiuti l’ipotesi nulla e concludi che nei residui è presente l’autocorrelazione, hai diverse opzioni per correggere questo problema se lo consideri abbastanza serio:

  • Per una correlazione seriale positiva, prendere in considerazione l’aggiunta di ritardi della variabile dipendente e/o indipendente al modello.
  • Per la correlazione seriale negativa, assicurati che nessuna delle variabili abbia un ritardo eccessivo .
  • Per la correlazione stagionale, prendere in considerazione l’aggiunta di dummy stagionali al modello.

Risorse addizionali

Una guida completa alla regressione lineare in Python
Come eseguire un test di Durbin-Watson in Python
Come eseguire un test Ljung-Box in Python

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *