сделать отчет R скорректированным R в квадрате и F-тест на выходе с надежными стандартными ошибками

Я оценил модель линейной регрессии, используя lm(x~y1 + y1 + ... + yn), и, чтобы противостоять существующей гетероскедастичности, я попросил R оценить устойчивые стандартные ошибки с помощью

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

Я знаю, что (надежные) R в квадрате и статистика F из нормальной модели все еще действительны, но как мне получить R, чтобы сообщить о них в выходных данных? Я хочу объединить несколько выходных данных регрессии из разных спецификаций вместе с stargazer, и это стало бы очень хаотичным, если бы мне пришлось ввести ненадежную модель, просто чтобы получить эту статистику. В идеале я хочу ввести результат регрессии в stargazer, содержащий эту статистику, таким образом импортируя его в их структуру.

Заранее спасибо за все ответы


person philipp.kn_98    schedule 17.08.2020    source источник
comment
Какие пакеты вы используете? Это lmtest::coeftest?   -  person r2evans    schedule 17.08.2020
comment
@ r2evans точно   -  person philipp.kn_98    schedule 17.08.2020


Ответы (2)


Вот как это сделать. Вам нужно использовать объект модели, который поддерживается 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-тесты больше НЕ действительны.

person Petr    schedule 18.08.2020

У меня нет решения с 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)
person Vincent    schedule 18.08.2020