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


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

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

H 0 (нульова гіпотеза): Немає кореляції між залишками.

H A (альтернативна гіпотеза): Залишки автокорельовані.

Тестова статистика приблизно дорівнює 2*(1-r), де r — вибіркова автокореляція залишків. Таким чином, тестова статистика завжди буде між 0 і 4 з такою інтерпретацією:

  • Тестовий показник 2 вказує на відсутність послідовної кореляції.
  • Чим ближча статистика тесту до 0 , тим більше є доказів позитивної послідовної кореляції.
  • Чим ближча статистика тесту до 4 , тим більше є доказів негативної послідовної кореляції.

Як правило, нормальними вважаються статистичні значення тесту від 1,5 до 2,5. Однак значення за межами цього діапазону можуть означати, що автокореляція є проблемою.

Цей підручник пояснює, як виконати тест Дарбіна-Ватсона в Python.

Приклад: тест Дарбіна-Ватсона в Python

Припустимо, що ми маємо наступний набір даних, який описує характеристики 10 баскетболістів:

 import numpy as np
import pandas as pd

#create dataset
df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
                   'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#view dataset
df

	rating points assists rebounds
0 90 25 5 11
1 85 20 7 8
2 82 14 7 10
3 88 16 8 6
4 94 27 5 6
5 90 20 7 9
6 76 12 6 6
7 75 15 9 10
8 87 14 9 10
9 86 19 5 7

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

 from statsmodels.formula.api import ols

#fit multiple linear regression model
model = ols('rating ~ points + assists + rebounds', data=df). fit ()

#view model summary
print(model.summary())

Ми можемо виконати Watson Durbin за допомогою функції durbin_watson() із бібліотеки statsmodels, щоб визначити, чи є залишки моделі регресії автокорельованими:

 from statsmodels.stats.stattools import durbin_watson

#perform Durbin-Watson test
durbin_watson(model.resid)

2,392

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

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

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

1. Для позитивної послідовної кореляції розгляньте можливість додавання до моделі лагів залежної та/або незалежної змінної.

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

3. Для сезонної кореляції розгляньте можливість додавання сезонних фіктивних елементів до моделі.

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

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