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.