В практическом плане ncvTest
использует левую часть уравнения и bptest
использует правую часть по умолчанию.
Это означает, что в случае Y ~ X
обоих тестов будут получены одинаковые результаты (относительно studentize = F
опции bptest
). Но в многомерном анализе, например Y ~ X1 + X2
, результаты будут отличаться. (Как указал @ Helix123)
Из справочного файла ncvTest : var.formula
: «Односторонняя формула для дисперсии ошибок; если она не указана, дисперсия ошибок зависит от подгоночных значений ». Это означает, что по умолчанию будут использоваться подогнанные значения, но это также позволяет использовать линейную комбинацию независимых переменных (X1 + X2).
Из справочного файла bptest : varformula
: «По умолчанию используются те же пояснительные переменные , что и в основной модели регрессии».
Продолжая тот же пример @Francis (данные stat500
, из faraway
пакета):
> mdl_t = lm(final ~ midterm + hw, data = stat500)
Тест BP, используя установленные значения:
> ncvTest(mdl_t) # Default
Non-constant Variance Score Test
Variance formula: ~ fitted.values
Chisquare = 0.6509135 Df = 1 p = 0.4197863
> bptest(mdl_t, varformula = ~ fitted.values(mdl_t), studentize = F)
Breusch-Pagan test
data: mdl_t
BP = 0.65091, df = 1, p-value = 0.4198
Тест АД с использованием линейной комбинации предикторов:
> ncvTest(mdl_t, var.formula = ~ midterm + hw)
Non-constant Variance Score Test
Variance formula: ~ midterm + hw
Chisquare = 0.7689743 Df = 2 p = 0.6807997
> bptest(mdl_t, studentize = F) # Default
Breusch-Pagan test
data: mdl_t
BP = 0.76897, df = 2, p-value = 0.6808
«Опция линейной комбинации» позволяет исследовать гетероскедастичность, связанную с линейной зависимостью конкретной независимой переменной. Например, просто hw
переменная:
> ncvTest(mdl_t, var.formula = ~ hw)
Non-constant Variance Score Test
Variance formula: ~ hw
Chisquare = 0.04445789 Df = 1 p = 0.833004
> bptest(mdl_t, varformula = ~ stat500$hw, studentize = F)
Breusch-Pagan test
data: mdl_t
BP = 0.044458, df = 1, p-value = 0.833
И наконец, как подытожил @Francis: «Короче говоря, тест BP с проверкой на прочность является более надежным, чем исходный», я обычно bptest
использую studentize = TRUE
(по умолчанию) и в varformula = ~ fitted.values(my.lm)
качестве опций первоначальный подход к гомоскедастичности.
ncvTest
иbptest
используйте разные переменные для объяснения остатков, см. Аргументыvar.formula
иvarformula
, соответственно. Результаты будут отличаться после добавления другого регрессора в ваш пример.