Come eseguire un test di durbin-watson in python


Uno dei presupposti della regressione lineare è che non vi sia alcuna correlazione tra i residui. In altre parole, si assume che i residui siano indipendenti.

Un modo per determinare se questa ipotesi è soddisfatta è eseguire un test di Durbin-Watson , utilizzato per rilevare la presenza di autocorrelazione nei residui di una regressione . Questo test utilizza le seguenti ipotesi:

H 0 (ipotesi nulla): non esiste correlazione tra i residui.

H A (ipotesi alternativa): i residui sono autocorrelati.

La statistica del test è approssimativamente uguale a 2*(1-r) dove r è l’autocorrelazione campionaria dei residui. Pertanto, la statistica del test sarà sempre compresa tra 0 e 4 con la seguente interpretazione:

  • Una statistica del test pari a 2 indica alcuna correlazione seriale.
  • Più le statistiche del test si avvicinano a 0 , maggiore è la prova di una correlazione seriale positiva.
  • Più le statistiche del test si avvicinano a 4 , maggiore è la prova di una correlazione seriale negativa.

In genere, i valori statistici del test compresi tra 1,5 e 2,5 sono considerati normali. Tuttavia, valori al di fuori di questo intervallo potrebbero indicare che l’autocorrelazione è un problema.

Questo tutorial spiega come eseguire un test Durbin-Watson in Python.

Esempio: test di Durbin-Watson in Python

Supponiamo di avere il seguente set di dati che descrive gli attributi di 10 giocatori di basket:

 import numpy as np
import pandas as pd

#create dataset
df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
                   'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#view dataset
df

	rating points assists rebounds
0 90 25 5 11
1 85 20 7 8
2 82 14 7 10
3 88 16 8 6
4 94 27 5 6
5 90 20 7 9
6 76 12 6 6
7 75 15 9 10
8 87 14 9 10
9 86 19 5 7

Supponiamo di adattare un modello di regressione lineare multipla utilizzando la valutazione come variabile di risposta e le altre tre variabili come variabili predittive:

 from statsmodels.formula.api import ols

#fit multiple linear regression model
model = ols('rating ~ points + assists + rebounds', data=df). fit ()

#view model summary
print(model.summary())

Possiamo eseguire un Watson Durbin utilizzando la funzione durbin_watson() dalla libreria statsmodels per determinare se i residui del modello di regressione sono autocorrelati:

 from statsmodels.stats.stattools import durbin_watson

#perform Durbin-Watson test
durbin_watson(model.resid)

2,392

La statistica del test è 2.392 . Poiché questo valore è compreso tra 1,5 e 2,5, riteniamo che l’autocorrelazione non sia un problema in questo modello di regressione.

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:

1. Per una correlazione seriale positiva, considerare l’aggiunta di ritardi della variabile dipendente e/o indipendente al modello.

2. Per la correlazione seriale negativa, assicurati che nessuna delle variabili abbia un ritardo eccessivo .

3. Per la correlazione stagionale, considerare l’aggiunta di dummy stagionali al modello.

Aggiungi un commento

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