在 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))
我有一个样本回归如下。
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))