Як виконати тест уайта в python (крок за кроком)


Критерій Уайта використовується для визначення наявності гетероскедастичності в регресійній моделі.

Гетероскедастичність відноситься до нерівномірної дисперсії залишків на різних рівнях змінної відповіді , що порушує припущення , що залишки однаково розподілені на кожному рівні змінної відповіді.

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

Крок 1. Завантажте дані

У цьому прикладі ми підберемо модель множинної лінійної регресії за допомогою набору даних mtcars .

Наступний код показує, як завантажити цей набір даних у pandas DataFrame:

 from sklearn. linear_model import LinearRegression
from statsmodels. stats . diagnostic import het_white
import statsmodels. api as sm
import pandas as pd

#define URL where dataset is located
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/mtcars.csv"

#read in data
data = pd. read_csv (url)

#view summary of data
data. info ()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 32 entries, 0 to 31
Data columns (total 12 columns):
 # Column Non-Null Count Dtype  
--- ------ -------------- -----  
 0 model 32 non-null object 
 1 mpg 32 non-null float64
 2 cyl 32 non-null int64  
 3 disp 32 non-null float64
 4 hp 32 non-null int64  
 5 drat 32 non-null float64
 6 wt 32 non-null float64
 7 qsec 32 non-null float64
 8 vs 32 non-null int64  
 9 am 32 non-null int64  
 10 gear 32 non-null int64  
 11 carb 32 non-null int64  
dtypes: float64(5), int64(6), object(1)

Крок 2. Підберіть регресійну модель

Далі ми підберемо регресійну модель, використовуючи mpg як змінну відповіді та disp і hp як дві змінні предиктора:

 #define response variable
y = data[' mpg ']

#define predictor variables
x = data[[' disp ', ' hp ']]

#add constant to predictor variables
x = sm. add_constant (x)

#fit regression model
model = sm. OLS (y,x). fit ()

Крок 3: Виконайте тест Уайта

Далі ми використаємо функцію het_white() із пакету statsmodels, щоб виконати тест Уайта, щоб визначити, чи присутня гетероскедастичність у регресійній моделі:

 #perform White's test
white_test = het_white(model. resid , model. model . exog )

#define labels to use for output of White's test
labels = ['Test Statistic', 'Test Statistic p-value', 'F-Statistic', 'F-Test p-value']

#print results of White's test
print (dict(zip(labels, white_test)))

{'Test Statistic': 7.076620330416624, 'Test Statistic p-value': 0.21500404394263936,
 'F-Statistic': 1.4764621093131864, 'F-Test p-value': 0.23147065943879694}

Ось як інтерпретувати результат:

  • Статистика тесту X2 = 7,0766 .
  • Відповідне значення p становить 0,215 .

Тест Уайта використовує такі нульові та альтернативні гіпотези:

  • Null (H 0 ) : присутній гомоскедастичність (залишки також розсіяні)
  • Альтернатива ( HA ): присутня гетероскедастичність (залишки нерівномірно розподілені)

Оскільки p-значення не менше 0,05, ми не можемо відхилити нульову гіпотезу.

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

Що робити далі

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

Однак якщо ви відкидаєте нульову гіпотезу, це означає, що існує гетероскедастичність. У цьому випадку стандартні помилки, відображені в таблиці результатів регресії, можуть бути ненадійними.

Існує два поширених способи вирішення цієї проблеми:

1. Перетворення змінної відповіді.

Ви можете спробувати виконати перетворення змінної відповіді, наприклад взявши логарифм, квадратний або кубічний корінь змінної відповіді. Це часто призводить до зникнення гетероскедастичності.

2. Використовуйте зважену регресію.

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

Додаткові ресурси

Наступні посібники надають додаткову інформацію про лінійну регресію в Python:

Повний посібник із лінійної регресії в Python
Як створити залишковий графік у Python
Як розрахувати VIF у Python

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

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