fazer R reportar R quadrado ajustado e teste F na saída com erros padrão robustos
Estimei um modelo de regressão linear usando lm(x~y1 + y1 + ... + yn)
e para contrariar a heterocedasticidade presente, fiz R estimar os erros padrão robustos com
coeftest(model, vcov = vcovHC(model, type = "HC0"))
Eu sei que (robusto) R ao quadrado e a estatística F do modelo "normal" ainda são válidos, mas como faço para que R os relate na saída? Eu quero fundir várias saídas de regressão de especificações diferentes junto com stargazer
e ficaria muito caótico se eu tivesse que inserir o modelo não robusto junto apenas para obter essas estatísticas. Idealmente, quero inserir uma saída de regressão em stargazer
que contenha essas estatísticas, importando-as para seu framework.
Agradecemos antecipadamente por todas as respostas
Respostas
É assim que se deve proceder. Você precisa usar o objeto modelo compatível com o stargazer como modelo e, em seguida, fornecer uma lista com os erros padrão a serem usados:
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')
Usando esta abordagem, você pode usar o Stargazer mesmo para objetos de modelo que não são suportados. Você só precisa de coeficientes, erros padrão e valores-p como vetores. Então você pode 'inserir mecanicamente' até mesmo modelos sem suporte.
Uma última nota. Você está correto ao afirmar que, uma vez que a heteroscedasticidade está presente, o Rsquared ainda pode ser usado. No entanto, o teste F geral, bem como os testes t, NÃO são mais válidos.
Não tenho uma solução com stargarzer
, mas tenho algumas alternativas viáveis para tabelas de regressão com erros padrão robustos:
Opção 1
Use o modelsummary
pacote para fazer suas tabelas.
tem um statistic_override
argumento que permite fornecer uma função que calcula uma matriz de covariância de variância robusta (por exemplo 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: a imagem acima é de uma tabela HTML, mas o modelsummary
pacote também pode salvar tabelas Word, LaTeX ou markdown.
Nota 2: eu sou o autor deste pacote, portanto, trate isso como uma visão potencialmente tendenciosa.
opção 2
Use a estimatr::lm_robust
função, que inclui automaticamente erros padrão robustos. Acredito que estimatr
seja apoiado por stargazer
, mas sei que é apoiado por 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)