сделать отчет R скорректированным R в квадрате и F-тест на выходе с устойчивыми стандартными ошибками
Я оценил модель линейной регрессии, используя lm(x~y1 + y1 + ... + yn)
и для противодействия существующей гетероскедастичности, я попросил R оценить устойчивые стандартные ошибки с помощью
coeftest(model, vcov = vcovHC(model, type = "HC0"))
Я знаю, что (надежный) R в квадрате и статистика F из «нормальной» модели все еще действительны, но как мне заставить R сообщить о них в выходных данных? Я хочу объединить несколько результатов регрессии из разных спецификаций вместе, stargazer
и это стало бы очень хаотичным, если бы мне пришлось ввести ненадежную модель, просто чтобы получить эту статистику. В идеале я хочу ввести результат регрессии stargazer
, содержащий эту статистику, таким образом, импортируя его в свою структуру.
Заранее спасибо за все ответы
Ответы
Вот как это сделать. Вам нужно использовать объект модели, который поддерживается 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-тесты больше НЕ действительны.
У меня нет решения 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)