сделать отчет 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)