Comment effectuer un test Durbin-Watson en Python



L’une des hypothèses de la régression linéaire est qu’il n’y a pas de corrélation entre les résidus. En d’autres termes, les résidus sont supposés indépendants.

Une façon de déterminer si cette hypothèse est remplie consiste à effectuer un test de Durbin-Watson , qui est utilisé pour détecter la présence d’autocorrélation dans les résidus d’une régression . Ce test utilise les hypothèses suivantes :

H 0 (hypothèse nulle) : Il n’y a pas de corrélation entre les résidus.

H A (hypothèse alternative) : Les résidus sont autocorrélés.

La statistique du test est approximativement égale à 2*(1-r) où r est l’autocorrélation de l’échantillon des résidus. Ainsi, la statistique du test sera toujours comprise entre 0 et 4 avec l’interprétation suivante :

  • Une statistique de test de 2 indique aucune corrélation en série.
  • Plus les statistiques du test sont proches de 0 , plus il y a de preuves d’une corrélation sérielle positive.
  • Plus les statistiques du test sont proches de 4 , plus il y a de preuves d’une corrélation sérielle négative.

En règle générale, les valeurs statistiques de test comprises entre 1,5 et 2,5 sont considérées comme normales. Cependant, des valeurs en dehors de cette plage pourraient indiquer que l’autocorrélation pose un problème.

Ce tutoriel explique comment effectuer un test Durbin-Watson en Python.

Exemple : test Durbin-Watson en Python

Supposons que nous disposions de l’ensemble de données suivant qui décrit les attributs de 10 joueurs de basket-ball :

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

Supposons que nous ajustions un modèle de régression linéaire multiple en utilisant la notation comme variable de réponse et les trois autres variables comme variables prédictives :

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

Nous pouvons effectuer un Durbin Watson en utilisant la fonction durbin_watson() de la bibliothèque statsmodels pour déterminer si les résidus du modèle de régression sont autocorrélés :

from statsmodels.stats.stattools import durbin_watson

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

2.392

La statistique du test est de 2,392 . Puisque cette valeur est comprise entre 1,5 et 2,5, nous considérons que l’autocorrélation ne pose pas de problème dans ce modèle de régression.

Comment gérer l’autocorrélation

Si vous rejetez l’hypothèse nulle et concluez qu’une autocorrélation est présente dans les résidus, vous disposez alors de plusieurs options pour corriger ce problème si vous le jugez suffisamment grave :

1. Pour une corrélation en série positive, envisagez d’ajouter des décalages de la variable dépendante et/ou indépendante au modèle.

2. Pour une corrélation série négative, assurez-vous qu’aucune de vos variables n’est surdifférée .

3. Pour la corrélation saisonnière, envisagez d’ajouter des variables fictives saisonnières au modèle.

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *