Как выполнить тест бреуша-пэгана в python
В регрессионном анализе гетероскедастичность означает неравномерную дисперсию остатков. Точнее, это тот случай, когда происходит систематическое изменение распределения остатков по диапазону измеряемых величин.
Гетероскедастичность является проблемой, поскольку обычная регрессия наименьших квадратов (OLS) предполагает, что остатки происходят из популяции, которая имеет гомоскедастичность , что означает постоянную дисперсию.
Когда в регрессионном анализе присутствует гетероскедастичность, в результаты анализа становится трудно поверить.
Один из способов определить, присутствует ли гетероскедастичность в регрессионном анализе , — использовать тест Бреуша-Пэгана .
В этом руководстве объясняется, как выполнить тест Бреуша-Пэгана в 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
Мы подберем модель множественной линейной регрессии, используя баллы в качестве переменной ответа, а очки, передачи и подборы в качестве объясняющих переменных. Далее мы проведем тест Бреуша-Пэгана, чтобы определить, присутствует ли гетероскедастичность в регрессии.
Шаг 1. Подберите модель множественной линейной регрессии.
Сначала мы подойдем к модели множественной линейной регрессии:
import statsmodels.formula.api as smf #fit regression model fit = smf.ols('rating ~ points+assists+rebounds', data=df). fit () #view model summary print (fit.summary())
Шаг 2: Проведите тест Бреуша-Пэгана.
Далее мы проведем тест Бреуша-Пэгана, чтобы определить, присутствует ли гетероскедастичность.
from statsmodels.compat import lzip import statsmodels.stats.api as sms #perform Bresuch-Pagan test names = ['Lagrange multiplier statistic', 'p-value', 'f-value', 'f p-value'] test = sms.het_breuschpagan(fit.resid, fit.model.exog) lzip(names, test) [('Lagrange multiply statistic', 6.003951995818433), ('p-value', 0.11141811013399583), ('f-value', 3.004944880309618), ('f p-value', 0.11663863538255281)]
Тест Бреуша-Пэгана использует следующие нулевые и альтернативные гипотезы:
Нулевая гипотеза (H 0 ): присутствует гомоскедастичность.
Альтернативная гипотеза: (Ха): гомоскедастичность отсутствует (т.е. гетероскедастичность существует).
В этом примере статистика множителя Лагранжа для теста равна 6,004 , а соответствующее значение p — 0,1114 . Поскольку это значение p не меньше 0,05, мы не можем отвергнуть нулевую гипотезу. У нас нет достаточных доказательств, чтобы утверждать, что гетероскедастичность присутствует в регрессионной модели.
Как исправить гетероскедастичность
В предыдущем примере мы видели, что гетероскедастичность не присутствует в регрессионной модели.
Однако, когда гетероскедастичность действительно присутствует, есть три распространенных способа исправить ситуацию:
1. Преобразуйте зависимую переменную. Один из способов исправить гетероскедастичность — каким-либо образом преобразовать зависимую переменную. Обычное преобразование заключается в простом получении журнала зависимой переменной.
2. Переопределите зависимую переменную. Другой способ исправить гетероскедастичность — переопределить зависимую переменную. Распространенный способ сделать это — использовать скорость для зависимой переменной, а не исходного значения.
3. Используйте взвешенную регрессию. Другой способ исправить гетероскедастичность — использовать взвешенную регрессию. Этот тип регрессии присваивает вес каждой точке данных на основе дисперсии ее подобранного значения. Использование соответствующих весов может устранить проблему гетероскедастичности.
Подробнее о каждом из этих трёх способов читайте в этой статье .