hacer que R informe R cuadrado ajustado y prueba F en la salida con errores estándar robustos

Aug 18 2020

He estimado un modelo de regresión lineal usando lm(x~y1 + y1 + ... + yn)y para contrarrestar la heterocedasticidad actual hice que R estimara los errores estándar robustos con

coeftest(model, vcov = vcovHC(model, type = "HC0"))

Sé que el estadístico R cuadrado (robusto) y F del modelo "normal" siguen siendo válidos, pero ¿cómo hago para que R los informe en la salida? Quiero fusionar varios resultados de regresión de diferentes especificaciones junto con stargazery sería muy caótico si tuviera que ingresar el modelo no robusto solo para obtener estas estadísticas. Idealmente, quiero ingresar una salida de regresión stargazerque contenga estas estadísticas, importando así a su marco.

Gracias de antemano por todas las respuestas.

Respuestas

2 Petr Aug 18 2020 at 20:44

Así es como se hace. Debe usar el objeto modelo que es compatible con stargazer como plantilla y luego puede proporcionar una lista con los errores estándar que se utilizarán:

library(dplyr)
library(lmtest)
library(stargazer)


# Basic Model ---------------------------------------------------------------------------------

model1 <- lm(hp ~ factor(gear) + qsec + cyl + factor(am), data = mtcars)
summary(model1)


# Robust standard Errors ----------------------------------------------------------------------

model_robust <- coeftest(model1, vcov = vcovHC(model1, type = "HC0"))

# Get robust standard Errors (sqrt of diagonal element of variance-covariance matrix)
se = vcovHC(model1, type = "HC0") %>% diag() %>% sqrt()

stargazer(model1, model1, 
          se = list(NULL, se), type = 'text')

Con este enfoque, puede usar Stargazer incluso para objetos modelo que no son compatibles. Solo necesita coeficientes, errores estándar y valores p como vectores. Entonces puede 'insertar mecánicamente' incluso modelos no compatibles.

Una última nota. Tiene razón en que una vez presente la heterocedasticidad, aún se puede usar Rsquared. Sin embargo, la prueba F general y las pruebas t ya no son válidas.

1 Vincent Aug 18 2020 at 07:26

No tengo una solución con stargarzer, pero tengo un par de alternativas viables para tablas de regresión con errores estándar robustos:

Opción 1

Usa el modelsummarypaquete para hacer tus tablas.

tiene un statistic_overrideargumento que le permite proporcionar una función que calcula una matriz de varianza covarianza robusta (por ejemplo, sandwich::vcovHC.

library(modelsummary)
library(sandwich)

mod1 <- lm(drat ~ mpg, mtcars)
mod2 <- lm(drat ~ mpg + vs, mtcars)
mod3 <- lm(drat ~ mpg + vs + hp, mtcars)
models <- list(mod1, mod2, mod3)

modelsummary(models, statistic_override = vcovHC)

Nota 1: La captura de pantalla anterior es de una tabla HTML, pero el modelsummarypaquete también puede guardar tablas de Word, LaTeX o Markdown.

Nota 2: Soy el autor de este paquete, así que trate esto como una vista potencialmente sesgada.

opcion 2

Utilice la estimatr::lm_robustfunción, que incluye automáticamente errores estándar robustos. Creo que estimatrlo respalda stargazer, pero que lo respalda modelsummary.

library(estimatr)

mod1 <- lm_robust(drat ~ mpg, mtcars)
mod2 <- lm_robust(drat ~ mpg + vs, mtcars)
mod3 <- lm_robust(drat ~ mpg + vs + hp, mtcars)
models <- list(mod1, mod2, mod3)

modelsummary(models)