Як виконати тест брейша-годфрі в python


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

Щоб перевірити автокореляцію першого порядку, ми можемо виконати тест Дарбіна-Ватсона . Однак, якщо ми хочемо перевірити автокореляцію вищих порядків, нам потрібно виконати тест Брейша-Годфрі .

Цей тест використовує такі припущення :

H 0 (нульова гіпотеза): немає автокореляції порядку, меншого або рівного p .

H A (альтернативна гіпотеза): існує автокореляція певного порядку, менша або рівна p .

Тестова статистика відповідає розподілу хі-квадрат із p ступенями свободи.

Якщо p-значення , яке відповідає цій тестовій статистиці, є нижчим за певний рівень значущості (наприклад, 0,05), тоді ми можемо відхилити нульову гіпотезу та зробити висновок, що існує автокореляція між залишками в певному нижчому порядку або дорівнює p .

Щоб виконати тест Брейша-Годфрі в Python, ви можете використати функцію acorr_breusch_godfrey() із бібліотеки statsmodels .

Наступний покроковий приклад пояснює, як виконати тест Брейша-Годфрі в Python.

Крок 1: Створіть дані

Спочатку давайте створимо набір даних, що містить дві змінні предиктора (x1 і x2) і змінну відповіді (y).

 import pandas as pd

#create dataset
df = pd. DataFrame ({' x1 ': [3, 4, 4, 5, 8, 9, 11, 13, 14, 16, 17, 20],
                   ' x2 ': [7, 7, 8, 8, 12, 4, 5, 15, 9, 17, 19, 19],
                    ' y ': [24, 25, 25, 27, 29, 31, 34, 34, 39, 30, 40, 49]})

#view first five rows of dataset
df. head ()

	x1 x2 y
0 3 7 24
1 4 7 25
2 4 8 25
3 5 8 27
4 8 12 29

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

Тоді ми можемо підібрати модель множинної лінійної регресії , використовуючи x1 і x2 як змінні прогностики та y як змінну відповіді .

 import statsmodels. api as sm

#define response variable
y = df[' y ']

#define predictor variables
x = df[[' x1 ', ' x2 ']]

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

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

Крок 3: Виконайте тест Брейша-Годфрі

Далі ми виконаємо тест Брейша-Годфрі, щоб перевірити наявність автокореляції між залишками порядку p . Для цього прикладу ми виберемо p = 3.

 import statsmodels. stats . diagnosis as dg

#perform Breusch-Godfrey test at order p = 3
print (dg. acorr_breusch_godfrey (model, nlags= 3 ))

(8.70314827, 0.0335094873, 5.27967224, 0.0403980576)

Перше значення виходу представляє тестову статистику, а друге значення представляє відповідне значення p.

З результату ми бачимо наступне:

  • Статистика тесту X 2 = 8,7031
  • Р-значення = 0,0335

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

Як боротися з автокореляцією

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

  • Для позитивної послідовної кореляції розгляньте можливість додавання лагів залежної та/або незалежної змінної до моделі.
  • Для негативної послідовної кореляції переконайтеся, що жодна з ваших змінних не має надмірної затримки .
  • Для сезонної кореляції розгляньте можливість додавання сезонних фіктивних елементів до моделі.

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

Повний посібник із лінійної регресії в Python
Як виконати тест Дарбіна-Ватсона в Python
Як виконати тест Ljung-Box на Python

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

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