Hoe de goldfeld-quandt-test in python uit te voeren
De Goldfeld-Quandt-test wordt gebruikt om te bepalen of heteroskedasticiteit aanwezig is in een regressiemodel.
Heteroscedasticiteit verwijst naar de ongelijke spreiding van residuen op verschillende niveaus van eenresponsvariabele in een regressiemodel.
Als heteroskedasticiteit aanwezig is, schendt dit een van de belangrijkste aannames van lineaire regressie , namelijk dat de residuen gelijkmatig verspreid zijn op elk niveau van de responsvariabele.
Deze tutorial biedt een stapsgewijs voorbeeld van hoe u de Goldfeld-Quandt-test in Python uitvoert.
Stap 1: Maak de gegevensset
Laten we voor dit voorbeeld het volgende panda’s DataFrame maken dat informatie bevat over de gestudeerde uren, de afgelegde voorbereidende examens en de eindexamenresultaten behaald door 13 leerlingen in een klas:
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
Stap 2: Pas het lineaire regressiemodel aan
Vervolgens passen we een meervoudig lineair regressiemodel toe, waarbij we uren en examens gebruiken als voorspellende variabelen en de score als responsvariabele:
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
==================================================== ============================
Stap 3: Voer de Goldfeld-Quandt-test uit
Vervolgens zullen we de functie statsmodels het_goldfeldquandt() gebruiken om de Goldfeld-Quandt-test uit te voeren.
Opmerking : De Goldfeld-Quandt-test werkt door een aantal waarnemingen te verwijderen die zich in het midden van de dataset bevinden en vervolgens te testen om te zien of de verdeling van de residuen verschilt van de twee resulterende datasets die aan elke kant van de centrale waarnemingen binden.
Meestal kiezen we ervoor om ongeveer 20% van de totale waarnemingen te verwijderen. In dit geval kunnen we het drop- argument gebruiken om aan te geven dat we 20% van de observaties willen verwijderen:
#perform Goldfeld-Quandt test sm. stats . diagnosis . het_goldfeldquandt (y, x, drop= 0.2 ) (1.7574505407790355, 0.38270288684680076, 'increasing')
Zo interpreteert u het resultaat:
- De teststatistiek is 1.757 .
- De overeenkomstige p-waarde is 0,383 .
De Goldfeld-Quandt-test gebruikt de volgende nul- en alternatieve hypothesen:
- Nul (H 0 ) : Homoskedasticiteit is aanwezig.
- Alternatief ( HA ): Er is heteroskedasticiteit aanwezig.
Omdat de p-waarde niet kleiner is dan 0,05, slagen we er niet in de nulhypothese te verwerpen.
We hebben niet voldoende bewijs om te beweren dat heteroskedasticiteit een probleem is in het regressiemodel.
Wat nu te doen
Als u er niet in slaagt de nulhypothese van de Goldfeld-Quandt-test te verwerpen, is er geen sprake van heteroscedasticiteit en kunt u doorgaan met het interpreteren van het resultaat van de oorspronkelijke regressie.
Als u echter de nulhypothese verwerpt, betekent dit dat er heteroskedasticiteit aanwezig is in de gegevens. In dit geval zijn de standaardfouten die in de regressie-uitvoertabel worden weergegeven mogelijk onbetrouwbaar.
Er zijn verschillende veelvoorkomende manieren om dit probleem op te lossen, waaronder:
1. Transformeer de responsvariabele.
U kunt proberen een transformatie uit te voeren op de responsvariabele, bijvoorbeeld door de log-, vierkantswortel of derdemachtswortel van de responsvariabele te nemen. Over het algemeen kan dit ervoor zorgen dat heteroskedasticiteit verdwijnt.
2. Gebruik gewogen regressie.
Gewogen regressie kent een gewicht toe aan elk gegevenspunt op basis van de variantie van de aangepaste waarde. In wezen geeft dit een laag gewicht aan datapunten met grotere varianties, waardoor hun resterende kwadraten kleiner worden.
Wanneer de juiste gewichten worden gebruikt, kan gewogen regressie het probleem van heteroskedasticiteit elimineren.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in Python uitvoert:
Hoe OLS-regressie uit te voeren in Python
Hoe u een restplot maakt in Python
Hoe de test van White in Python uit te voeren
Hoe een Breusch-Pagan-test uit te voeren in Python