Jak wykonać test walda w pythonie
Test Walda można zastosować do sprawdzenia, czy jeden lub więcej parametrów modelu ma określone wartości.
Test ten jest często używany do określenia, czy jedna lub więcej zmiennych predykcyjnych w modelu regresji jest równych zero.
W tym teście używamy następujących hipotez zerowych i alternatywnych:
- H 0 : Wszystkie zestawy zmiennych predykcyjnych są równe zeru.
- H A : Nie wszystkie zmienne predykcyjne w zestawie są równe zeru.
Jeżeli nie odrzucimy hipotezy zerowej, wówczas możemy usunąć z modelu określony zestaw zmiennych predykcyjnych, gdyż nie zapewniają one statystycznie istotnej poprawy dopasowania modelu.
Poniższy przykład pokazuje, jak wykonać test Walda w Pythonie
Przykład: test Walda w Pythonie
W tym przykładzie użyjemy słynnego zbioru danych mtcars , aby dopasować następujący model regresji liniowej wielokrotnej:
mpg = β 0 + β 1 dostępne + β 2 węglowodany + β 3 KM + β 4 cyl
Poniższy kod pokazuje, jak dopasować ten model regresji i wyświetlić podsumowanie modelu:
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
Następnie możemy użyć funkcji statsmodels wald_test() do sprawdzenia, czy współczynniki regresji dla zmiennych predykcyjnych „hp” i „cyl” są równe zero.
Poniższy kod pokazuje, jak w praktyce wykorzystać tę funkcję:
#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
Z wyniku widzimy, że wartość p testu wynosi 0,414 .
Ponieważ ta wartość p jest nie mniejsza niż 0,05, nie możemy odrzucić hipotezy zerowej testu Walda.
Oznacza to, że możemy założyć, że współczynniki regresji dla zmiennych predykcyjnych „hp” i „cyl” są równe zero.
Możemy usunąć te terminy z modelu, ponieważ nie poprawiają one statystycznie znacząco ogólnego dopasowania modelu.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w Pythonie:
Jak przeprowadzić prostą regresję liniową
Jak wykonać regresję wielomianową w Pythonie
Jak obliczyć VIF w Pythonie