Міцний регресійний висновок та сендвіч-оцінки


10

Чи можете ви надати мені приклад використання сендвіч-оцінювачів для того, щоб провести надійні регресійні умовиводи?

Я бачу приклад в ?sandwich, але я не зовсім розумію, як ми можемо перейти від lm(a ~ b, data)( -cod) до оцінки та значення p, отриманого в результаті регресійної моделі, використовуючи матрицю дисперсії-коваріації, повернуту функцією sandwich.


чи були у вас приклади в пов’язаній віньєтці ?
user603

(1) Посилання працює для мене. (2) Це питання кодування r? Як отримати Huber-White SE після підгонки моделі. Або щось інше?
Чарлз

@charles 1) Дійсно це працює! Не знаю, що сталося раніше. Так, це питання кодування R. 2) Я не знаю, що таке стандартна помилка Хубер-Білого і не знаю, як їх зараз обчислити. Спасибі за вашу допомогу!
Remi.b

Ви отримуєте p-значення та стандартні помилки так само, як зазвичай, замінюючи сендвіч-оцінкою матриці дисперсії-коваріації на найменші квадрати.
Scortchi

@Scortchi Гаразд. І коли я отримаю ці оцінки (оцінки OLS або сендвіч), що я можу зробити з ними?
Remi.b

Відповіді:


9

Я думаю, є кілька підходів. Я не переглянув їх усіх і не впевнений, що найкраще:

  1. sandwichпакет:

    library(sandwich)    
    coeftest(model, vcov=sandwich)

Але це не дає мені тих самих відповідей, які я чомусь отримую від Stata. Я ніколи не намагався розібратися, чому я просто не використовую цей пакет.

  1. rmsПакет: Я вважаю , це трохи болю працювати, але , як правило , отримати хороші відповіді з деяким зусиллям. І це для мене найкорисніше.

    model = ols(a~b, x=TRUE)    
    robcov(model)
  2. Ви можете кодувати це з нуля (див. Цю публікацію в блозі ). Це виглядає як найбільш болісний варіант, але надзвичайно просто, і цей варіант часто працює найкраще.

Просте / швидке пояснення полягає в тому, що Huber-White або Robust SE отримані з даних, а не з моделі, і таким чином є надійними для багатьох припущень моделі. Але, як завжди, швидкий пошук Google викладе це у сумних деталях, якщо вам це цікаво.


Ви справді повинні побачити цю відповідь тут: stats.stackexchange.com/a/117066/12053
chandler

2
Це подобається, як ця відповідь неявно припускає, що з R щось не так, тому що ви отримуєте інші результати, ніж Stata. Для людей, які знають, як працюють сендвіч-оцінки, різницю очевидно і легко виправити. Для людей, які не знають, просто прочитайте віньєтку (путівник), що постачається з пакетом
Repmat

10

Можна використовувати альтернативну підсумкову функцію, щоб виконати надійну регресію.

lm.object <- lm(a~b+c)
summary(lm.object, robust=TRUE)

Для отримання надійних стандартних помилок ви встановлюєте параметр '' надійний '' у своїй підсумковій функції значення TRUE.

Наступний запис у блозі містить функцію та детальний опис функції: https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r

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