Come eseguire il test di white in python (passo dopo passo)


Il test di White viene utilizzato per determinare se l’eteroschedasticità è presente in un modello di regressione.

L’eteroschedasticità si riferisce alla dispersione non uniforme dei residui a diversi livelli di una variabile di risposta , che viola il presupposto che i residui siano equamente dispersi a ciascun livello della variabile di risposta.

Il seguente esempio passo passo mostra come eseguire il test di White in Python per determinare se l’eteroschedasticità è o meno un problema in un dato modello di regressione.

Passaggio 1: caricare i dati

In questo esempio, adatteremo un modello di regressione lineare multipla utilizzando il set di dati mtcars .

Il codice seguente mostra come caricare questo set di dati in un DataFrame panda:

 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/Statorials/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)

Passaggio 2: adattare il modello di regressione

Successivamente, adatteremo un modello di regressione utilizzando mpg come variabile di risposta e disp e hp come due variabili predittive:

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

Passaggio 3: eseguire il test di White

Successivamente, utilizzeremo la funzione het_white() dal pacchetto statsmodels per eseguire il test di White per determinare se l’eteroschedasticità è presente nel modello di regressione:

 #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}

Ecco come interpretare il risultato:

  • La statistica del test è X2 = 7.0766 .
  • Il valore p corrispondente è 0,215 .

Il test di White utilizza le seguenti ipotesi nulle e alternative:

  • Nullo (H 0 ) : è presente omoschedasticità (anche i residui sono sparsi)
  • Alternativa ( HA ): è presente eteroschedasticità (i residui non sono equamente dispersi)

Poiché il valore p non è inferiore a 0,05, non riusciamo a rifiutare l’ipotesi nulla.

Ciò significa che non abbiamo prove sufficienti per affermare che l’eteroschedasticità è presente nel modello di regressione.

Cosa fare dopo

Se non si riesce a rifiutare l’ipotesi nulla del test di White, l’eteroschedasticità non è presente e si può procedere a interpretare il risultato della regressione originale.

Tuttavia, se si rifiuta l’ipotesi nulla, ciò significa che esiste eteroschedasticità. In questo caso, gli errori standard visualizzati nella tabella di output della regressione potrebbero essere inaffidabili.

Esistono due modi comuni per risolvere questo problema:

1. Trasformare la variabile di risposta.

Puoi provare a eseguire una trasformazione sulla variabile di risposta, ad esempio prendendo il logaritmo, la radice quadrata o la radice cubica della variabile di risposta. Ciò spesso si traduce nella scomparsa dell’eteroschedasticità.

2. Utilizzare la regressione ponderata.

La regressione ponderata assegna un peso a ciascun punto dati in base alla varianza del relativo valore adattato. In sostanza, ciò attribuisce pesi bassi ai punti dati che presentano varianze più elevate, riducendo i loro quadrati residui. Quando vengono utilizzati i pesi appropriati, ciò può eliminare il problema dell’eteroschedasticità.

Risorse addizionali

I seguenti tutorial forniscono informazioni aggiuntive sulla regressione lineare in Python:

Una guida completa alla regressione lineare in Python
Come creare un grafico residuo in Python
Come calcolare VIF in Python

Aggiungi un commento

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