Python에서 wald 테스트를 수행하는 방법


Wald 테스트는 모델의 하나 이상의 매개변수가 특정 값과 같은지 여부를 테스트하는 데 사용할 수 있습니다.

이 테스트는 회귀 모델에서 하나 이상의 예측 변수가 0인지 확인하는 데 자주 사용됩니다.

이 테스트에는 다음과 같은 귀무 가설과 대립 가설을 사용합니다.

  • H 0 : 일부 예측 변수 세트는 모두 0입니다.
  • H A : 세트의 모든 예측 변수가 0과 같지는 않습니다.

귀무 가설을 기각하지 못하면 모델 적합성에 통계적으로 유의미한 개선을 제공하지 않는 지정된 예측 변수 세트를 모델에서 제거할 수 있습니다.

다음 예에서는 Python에서 Wald 테스트를 수행하는 방법을 보여줍니다.

예: Python의 Wald 테스트

이 예에서는 유명한 mtcars 데이터 세트를 사용하여 다음 다중 선형 회귀 모델을 적합합니다.

mpg = β 0 + β 1 사용 가능 + β 2 탄수화물 + β 3 hp + β 4 실린더

다음 코드는 이 회귀 모델을 적합하고 모델 요약을 표시하는 방법을 보여줍니다.

 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

다음으로, statsmodels wald_test() 함수를 사용하여 예측 변수 “hp”와 “cyl”에 대한 회귀 계수가 모두 0인지 테스트할 수 있습니다.

다음 코드는 실제로 이 함수를 사용하는 방법을 보여줍니다.

 #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

결과에서 테스트의 p-값이 0.414 임을 알 수 있습니다.

이 p-값은 0.05 이상이므로 Wald 검정의 귀무가설을 기각할 수 없습니다.

이는 예측 변수 “hp”와 “cyl”에 대한 회귀 계수가 모두 0이라고 가정할 수 있음을 의미합니다.

이러한 항은 전체 모형 적합도를 통계적으로 유의미하게 향상시키지 못하므로 모형에서 제거할 수 있습니다.

추가 리소스

다음 튜토리얼에서는 Python에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

단순 선형 회귀를 수행하는 방법
Python에서 다항식 회귀를 수행하는 방법
Python에서 VIF를 계산하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다