He estado tratando de replicar los resultados de la opción Stata robust
en R. He utilizado el rlm
comando del paquete MASS y también el comando lmrob
del paquete "robustbase". En ambos casos, los resultados son bastante diferentes de la opción "robusta" en Stata. ¿Alguien puede sugerir algo en este contexto?
Aquí están los resultados que obtuve cuando ejecuté la opción robusta en Stata:
. reg yb7 buildsqb7 no_bed no_bath rain_harv swim_pl pr_terrace, robust
Linear regression Number of obs = 4451
F( 6, 4444) = 101.12
Prob > F = 0.0000
R-squared = 0.3682
Root MSE = .5721
------------------------------------------------------------------------------
| Robust
yb7 | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
buildsqb7 | .0046285 .0026486 1.75 0.081 -.0005639 .009821
no_bed | .3633841 .0684804 5.31 0.000 .2291284 .4976398
no_bath | .0832654 .0706737 1.18 0.239 -.0552904 .2218211
rain_harv | .3337906 .0395113 8.45 0.000 .2563289 .4112524
swim_pl | .1627587 .0601765 2.70 0.007 .0447829 .2807346
pr_terrace | .0032754 .0178881 0.18 0.855 -.0317941 .0383449
_cons | 13.68136 .0827174 165.40 0.000 13.51919 13.84353
Y esto es lo que obtuve en R con la opción lmrob:
> modelb7<-lmrob(yb7~Buildsqb7+No_Bed+Rain_Harv+Swim_Pl+Gym+Pr_Terrace, data<-bang7)
> summary(modelb7)
Call:
lmrob(formula = yb7 ~ Buildsqb7 + No_Bed + Rain_Harv + Swim_Pl + Gym + Pr_Terrace,
data = data <- bang7)
\--> method = "MM"
Residuals:
Min 1Q Median 3Q Max
-51.03802 -0.12240 0.02088 0.18199 8.96699
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 12.648261 0.055078 229.641 <2e-16 ***
Buildsqb7 0.060857 0.002050 29.693 <2e-16 ***
No_Bed 0.005629 0.019797 0.284 0.7762
Rain_Harv 0.230816 0.018290 12.620 <2e-16 ***
Swim_Pl 0.065199 0.028121 2.319 0.0205 *
Gym 0.023024 0.014655 1.571 0.1162
Pr_Terrace 0.015045 0.013951 1.078 0.2809
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Robust residual standard error: 0.1678
Multiple R-squared: 0.8062, Adjusted R-squared: 0.8059
r
stata
robust
robust-standard-error
usuario56579
fuente
fuente
lmrob
no es lo mismo quereg y x, robust
. Google "errores estándar consistentes de heteroscedasticidad R". Obtendrá páginas que le muestran cómo usar las bibliotecaslmtest
ysandwich
.Respuestas:
Charles está casi allí en su respuesta, pero la
robust
opción delregress
comando (y otros comandos de estimación de regresión) en Stata hace posible el uso de múltiples tipos de estimadores de matriz de varianza-covarianza robustos de autocorrelación y autocorrelación, al igual que lacoeftest
función en ellmtest
paquete, que en turn depende de las respectivas matrices de varianza-covarianza producidas por lavcovHC
función en elsandwich
paquete.Sin embargo, las matrices de varianza-covarianza predeterminadas utilizadas por los dos son diferentes:
1. La matriz de varianza-covarianza predeterminada que devuelve
vcocHC
es la llamadaHC3
por las razones descritas en la página del manual paravcovHC
.2. La
sandwich
opción utilizada por Charlescoeftest
utiliza laHC0
matriz robusta de varianza-covarianza.3. Para reproducir el comportamiento predeterminado de Stata de usar la
robust
opción en una llamadaregress
, debe solicitar elvcovHC
uso de laHC1
matriz robusta de varianza-covarianza.Lea más sobre esto aquí .
El siguiente ejemplo que demuestra todos los puntos mencionados anteriormente se basa en el ejemplo aquí .
La última línea de código anterior reproduce los resultados de Stata:
fuente
Encontré una descripción en el siguiente sitio web que replica la opción "robusta" de Stata en R.
https://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r
Siguiendo las instrucciones, todo lo que necesita hacer es cargar una función en su sesión R y luego establecer el parámetro '' robusto '' en su función de resumen como VERDADERO.
fuente
A partir de abril de 2018, creo que desea el
estimatr
paquete , que proporciona una caída casi total del reemplazolm
. Varios ejemplos extraídos casi de la documentación:El
car
paquete de continuación, hace que sea fácil de realizar pruebas de hipótesis ómnibus para estos modelos:fuente
Yo editaría la pregunta. Estás confundiendo una regresión robusta con el comando robusto de Stata. Parece que no hay ningún beneficio en introducir esta confusión.
Creo que hay algunos enfoques. No los he mirado a todos y no estoy seguro de cuál es el mejor:
El paquete de sándwich:
Pero esto no me da las mismas respuestas que recibo de Stata por alguna razón. Nunca he tratado de averiguar por qué, pero arriba en los comentarios hay una respuesta sugerida: simplemente no uso este paquete.
El paquete rms:
Me resulta un poco difícil trabajar con esto, pero generalmente obtengo buenas respuestas con algo de esfuerzo. Y es lo más útil para mí.
Puedes codificarlo desde cero
Consulte esta publicación de blog ( http://thetarzan.wordpress.com/2011/05/28/heteroskedasticity-robust-and-clustered-standard-errors-in-r/ ). Parece la opción más dolorosa, pero notablemente fácil y esta opción a menudo funciona mejor.
fuente
robust
comando. (Existe un comando de programador_robust
, no directamente relevante aquí.) En lugar de obtener errores estándar robustos (Huber-Eicker-White-sandwich), el enfoque moderno en Stata es especificarvce(robust)
como una opción. El enfoque anterior para especificar unarobust
opción aún funciona. En términos más generales, la confusión causada por la diferencia entre la regresión robusta (etc.) y los SE "robustos" es lamentable.