Hoe u een wald-test uitvoert in python


Met een Wald-test kan worden getest of één of meerdere parameters van een model gelijk zijn aan bepaalde waarden.

Deze test wordt vaak gebruikt om te bepalen of een of meer voorspellende variabelen in een regressiemodel gelijk zijn aan nul.

Voor deze test gebruiken we de volgende nul- en alternatieve hypothesen :

  • H 0 : Sommige sets voorspellende variabelen zijn allemaal gelijk aan nul.
  • H A : Niet alle voorspellende variabelen in de set zijn gelijk aan nul.

Als we er niet in slagen de nulhypothese te verwerpen, kunnen we de gespecificeerde reeks voorspellende variabelen uit het model verwijderen, omdat deze geen statistisch significante verbetering in de modelfit opleveren.

In het volgende voorbeeld ziet u hoe u een Wald-test in Python uitvoert

Voorbeeld: Wald-test in Python

Voor dit voorbeeld gebruiken we de beroemde mtcars- dataset om in het volgende meervoudige lineaire regressiemodel te passen:

mpg = β 0 + β 1 beschikbaar + β 2 carb + β 3 pk + β 4 cil

De volgende code laat zien hoe dit regressiemodel moet worden aangepast en hoe het modeloverzicht kan worden weergegeven:

 import statsmodels. formula . api as smf
import pandas as pd
import io

#define dataset as string
mtcars_data="""model,mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb
Mazda RX4,21,6,160,110,3.9,2.62,16.46,0,1,4,4
Mazda RX4 Wag,21.6,160,110,3.9,2.875,17.02,0,1,4,4
Datsun 710,22.8,4,108,93,3.85,2.32,18.61,1,1,4,1
Hornet 4 Drive,21.4,6,258,110,3.08,3.215,19.44,1,0,3,1
Hornet Sportabout,18.7,8,360,175,3.15,3.44,17.02,0,0,3,2
Valiant,18.1,6,225,105,2.76,3.46,20.22,1,0,3,1
Duster 360,14.3,8,360,245,3.21,3.57,15.84,0,0,3,4
Merc 240D,24.4,4,146.7,62,3.69,3.19,20,1,0,4,2
Merc 230,22.8,4,140.8,95,3.92,3.15,22.9,1,0,4,2
Merc 280,19.2,6,167.6,123,3.92,3.44,18.3,1,0,4,4
Merc 280C,17.8,6,167.6,123,3.92,3.44,18.9,1,0,4,4
Merc 450SE,16.4,8,275.8,180,3.07,4.07,17.4,0,0,3,3
Merc 450SL,17.3,8,275.8,180,3.07,3.73,17.6,0,0,3,3
Merc 450SLC,15.2,8,275.8,180,3.07,3.78,18,0,0,3,3
Cadillac Fleetwood,10.4,8,472,205,2.93,5.25,17.98,0,0,3,4
Lincoln Continental,10.4,8,460,215,3,5.424,17.82,0,0,3,4
Chrysler Imperial,14.7,8,440,230,3.23,5.345,17.42,0,0,3,4
Fiat 128,32.4,4,78.7,66,4.08,2.2,19.47,1,1,4,1
Honda Civic,30.4,4,75.7,52,4.93,1.615,18.52,1,1,4,2
Toyota Corolla,33.9,4,71.1,65,4.22,1.835,19.9,1,1,4,1
Toyota Corona,21.5,4,120.1,97,3.7,2.465,20.01,1,0,3,1
Dodge Challenger,15.5,8,318,150,2.76,3.52,16.87,0,0,3,2
AMC Javelin,15.2,8,304,150,3.15,3.435,17.3,0,0,3,2
Camaro Z28,13.3,8,350,245,3.73,3.84,15.41,0,0,3,4
Pontiac Firebird,19.2,8,400,175,3.08,3.845,17.05,0,0,3,2
Fiat X1-9,27.3,4,79,66,4.08,1.935,18.9,1,1,4,1
Porsche 914-2,26,4,120.3,91,4.43,2.14,16.7,0,1,5,2
Lotus Europa,30.4,4,95.1,113,3.77,1.513,16.9,1,1,5,2
Ford Pantera L,15.8,8,351,264,4.22,3.17,14.5,0,1,5,4
Ferrari Dino,19.7,6,145,175,3.62,2.77,15.5,0,1,5,6
Maserati Bora,15.8,301,335,3.54,3.57,14.6,0,1,5,8
Volvo 142E,21.4,4,121,109,4.11,2.78,18.6,1,1,4,2"""

#convert string to DataFrame
df = pd. read_csv ( io.StringIO (mtcars_data), sep=" , ")

#fit multiple linear regression model
results = smf. ols (' mpg~disp+carb+hp+cyl ',df). fit ()

#view regression model summary
results. summary ()

	coef std err t P>|t| [0.025 0.975]
Intercept34.0216 2.523 13.482 0.000 28.844 39.199
available -0.0269 0.011 -2.379 0.025 -0.050 -0.004
carb -0.9269 0.579 -1.601 0.121 -2.115 0.261
hp 0.0093 0.021 0.452 0.655 -0.033 0.052
cyl -1.0485 0.784 -1.338 0.192 -2.657 0.560

Vervolgens kunnen we de functie statsmodels wald_test() gebruiken om te testen of de regressiecoëfficiënten voor de voorspellende variabelen „hp“ en „cyl“ beide gelijk zijn aan nul.

De volgende code laat zien hoe u deze functie in de praktijk kunt gebruiken:

 #perform Wald Test to determine if 'hp' and 'cyl' coefficients are both zero
print ( results.wald_test (' (hp=0, cyl=0) '))

F test: F=array([[0.91125429]]), p=0.41403001184235005, df_denom=27, df_num=2

Uit het resultaat kunnen we zien dat de p-waarde van de test 0,414 is.

Omdat deze p-waarde niet kleiner is dan 0,05, slagen we er niet in de nulhypothese van de Wald-test te verwerpen.

Dit betekent dat we kunnen aannemen dat de regressiecoëfficiënten voor de voorspellende variabelen “hp” en “cyl” beide gelijk zijn aan nul.

We kunnen deze termen uit het model verwijderen omdat ze de algehele fit van het model niet statistisch significant verbeteren.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in Python uitvoert:

Hoe u eenvoudige lineaire regressie kunt uitvoeren
Hoe polynomiale regressie uit te voeren in Python
Hoe VIF in Python te berekenen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert