강력한 표준 오차를 사용하여 R 보고서 조정 R 제곱 및 출력에서 ​​F- 검정

Aug 18 2020

나는 lm(x~y1 + y1 + ... + yn)현재 이분산성을 사용하여 선형 회귀 모델을 추정했으며 R은 강력한 표준 오류를 다음과 같이 추정했습니다.

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

"정상"모델의 (강력한) R 제곱 및 F 통계가 여전히 유효하다는 것을 알고 있지만 R이 출력에보고하도록하려면 어떻게해야합니까? 다른 사양의 여러 회귀 출력을 함께 융합하고 싶습니다 stargazer. 이러한 통계를 얻기 위해 견고하지 않은 모델을 입력해야한다면 매우 혼란 스러울 것입니다. 이상적으로 stargazer는 이러한 통계를 포함 하는 회귀 출력을 입력하여 프레임 워크로 가져오고 싶습니다 .

모든 답변에 미리 감사드립니다.

답변

2 Petr Aug 18 2020 at 20:44

이것은 그것에 대해가는 방법입니다. stargazer에서 지원하는 모델 객체를 템플릿으로 사용해야하며 사용할 표준 오류 목록을 제공 할 수 있습니다.

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')

이 접근 방식을 사용하면 지원되지 않는 모델 개체에도 Stargazer를 사용할 수 있습니다. 계수, 표준 오차 및 p- 값만 벡터로 필요합니다. 그러면 지원되지 않는 모델도 '기계적으로 삽입'할 수 있습니다.

마지막 메모입니다. 이분산성이 존재하면 Rsquared를 계속 사용할 수 있다는 것이 맞습니다. 그러나 전체 F- 검정과 t- 검정은 더 이상 유효하지 않습니다.

1 Vincent Aug 18 2020 at 07:26

에 대한 솔루션은 stargarzer없지만 강력한 표준 오류가있는 회귀 테이블에 대한 몇 가지 실행 가능한 대안이 있습니다.

옵션 1

사용 modelsummary테이블을 만들기 위해 패키지를.

statistic_override강력한 분산 공분산 행렬을 계산하는 함수를 제공 할 수 있는 인수가 있습니다 (예 : 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)

참고 1 : 위의 스크린 샷은 HTML 테이블에서 가져온 것이지만 modelsummary패키지는 Word, LaTeX 또는 마크 다운 테이블도 저장할 수 있습니다.

참고 2 : 나는이 패키지의 작성자이므로 잠재적으로 편향된보기로 취급하십시오.

옵션 2

estimatr::lm_robust강력한 표준 오류를 자동으로 포함 하는 기능을 사용하십시오 . 에서 estimatr지원 한다고 생각 stargazer하지만에서 지원한다는 것을 알고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)