在 R 中绘制具有置信区间的系数

Plot coefficients with confidence intervals in R

我有一个样本回归如下。
yit = λi + δt + α1TR + ∑ t ∈ {2,T} βtTR*δt

也就是说,我有时变系数,βt。有了回归结果,我想用置信区间绘制系数(X 轴是时间,Y 轴是系数值)。

这是示例数据

y = rnorm(1000,1)
weekid = as.factor(sample.int(52,size = 1000,replace = T))
id = as.factor(sample.int(100,size = 1000,replace = T))
tr = as.factor(sample(c(0,1),size = 1000, prob = c(1,2),replace = T))
sample_lm = lm(y ~ weekid + id + tr*weekid)
summary(sample_lm)

如何用置信区间绘制 tr*weekid 的系数?

我们可以使用 GGally 中的 ggcoef。一个问题是您只想可视化系数的一个子集。在那种情况下我们可以做

ggcoef(tail(broom::tidy(sample_lm, conf.int = TRUE), 51), sort = "ascending")

更新:因为,至少在某种程度上,我们可以像处理ggplot2输出一样处理这个图,我们可以用[=15翻转轴=].这不是最好的主意,因为变量名很长,所以为了演示,我将它与 angle = 30 组合在一起。默认情况下,系数按名称排序,这又不是人们想要的。为了解决这个问题,我们首先需要将系数名称定义为因子变量并指定它们的水平。也就是说,我们有

tbl <- tail(broom::tidy(sample_lm, conf.int = TRUE), 51)
tbl$term <- factor(tbl$term, levels = tbl$term)
ggcoef(tbl) + coord_flip() + theme(axis.text.x = element_text(angle = 30))