Robusta inferencia de regresión y estimadores Sandwich

10

¿Me puede dar un ejemplo del uso de estimadores sandwich para realizar una inferencia de regresión robusta?

Puedo ver el ejemplo en ?sandwich, pero no entiendo cómo podemos pasar de lm(a ~ b, data)( codificado con ) a una estimación y un valor p resultante de un modelo de regresión usando la matriz de varianza-covarianza devuelta por la función sandwich.

Remi.b
fuente
¿Has visto los ejemplos en la viñeta asociada ?
usuario603
(1) El enlace funciona para mí. (2) ¿Es esta una pregunta de codificación r? Cómo obtener el Huber-White SE después de ajustar un modelo. ¿O algo mas?
Charles
@charles 1) ¡De hecho funciona! No sé lo que pasó antes. Sí, es una pregunta de codificación R. 2) No sé cuáles son los errores estándar de Huber-White y no sé cómo calcularlos en este momento. ¡Gracias por tu ayuda!
Remi.b
Obtiene los valores p y los errores estándar de la misma manera que siempre, sustituyendo la estimación sandwich de la matriz de varianza-covarianza por la de mínimos cuadrados.
Scortchi - Restablece a Monica
@Scortchi Ok. Y una vez que tengo estas estimaciones (OLS o estimaciones de sandwich), ¿qué puedo hacer con ellas?
Remi.b

Respuestas:

9

Creo que hay algunos enfoques. No los he mirado a todos y no estoy seguro de cuál es el mejor:

  1. El sandwichpaquete:

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

Pero esto no me da las mismas respuestas que recibo de Stata por alguna razón. Nunca he tratado de averiguar por qué, simplemente no uso este paquete.

  1. El rmspaquete: me resulta un poco difícil trabajar con él, pero generalmente obtengo buenas respuestas con un poco de esfuerzo. Y es lo más útil para mí.

    model = ols(a~b, x=TRUE)    
    robcov(model)
    
  2. Puede codificarlo desde cero (consulte esta publicación de blog ). Parece la opción más dolorosa, pero notablemente fácil y esta opción a menudo funciona mejor.

Una explicación simple / rápida es que Huber-White o Robust SE se derivan de los datos en lugar del modelo y, por lo tanto, son robustos para muchos supuestos del modelo. Pero como siempre, una búsqueda rápida en Google lo explicará con un detalle insoportable si está interesado.

Charles
fuente
Realmente debería ver esta respuesta aquí: stats.stackexchange.com/a/117066/12053
chandler
2
Me gusta cómo esto responde implícitamente supone que hay algo mal con R, porque obtienes resultados diferentes a los de Stata. Para las personas que saben cómo funcionan los estimadores sándwich, la diferencia es obvia y fácil de remediar. Para las personas que no saben, solo lea la viñeta (guía) que se envía con el paquete
Repmat
10

Se puede usar una función de resumen alternativa para realizar una regresión robusta.

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

Para obtener errores estándar robustos, configure el parámetro '' robusto '' en su función de resumen como VERDADERO.

La siguiente entrada del blog proporciona la función y una descripción detallada de la función: https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r

Daniel Kah
fuente