我正在估计一个具有一些因子/类别变量和一些数值变量的回归模型。是否可以在回归模型的摘要中显示每个因素/类别变量的参考类别?
理想情况下,这也将转化为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