Робастный регрессионный вывод и сэндвич-оценки


10

Можете ли вы дать мне пример использования сэндвич-оценок для выполнения надежного регрессионного вывода?

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


Вы прошли через примеры в соответствующей виньетке ?
user603

(1) Ссылка работает для меня. (2) Это вопрос кодирования? Как получить 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
Чандлер

2
Например, этот ответ подразумевает, что с R что-то не так, потому что вы получаете результаты, отличные от Stata. Для людей, которые знают, как работают сэндвич-оценки, разница очевидна и ее легко исправить. Для людей, которые не знают, просто прочитайте виньетку (руководство), которая поставляется с пакетом
Repmat

10

Можно использовать альтернативную функцию суммирования для выполнения устойчивой регрессии.

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

Чтобы получить устойчивые стандартные ошибки, вы устанавливаете параметр '' здравый '' в вашей сводной функции в значение ИСТИНА.

Следующая запись блога предоставляет функцию и подробное описание функции: https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.