Python で wald テストを実行する方法


Wald テストを使用して、モデルの 1 つ以上のパラメーターが特定の値に等しいかどうかをテストできます。

このテストは、回帰モデル内の 1 つ以上の予測変数がゼロに等しいかどうかを判断するためによく使用されます。

この検定では次の帰無仮説と対立仮説を使用します。

  • H 0 : 予測子変数の一部のセットはすべてゼロに等しい。
  • H A : セット内のすべての予測子変数がゼロに等しいわけではありません。

帰無仮説を棄却できない場合は、モデルの適合性において統計的に有意な改善が得られないため、指定された予測変数のセットをモデルから削除できます。

次の例は、Python で Wald テストを実行する方法を示しています。

例: Python での Wald テスト

この例では、有名なmtcarsデータセットを使用して、次の重線形回帰モデルを当てはめます。

mpg = β 0 + 利用可能なβ 1 + β 2炭水化物 + β 3馬力 + β 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」の回帰係数が両方ともゼロに等しいと仮定できることを意味します。

これらの項はモデル全体の適合性を統計的に大幅に改善しないため、モデルから削除できます。

追加リソース

次のチュートリアルでは、Python で他の一般的な操作を実行する方法について説明します。

単純な線形回帰を実行する方法
Python で多項式回帰を実行する方法
Python で VIF を計算する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です