Comment effectuer le test de White en Python (étape par étape)



Le test de White est utilisé pour déterminer si l’hétéroscédasticité est présente dans un modèle de régression.

L’hétéroscédasticité fait référence à la dispersion inégale des résidus à différents niveaux d’une variable de réponse , ce qui viole l’ hypothèse selon laquelle les résidus sont également dispersés à chaque niveau de la variable de réponse.

L’exemple étape par étape suivant montre comment effectuer le test de White en Python pour déterminer si l’hétéroscédasticité constitue ou non un problème dans un modèle de régression donné.

Étape 1 : Charger les données

Dans cet exemple, nous ajusterons un modèle de régression linéaire multiple à l’aide de l’ensemble de données mtcars .

Le code suivant montre comment charger cet ensemble de données dans un DataFrame pandas :

from sklearn.linear_model import LinearRegression
from statsmodels.stats.diagnostic import het_white
import statsmodels.api as sm
import pandas as pd

#define URL where dataset is located
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/mtcars.csv"

#read in data
data = pd.read_csv(url)

#view summary of data
data.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 32 entries, 0 to 31
Data columns (total 12 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   model   32 non-null     object 
 1   mpg     32 non-null     float64
 2   cyl     32 non-null     int64  
 3   disp    32 non-null     float64
 4   hp      32 non-null     int64  
 5   drat    32 non-null     float64
 6   wt      32 non-null     float64
 7   qsec    32 non-null     float64
 8   vs      32 non-null     int64  
 9   am      32 non-null     int64  
 10  gear    32 non-null     int64  
 11  carb    32 non-null     int64  
dtypes: float64(5), int64(6), object(1)

Étape 2 : Ajuster le modèle de régression

Ensuite, nous ajusterons un modèle de régression en utilisant mpg comme variable de réponse et disp et hp comme deux variables prédictives :

#define response variable
y = data['mpg']

#define predictor variables
x = data[['disp', 'hp']]

#add constant to predictor variables
x = sm.add_constant(x)

#fit regression model
model = sm.OLS(y, x).fit()

Étape 3 : Effectuer le test de White

Ensuite, nous utiliserons la fonction het_white() du package statsmodels pour effectuer le test de White afin de déterminer si l’hétéroscédasticité est présente dans le modèle de régression :

#perform White's test
white_test = het_white(model.resid,  model.model.exog)

#define labels to use for output of White's test
labels = ['Test Statistic', 'Test Statistic p-value', 'F-Statistic', 'F-Test p-value']

#print results of White's test
print(dict(zip(labels, white_test)))

{'Test Statistic': 7.076620330416624, 'Test Statistic p-value': 0.21500404394263936,
 'F-Statistic': 1.4764621093131864, 'F-Test p-value': 0.23147065943879694}

Voici comment interpréter le résultat :

  • La statistique de test est X 2 = 7,0766 .
  • La valeur p correspondante est de 0,215 .

Le test de White utilise les hypothèses nulles et alternatives suivantes :

  • Null (H 0 ) : L’homoscédasticité est présente (les résidus sont également dispersés)
  • Alternative (H A ) : L’hétéroscédasticité est présente (les résidus ne sont pas également dispersés)

Puisque la valeur p n’est pas inférieure à 0,05, nous ne parvenons pas à rejeter l’hypothèse nulle.

Cela signifie que nous ne disposons pas de preuves suffisantes pour affirmer que l’hétéroscédasticité est présente dans le modèle de régression.

Que faire ensuite

Si vous ne parvenez pas à rejeter l’hypothèse nulle du test de White, alors l’hétéroscédasticité n’est pas présente et vous pouvez procéder à l’interprétation du résultat de la régression originale.

Cependant, si vous rejetez l’hypothèse nulle, cela signifie qu’il y a une hétéroscédasticité. Dans ce cas, les erreurs types affichées dans le tableau de sortie de la régression peuvent ne pas être fiables.

Il existe deux manières courantes de résoudre ce problème :

1. Transformez la variable de réponse.

Vous pouvez essayer d’effectuer une transformation sur la variable de réponse, par exemple en prenant le journal, la racine carrée ou la racine cubique de la variable de réponse. Cela entraîne souvent la disparition de l’hétéroscédasticité.

2. Utilisez la régression pondérée.

La régression pondérée attribue un poids à chaque point de données en fonction de la variance de sa valeur ajustée. Essentiellement, cela donne de faibles poids aux points de données qui ont des variances plus élevées, ce qui réduit leurs carrés résiduels. Lorsque les pondérations appropriées sont utilisées, cela peut éliminer le problème de l’hétéroscédasticité.

Ressources additionnelles

Les didacticiels suivants fournissent des informations supplémentaires sur la régression linéaire en Python :

Un guide complet de la régression linéaire en Python
Comment créer un tracé résiduel en Python
Comment calculer VIF en Python

Ajouter un commentaire

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