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