Яка різниця між цими двома тестами на Бреуш-Язичники?


9

Використовуючи R на деяких даних і намагаючись зрозуміти, чи є мої дані гетероскедастичними, я знайшов дві реалізації тесту Брейша-Язичника , bptest (пакет lmtest) і ncvTest (пакетний автомобіль). Однак вони дають різні результати. Яка різниця між ними? Коли слід вибрати те чи інше?

> model <- lm(y ~ x)
> bp <- bptest(model)
> bp
studentized Breusch-Pagan test

data:  model 
BP = 3.3596, df = 1, p-value = 0.06681

> ncvTest(model)
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 3.858704    Df = 1     p = 0.04948855 

Цей приклад показує, що згідно з тестами, мої дані в одному випадку є гетероседастичними, а в іншому - гомоскедастичними. Я знайшов це питання тут, щоб bptest міг бути студийованим, а ncvTest не може бути, однак, що це означає тоді?

Відповіді:


9

Ваша здогадка правильна, ncvTestвиконує оригінальну версію тесту Брюш-Язичника. Це насправді можна перевірити, порівнюючи його bptest(model, studentize = FALSE). (Як зазначав @ Helix123, дві функції відрізняються і в інших аспектах, таких як аргументи за замовчуванням. Слід перевірити посібники з пакета lmtestта carдля отримання більш детальної інформації.)

Студентський тест Бреуш-Язичника запропонував Р. Коенкер у своїй статті "Записка про вивчення тесту на гетероседастичність" . Найбільш очевидною відмінністю двох є те, що вони використовують різні статистичні дані. А саме, нехайξ бути вивченою статистикою тестів та ξ^бути оригінальним, ім'я

ξ^=λξ,λ=Var(ε2)2Var(ε)2.

Ось фрагмент коду, який демонструє те, що я щойно написав (дані, взяті з farawayпакета):

> mdl = lm(final ~ midterm, data = stat500)
> bptest(mdl)

    studentized Breusch-Pagan test

data:  mdl
BP = 0.86813, df = 1, p-value = 0.3515

> bptest(mdl, studentize = FALSE)

    Breusch-Pagan test

data:  mdl
BP = 0.67017, df = 1, p-value = 0.413

> ncvTest(mdl)
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 0.6701721    Df = 1     p = 0.4129916 
> 
> n = nrow(stat500)
> e = residuals(mdl)
> bpmdl = lm(e^2 ~ midterm, data = stat500)
> lambda = (n - 1) / n * var(e^2) / (2 * ((n - 1) / n * var(e))^2)
> Studentized_bp = n * summary(bpmdl)$r.squared
> Original_bp = Studentized_bp * lambda
> 
> Studentized_bp
[1] 0.8681335
> Original_bp
[1] 0.6701721

Щодо того, чому хочеться вивчити оригінальний тест на ВР, пряма цитата зі статті Р. Коенкера може бути корисною:

... З цього аналізу випливають два висновки:

  1. Асимптотична сила тесту Брейша та Язичника надзвичайно чутлива до куртозу розподілу , іε
  2. асимптотичний розмір тесту правильний лише в особливому випадку гауссова куртозу.

Перший висновок викладений у Коенкері та Бассетті (1981), де пропонуються альтернативні, надійні тести на гетероцесдастичність. Останній висновок передбачає, що рівні значущості, запропоновані Бреушем та Паганом, будуть правильними лише в умовах Гаусса на . Оскільки такі умови, як правило, передбачаються на сліпій вірі і, як відомо, важко перевірити, пропонується модифікація тесту Брейша і Язичника, яка правильно "вивчить" статистику тесту і призводить до асимптотично правильних рівнів значущості для досить великого класу розподілів для .εε

Коротше кажучи, ступінчастий тест на ВР є більш надійним, ніж оригінальний.


2
Однак є й інша відмінність: ncvTestі bptestвикористовуйте різні змінні для пояснення залишків, перегляду аргументів var.formulaі varformula, відповідно. Результати будуть відрізнятися, коли ви додасте ще один регресор до свого прикладу.
Helix123

@ Helix123: дякую, я думаю, я пропустив це.
Франциск

2

На практиці 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)

Тест на ВР з використанням пристосованих значень:

> 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, "Коротше кажучи, випробовуваний тест на ВР є більш надійним, ніж оригінальний", я, як правило, іду bptestз studentize = TRUE(за замовчуванням) і varformula = ~ fitted.values(my.lm)як варіант, для початкового підходу для гомосекдастичності.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.