Для начала что бы понять тест Бройша-Пагана, надо понять что такое остатки в регрессионой модели
Остатки регрессии - это разности между наблюдаемыми значениями и значениями, предсказанными изучаемой регрессионной моделью.
Чем лучше регрессионная модель согласуется с данными, тем меньше величина остатков.
остаток (e) вычисляется как:
e = (y - yhat)
где: y - наблюдаемое значение (фактическое значение) yhat - предсказанное значение
Тест проверяет модель на наличие гетероскедастичности
Гетероскедастичность это когда не постоянная дисперсия и получается неоднородные наблюдения
Тест Breusch-Pagan подходит для модели линейной регрессии к остаткам модели линейной регрессии (по умолчанию одни и те же объясняющие переменные берутся как в основной модели регрессии) и отклоняет, если слишком большая часть дисперсии объясняется дополнительными объясняющими переменными
bptest(formula, varformula = NULL, studentize = TRUE, data = list())
Параметры: - formula ~ символическое описание модели, подлежащей тестированию (или объект «lm»)
varformula ~ формула, описывающая только потенциальные объясняющие переменные для дисперсии (не требуется зависимая переменная). По умолчанию одни и те же объясняющие переменные берутся как в основной модели регрессии
studentize ~ логический параметр. Если установлено значение TRUE, то будет использоваться версия тестовой статистики Koenker’s sudentized
data ~ Датасет который содержит переменные из модели
Пример использованя:
library(ggplot2)
library(lmtest)
data("diamonds")
head(diamonds)
## # A tibble: 6 x 10
## carat cut color clarity depth table price x y z
## <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.230 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
## 2 0.210 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
## 3 0.230 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
## 4 0.290 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63
## 5 0.310 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
## 6 0.240 Very Good J VVS2 62.8 57.0 336 3.94 3.96 2.48
Загрузили данные давайте визуализируем две переменные
plot(diamonds$carat, diamonds$price)
# на нижнем графику мы их логарифмировали
plot(log(diamonds$carat), log(diamonds$price))
И постройм линейную регрессию, затем визуализируем
model1 <- lm(carat~price, diamonds)
bptest(model1)
##
## studentized Breusch-Pagan test
##
## data: model1
## BP = 5905.9, df = 1, p-value < 2.2e-16
Мы видим что альфа значение больше чем p-value, это означает что остатки гетероскедастичности
Логарифмируем их и посмотрим на BP значение
model2 <- lm(log(carat)~log(price), diamonds)
bptest(model2)
##
## studentized Breusch-Pagan test
##
## data: model2
## BP = 367.36, df = 1, p-value < 2.2e-16
Мы видим что преобразование данных с помощью логарифмы сглаживает модель
Вдобавок расмотрим тестЭто тест тоже показывает наличие гетероскедастичности
gqtest(model1, order.by = ~carat, data = diamonds, fraction = 0.2)
##
## Goldfeld-Quandt test
##
## data: model1
## GQ = 19.497, df1 = 21574, df2 = 21574, p-value < 2.2e-16
## alternative hypothesis: variance increases from segment 1 to 2
Посмотрим на показатель GQ
gqtest(model2, order.by = ~carat, data = diamonds, fraction = 0.2)
##
## Goldfeld-Quandt test
##
## data: model2
## GQ = 1.4119, df1 = 21574, df2 = 21574, p-value < 2.2e-16
## alternative hypothesis: variance increases from segment 1 to 2
Видим что тут показатель GQ упал, это значит что мы немного поборолись с гетероскедастичности