Як виконати тест вальда в python


Тест Вальда можна використовувати, щоб перевірити, чи дорівнюють один або кілька параметрів моделі певним значенням.

Цей тест часто використовується, щоб визначити, чи дорівнюють нулю одна або кілька змінних предиктора в регресійній моделі.

Для цього тесту ми використовуємо такі нульові та альтернативні гіпотези :

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

Якщо нам не вдасться відхилити нульову гіпотезу, ми можемо видалити вказаний набір предикторних змінних із моделі, оскільки вони не забезпечують статистично значущого покращення відповідності моделі.

У наступному прикладі показано, як виконати тест Вальда в Python

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

Для цього прикладу ми використаємо відомий набір даних 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».

Наступний код показує, як використовувати цю функцію на практиці:

 #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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *