Як виконати тест дарбіна-ватсона в 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. Для сезонної кореляції розгляньте можливість додавання сезонних фіктивних елементів до моделі.