Regresión con Heterocedasticidad Corregido Errores Estándar
Pregunta
Me gustaría encontrar la aplicación R que más se parece salida de Stata para el ajuste de una función de regresión de mínimos cuadrados con Heterocedástico Corregido errores estándar. En concreto me gustaría que los errores estándar corregidos para estar en el "Resumen" y no tener que hacer cálculos adicionales para mi ronda inicial de la prueba de hipótesis. Busco a una solución que es tan "limpia" como lo Eviews y Stata proporcionan.
Hasta ahora, el uso de la "lmtest" paquete lo mejor que puedo llegar a es:
model <- lm(...)
coeftest(model, vcov = hccm)
Esto me da la salida que quiero, pero no parece ser el uso de "coeftest" para el fin indicado. También me gustaría tener que utilizar el resumen con los errores estándar incorrectas a leer el R ^ 2 y F de estadísticas, etc. Siento que debería existir una solución "una línea" a este problema dado lo dinámico R es.
Gracias
Solución
creo que usted está en el camino correcto con coeftest
en lmtest paquete. Echar un vistazo a la sándwich paquete que incluye esta funcionalidad y es diseñado para trabajar de la mano con el paquete lmtest ya se ha encontrado.
> # generate linear regression relationship
> # with Homoskedastic variances
> x <- sin(1:100)
> y <- 1 + x + rnorm(100)
> ## model fit and HC3 covariance
> fm <- lm(y ~ x)
> vcovHC(fm)
(Intercept) x
(Intercept) 0.010809366 0.001209603
x 0.001209603 0.018353076
> coeftest(fm, vcov. = vcovHC)
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.01973 0.10397 9.8081 3.159e-16 ***
x 0.93992 0.13547 6.9381 4.313e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Para obtener la prueba F, vistazo a waldtest()
función:
> waldtest(fm, vcov = vcovHC)
Wald test
Model 1: y ~ x
Model 2: y ~ 1
Res.Df Df F Pr(>F)
1 98
2 99 -1 48.137 4.313e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Siempre se puede cocinar una función simple de combinar estos dos para que si quería la de una sola línea ...
Hay un montón de ejemplos en la Econometric Computing con HC y HAC matriz de covarianza estimadores viñeta que viene con el paquete sándwich de vincular lmtest y sándwich para hacer lo que quiera.
Editar: A de una sola línea podría ser tan simple como:
mySummary <- function(model, VCOV) {
print(coeftest(model, vcov. = VCOV))
print(waldtest(model, vcov = VCOV))
}
¿Qué podemos usar como esto (en los ejemplos de arriba):
> mySummary(fm, vcovHC)
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.01973 0.10397 9.8081 3.159e-16 ***
x 0.93992 0.13547 6.9381 4.313e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Wald test
Model 1: y ~ x
Model 2: y ~ 1
Res.Df Df F Pr(>F)
1 98
2 99 -1 48.137 4.313e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Otros consejos
He encontrado una función de R que hace exactamente lo que busca. Se le da errores estándar robustos sin tener que hacer cálculos adicionales. Ejecutar summary()
en una lm.object y si se establece el parámetro robust=T
que le da una copia de Stata como heterocedasticidad errores estándar consistentes.
summary(lm.object, robust=T)
Se puede encontrar la función de https: // economictheoryblog .com / 2016/08/08 / robustos-sTANDARD-errores-in-r /
En la actualidad existe una solución de una línea usando lm_robust
del href="http://estimatr.declaredesign.org/" rel="nofollow noreferrer"> estimatr
paquete install.packages(estimatr) CRAN.
> library(estimatr)
> lmro <- lm_robust(mpg ~ hp, data = mtcars, se_type = "stata")
> summary(lmro)
Call:
lm_robust(formula = mpg ~ hp, data = mtcars, se_type = "stata")
Standard error type: HC1
Coefficients:
Estimate Std. Error Pr(>|t|) CI Lower CI Upper DF
(Intercept) 30.09886 2.07661 4.348e-15 25.85785 34.33987 30
hp -0.06823 0.01356 2.132e-05 -0.09592 -0.04053 30
Multiple R-squared: 0.6024 , Adjusted R-squared: 0.5892
F-statistic: 45.46 on 1 and 30 DF, p-value: 1.788e-07
También puede obtener una salida ordenada:
> tidy(lmro)
term estimate std.error p.value ci.lower
1 (Intercept) 30.09886054 2.0766149 4.347723e-15 25.85784704
2 hp -0.06822828 0.0135604 2.131785e-05 -0.09592231
ci.upper df outcome
1 34.33987404 30 mpg
2 -0.04053425 30 mpg
Los errores estándar "stata"
defecto en "HC1" errores estándar, que son los errores estándar por defecto rob
en Stata. También puede obtener "classical", "HC0", "HC1", "HC2", "HC3"
y varios errores estándar agrupados también (incluyendo aquellos que coincidan con Stata).