【问题标题】:Plot coefficients with confidence intervals in R在 R 中绘制具有置信区间的系数
【发布时间】:2019-06-28 16:35:00
【问题描述】:

我有一个样本回归如下。
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 的系数?

【问题讨论】:

  • 那么你到底想要这个情节是什么样子?如果您在示例中使用随机数,最好还包含set.seed(),以便我们可以获取与您相同的值来复制数据。

标签: r ggplot2 lm


【解决方案1】:

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

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

更新:因为,至少在某种程度上,我们可以像处理ggplot2 输出一样处理这个图,所以我们可以用coord_flip 翻转轴。这不是最好的主意,因为变量名很长,所以为了演示,我将它与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))

【讨论】:

  • 非常感谢!有没有办法切换X轴和Y轴?并且,如果我想按周排序(从第 2 周到第 51 周)?提前谢谢!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 2012-12-13
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多