Как выполнить тест вальда в python


Тест Вальда можно использовать для проверки того, равны ли один или несколько параметров модели определенным значениям.

Этот тест часто используется для определения того, равны ли нулю одна или несколько переменных-предикторов в регрессионной модели.

Для этого теста мы используем следующие нулевые и альтернативные гипотезы :

  • H 0 : Некоторые наборы переменных-предикторов равны нулю.
  • H A : Не все переменные-предикторы в наборе равны нулю.

Если нам не удастся отвергнуть нулевую гипотезу, мы можем удалить из модели указанный набор переменных-предикторов, поскольку они не обеспечивают статистически значимого улучшения соответствия модели.

В следующем примере показано, как выполнить тест Вальда в Python.

Пример: тест Вальда в Python

В этом примере мы будем использовать знаменитый набор данных mtcars , чтобы соответствовать следующей модели множественной линейной регрессии:

миль на галлон = β 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».

Следующий код показывает, как использовать эту функцию на практике:

 #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, мы не можем отвергнуть нулевую гипотезу теста Вальда.

Это означает, что мы можем предположить, что коэффициенты регрессии для переменных-предикторов «hp» и «cyl» равны нулю.

Мы можем удалить эти условия из модели, поскольку они статистически значимо не улучшают общую точность модели.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в Python:

Как выполнить простую линейную регрессию
Как выполнить полиномиальную регрессию в Python
Как рассчитать VIF в Python

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *