Как выполнить тест Бреуша-Пагана в 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 multiplier statistic', 6.003951995818433),
('p-value', 0.11141811013399583),
('f-value', 3.004944880309618),
('f p-value', 0.11663863538255281)]

Тест Бреуша-Пагана использует следующие нулевые и альтернативные гипотезы:

Нулевая гипотеза (H 0 ): присутствует гомоскедастичность.

Альтернативная гипотеза: (Ha): гомоскедастичность отсутствует (т.е. гетероскедастичность существует)

В этом примере статистика множителя Лагранжа для теста равна 6,004 , а соответствующее значение p равно 0,1114.Поскольку это p-значение не меньше 0,05, мы не можем отвергнуть нулевую гипотезу. У нас нет достаточных доказательств того, что в регрессионной модели присутствует гетероскедастичность.

Как исправить гетероскедастичность

В предыдущем примере мы видели, что в регрессионной модели отсутствует гетероскедастичность. Однако, когда гетероскедастичность действительно присутствует, есть три распространенных способа исправить ситуацию:

1. Преобразуйте зависимую переменную. Один из способов исправить гетероскедастичность — каким-то образом преобразовать зависимую переменную. Одним из распространенных преобразований является просто получение журнала зависимой переменной.

2. Переопределите зависимую переменную. Другой способ исправить гетероскедастичность — переопределить зависимую переменную. Один из распространенных способов сделать это — использовать скорость для зависимой переменной, а не необработанное значение.

3. Используйте взвешенную регрессию. Другой способ исправить гетероскедастичность — использовать взвешенную регрессию. Этот тип регрессии присваивает вес каждой точке данных на основе дисперсии ее подобранного значения. Когда используются правильные веса, это может устранить проблему гетероскедастичности.

Подробнее о каждом из этих трех способов читайте в этом посте .