Як виконати тест голдфельда-квандта в python
Тест Голдфельда-Квандта використовується для визначення наявності гетероскедастичності в регресійній моделі.
Гетероскедастичність відноситься до нерівномірного розподілу залишків на різних рівнях змінної відповіді в регресійній моделі.
Якщо присутня гетероскедастичність, це порушує одне з ключових припущень лінійної регресії про те, що залишки однаково розподілені на кожному рівні змінної відповіді.
Цей підручник надає покроковий приклад того, як виконати тест Голдфельда-Квандта в Python.
Крок 1: Створіть набір даних
Для цього прикладу давайте створимо наступний pandas DataFrame, який містить інформацію про вивчені години, складені підготовчі іспити та підсумкові результати іспитів, отримані 13 студентами в класі:
import pandas as pd #createDataFrame df = pd. DataFrame ({' hours ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6], ' exams ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2], ' score ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]}) #view DataFrame print (df) hours exam score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72 5 1 2 69 6 5 1 94 7 4 1 94 8 2 0 88 9 4 3 92 10 4 4 90 11 3 3 75 12 6 2 96
Крок 2. Підберіть модель лінійної регресії
Далі ми підіб’ємо модель множинної лінійної регресії, використовуючи години та іспити як змінні прогностики та оцінку як змінну відповіді:
import statsmodels. api as sm
#define predictor and response variables
y = df[' score ']
x = df[[' hours ', ' exams ']]
#add constant to predictor variables
x = sm. add_constant (x)
#fit linear regression model
model = sm. OLS (y,x). fit ()
#view model summary
print ( model.summary ())
OLS Regression Results
==================================================== ============================
Dept. Variable: R-squared score: 0.718
Model: OLS Adj. R-squared: 0.661
Method: Least Squares F-statistic: 12.70
Date: Mon, 31 Oct 2022 Prob (F-statistic): 0.00180
Time: 09:22:56 Log-Likelihood: -38.618
No. Observations: 13 AIC: 83.24
Df Residuals: 10 BIC: 84.93
Model: 2
Covariance Type: non-robust
==================================================== ============================
coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 71.4048 4.001 17.847 0.000 62.490 80.319
hours 5.1275 1.018 5.038 0.001 2.860 7.395
exams -1.2121 1.147 -1.057 0.315 -3.768 1.344
==================================================== ============================
Omnibus: 1,103 Durbin-Watson: 1,248
Prob(Omnibus): 0.576 Jarque-Bera (JB): 0.803
Skew: -0.289 Prob(JB): 0.669
Kurtosis: 1.928 Cond. No. 11.7
==================================================== ============================
Крок 3: Виконайте тест Гольдфельда-Квандта
Далі ми використаємо функцію statsmodels het_goldfeldquandt() для виконання тесту Голдфельда-Квандта.
Примітка . Тест Голдфельда-Квандта працює шляхом видалення ряду спостережень, розташованих у центрі набору даних, а потім тестування, щоб побачити, чи розподіл залишків відрізняється від двох результуючих наборів даних, які зв’язуються з обох боків центральних спостережень.
Зазвичай ми вирішуємо видалити близько 20% від загальної кількості спостережень. У цьому випадку ми можемо використати аргумент drop , щоб вказати, що ми хочемо видалити 20% спостережень:
#perform Goldfeld-Quandt test sm. stats . diagnosis . het_goldfeldquandt (y, x, drop= 0.2 ) (1.7574505407790355, 0.38270288684680076, 'increasing')
Ось як інтерпретувати результат:
- Статистика тесту 1,757 .
- Відповідне значення p становить 0,383 .
Тест Голдфельда-Квандта використовує такі нульові та альтернативні гіпотези:
- Null (H 0 ) : присутній гомоскедастичність.
- Альтернатива ( HA ): присутня гетероскедастичність.
Оскільки p-значення не менше 0,05, ми не можемо відхилити нульову гіпотезу.
У нас немає достатніх доказів, щоб стверджувати, що гетероскедастичність є проблемою в регресійній моделі.
Що робити далі
Якщо вам не вдалося відхилити нульову гіпотезу тесту Гольдфельда-Квандта, то гетероскедастичності немає, і ви можете продовжити інтерпретацію результату вихідної регресії.
Однак якщо ви відкидаєте нульову гіпотезу, це означає, що гетероскедастичність присутня в даних. У цьому випадку стандартні помилки, відображені в таблиці результатів регресії, можуть бути ненадійними.
Існує кілька поширених способів вирішення цієї проблеми, зокрема:
1. Перетворення змінної відповіді.
Ви можете спробувати виконати перетворення змінної відповіді, наприклад взявши логарифм, квадратний або кубічний корінь змінної відповіді. Як правило, це може призвести до зникнення гетероскедастичності.
2. Використовуйте зважену регресію.
Зважена регресія призначає вагу кожній точці даних на основі дисперсії її підігнаного значення. По суті, це дає низькі ваги для точок даних, які мають більшу дисперсію, зменшуючи їхні залишкові квадрати.
Коли використовуються відповідні ваги, зважена регресія може усунути проблему гетероскедастичності.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові операції в Python:
Як виконати регресію OLS у Python
Як створити залишковий графік у Python
Як виконати тест Уайта на Python
Як виконати тест Брейша-Пагана в Python