有没有办法在R中的回归输出中显示参考类别



我正在估计一个具有一些因子/类别变量和一些数值变量的回归模型。是否可以在回归模型的摘要中显示每个因素/类别变量的参考类别?

理想情况下,这也将转化为texreg或stargazer,以获得乳胶输出,但将其纳入回归摘要中已经是一个良好的开端。

有人有主意吗?我缺了什么?

参考级别是摘要中缺少的级别,因为其他级别的系数是与参考级别的对比,即截距实际上代表参考类别中的平均值。

iris <- transform(iris, Species_=factor(Species))  ## create factor
summary(lm(Sepal.Length ~ Petal.Length + Species_, iris))$coe
#                    Estimate Std. Error   t value      Pr(>|t|)
# (Intercept)         3.6835266 0.10609608 34.718780 1.968671e-72
# Petal.Length        0.9045646 0.06478559 13.962436 1.121002e-28
# Species_versicolor -1.6009717 0.19346616 -8.275203 7.371529e-14
# Species_virginica  -2.1176692 0.27346121 -7.743947 1.480296e-12

您可以删除拦截,以显示丢失的级别,但这没有多大意义。然后,您只需在没有参考的情况下获得每个级别的平均值,但您对参考级别和其他级别之间的对比感兴趣。

summary(lm(Sepal.Length ~ 0 + Petal.Length + Species_, iris))$coe
#                     Estimate Std. Error   t value     Pr(>|t|)
# Petal.Length       0.9045646 0.06478559 13.962436 1.121002e-28
# Species_setosa     3.6835266 0.10609608 34.718780 1.968671e-72
# Species_versicolor 2.0825548 0.28009598  7.435147 8.171219e-12
# Species_virginica  1.5658574 0.36285224  4.315413 2.921850e-05

如果你不确定,参考水平总是因子的第一个水平。

levels(iris$Species_)[1]
# [1] "setosa"

为了证明这一点,指定一个不同的参考级别,看看它是否是第一个。

iris$Species_ <- relevel(iris$Species_, ref='versicolor')
levels(iris$Species_)[1]
# [1] "versicolor"

在报告表下的说明中提到参考级别是很常见的,我建议你也这样做。

对于LaTeX输出或类似输出,可以很容易地在modelsummary包中添加一行。(例如显示您的参考类别(

library(modelsummary)
library(tibble)    
data(mtcars)
models <- list()
models[['OLS']] <- lm(mpg ~ factor(cyl), mtcars)
models[['Logit']] <- glm(am ~ factor(cyl), mtcars, family = binomial)
rows <- tribble(~term,          ~OLS,  ~Logit,
'factor(cyl)4', '-',   '-',
'Info',         '???', 'XYZ')
attr(rows, 'position') <- c(3, 9)

modelsummary(models, add_rows = rows)

请参阅此处了解详细信息:

https://vincentarelbundock.github.io/modelsummary/articles/modelsummary.html#add_rows

最新更新