Come eseguire il test goldfeld-quandt in python


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

L’eteroschedasticità si riferisce alla dispersione ineguale dei residui a diversi livelli di una variabile di risposta in un modello di regressione.

Se è presente l’eteroschedasticità, ciò viola uno dei presupposti chiave della regressione lineare secondo cui i residui sono equamente dispersi a ciascun livello della variabile di risposta.

Questo tutorial fornisce un esempio passo passo di come eseguire il test Goldfeld-Quandt in Python.

Passaggio 1: crea il set di dati

Per questo esempio, creiamo il seguente DataFrame panda che contiene informazioni sulle ore studiate, sugli esami preparatori sostenuti e sui risultati degli esami finali ottenuti da 13 studenti in una classe:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' hours ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6],
                   ' exams ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2],
                   ' score ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]})

#view DataFrame
print (df)

    hours exam score
0 1 1 76
1 2 3 78
2 2 3 85
3 4 5 88
4 2 2 72
5 1 2 69
6 5 1 94
7 4 1 94
8 2 0 88
9 4 3 92
10 4 4 90
11 3 3 75
12 6 2 96

Passaggio 2: adattare il modello di regressione lineare

Successivamente, adatteremo un modello di regressione lineare multipla utilizzando ore ed esami come variabili predittive e il punteggio come variabile di risposta:

 import statsmodels. api as sm

#define predictor and response variables
y = df[' score ']
x = df[[' hours ', ' exams ']]

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

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

#view model summary
print ( model.summary ())

                            OLS Regression Results                            
==================================================== ============================
Dept. Variable: R-squared score: 0.718
Model: OLS Adj. R-squared: 0.661
Method: Least Squares F-statistic: 12.70
Date: Mon, 31 Oct 2022 Prob (F-statistic): 0.00180
Time: 09:22:56 Log-Likelihood: -38.618
No. Observations: 13 AIC: 83.24
Df Residuals: 10 BIC: 84.93
Model: 2                                         
Covariance Type: non-robust                                         
==================================================== ============================
                 coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 71.4048 4.001 17.847 0.000 62.490 80.319
hours 5.1275 1.018 5.038 0.001 2.860 7.395
exams -1.2121 1.147 -1.057 0.315 -3.768 1.344
==================================================== ============================
Omnibus: 1,103 Durbin-Watson: 1,248
Prob(Omnibus): 0.576 Jarque-Bera (JB): 0.803
Skew: -0.289 Prob(JB): 0.669
Kurtosis: 1.928 Cond. No. 11.7
==================================================== ============================

Passaggio 3: eseguire il test Goldfeld-Quandt

Successivamente, utilizzeremo la funzione statsmodels het_goldfeldquandt() per eseguire il test Goldfeld-Quandt.

Nota : il test Goldfeld-Quandt funziona rimuovendo un numero di osservazioni situate al centro del set di dati e quindi testando per vedere se la distribuzione dei residui è diversa dai due set di dati risultanti che si legano su ciascun lato delle osservazioni centrali.

In genere, scegliamo di rimuovere circa il 20% delle osservazioni totali. In questo caso possiamo utilizzare l’argomento drop per specificare che vogliamo rimuovere il 20% delle osservazioni:

 #perform Goldfeld-Quandt test
sm. stats . diagnosis . het_goldfeldquandt (y, x, drop= 0.2 )

(1.7574505407790355, 0.38270288684680076, 'increasing')

Ecco come interpretare il risultato:

  • La statistica del test è 1.757 .
  • Il valore p corrispondente è 0,383 .

Il test di Goldfeld-Quandt utilizza le seguenti ipotesi nulle e alternative:

  • Nullo (H 0 ) : è presente l’omoschedasticità.
  • Alternativa ( HA ): è presente eteroschedasticità.

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

Non abbiamo prove sufficienti per sostenere che l’eteroschedasticità sia un problema nel modello di regressione.

Cosa fare dopo

Se non si rifiuta l’ipotesi nulla del test di Goldfeld-Quandt, l’eteroschedasticità non è presente e si può procedere all’interpretazione del risultato della regressione originale.

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

Esistono diversi modi comuni per risolvere questo problema, tra cui:

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. In generale, ciò può far scomparire l’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, la regressione ponderata può eliminare il problema dell’eteroschedasticità.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in Python:

Come eseguire la regressione OLS in Python
Come creare un grafico residuo in Python
Come eseguire il test di White in Python
Come eseguire un test di Breusch-Pagan in Python

Aggiungi un commento

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