Python'da wald testi nasıl yapılır?
Bir modelin bir veya daha fazla parametresinin belirli değerlere eşit olup olmadığını test etmek için Wald testi kullanılabilir.
Bu test genellikle bir regresyon modelindeki bir veya daha fazla yordayıcı değişkenin sıfıra eşit olup olmadığını belirlemek için kullanılır.
Bu test için aşağıdaki boş ve alternatif hipotezleri kullanıyoruz:
- H 0 : Bazı yordayıcı değişken kümelerinin tümü sıfıra eşittir.
- H A : Kümedeki yordayıcı değişkenlerin tümü sıfıra eşit değildir.
Sıfır hipotezini reddetmeyi başaramazsak, model uyumunda istatistiksel olarak anlamlı bir iyileşme sağlamadıkları için belirtilen yordayıcı değişkenler kümesini modelden kaldırabiliriz.
Aşağıdaki örnek Python’da Wald testinin nasıl gerçekleştirileceğini gösterir
Örnek: Python’da Wald testi
Bu örnek için, aşağıdaki çoklu doğrusal regresyon modeline uyacak şekilde ünlü mtcars veri kümesini kullanacağız:
mpg = β 0 + β 1 mevcut + β 2 karbonhidrat + β 3 hp + β 4 silindir
Aşağıdaki kod, bu regresyon modelinin nasıl sığdırılacağını ve model özetinin nasıl görüntüleneceğini gösterir:
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
Daha sonra, “hp” ve “cyl” öngörücü değişkenleri için regresyon katsayılarının her ikisinin de sıfıra eşit olup olmadığını test etmek için statsmodels wald_test() fonksiyonunu kullanabiliriz.
Aşağıdaki kod bu işlevin pratikte nasıl kullanılacağını gösterir:
#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
Sonuçtan testin p değerinin 0,414 olduğunu görüyoruz.
Bu p değeri 0,05’ten küçük olmadığı için Wald testinin sıfır hipotezini reddedemiyoruz.
Bu, yordayıcı değişkenler “hp” ve “cyl” için regresyon katsayılarının her ikisinin de sıfıra eşit olduğunu varsayabileceğimiz anlamına gelir.
Bu terimleri modelden kaldırabiliriz çünkü bunlar genel model uyumunu istatistiksel olarak anlamlı bir şekilde iyileştirmezler.
Ek kaynaklar
Aşağıdaki eğitimlerde Python’da diğer yaygın işlemlerin nasıl gerçekleştirileceği açıklanmaktadır:
Basit doğrusal regresyon nasıl gerçekleştirilir
Python’da polinom regresyonu nasıl gerçekleştirilir
Python’da VIF nasıl hesaplanır