在 ggplot2 中绘制混合效果输出的随机部分

Plot the random parts of the mixed effect output in ggplot2

我有 运行 lmer 的模型

library(lmer)
mymodel<- glmer(wrimm ~ 1+itr+(1+itr|GE_state), data=dt_n, family = binomial(link="logit"),control=glmercontrol(optimizer="bobyqa"),nAGQ=0)

并使用点图可视化随机效应(包括截距和斜率)

re<-ranef(mymodel, which="GE_state", conVar=TRUE)
lattice::dotplot(re, scales = list(x =list(relation = 'free')))

并获得这个数字

但是,点阵图对于美学的作用有限。如果有人能告诉我如何通过 ggplot2 制作相同的图(“森林图”,具有随机效应系数及其置信区间),我将不胜感激。

感谢您帮助初学者。

我认为我们需要更多关于 data.frame 的信息,该 data.frame 使用 ranef 的随机效应估计及其布局,然后它应该是可行的

  1. 在 ggplot2 中使用 geom_point() 构建点图,使用 geom_errorbars() 或 geom_errorbarsh()
  2. 构建误差线
  3. 通过一个变量对其进行分面,为该变量的每个值获取一个面板

此页面中的示例展示了如何在 ggplot 2 中绘制作为 lattice::dotplot 的输出: https://rdrr.io/cran/lme4/man/ranef.html

fm1 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)

ranef(fm1)
str(rr1 <- ranef(fm1))

## as.data.frame() provides RE's and conditional standard deviations:
str(dd <- as.data.frame(rr1))
if (require(ggplot2)) {
    ggplot(dd, aes(y=grp,x=condval)) +
        geom_point() + facet_wrap(~term,scales="free_x") +
        geom_errorbarh(aes(xmin=condval -2*condsd,
                           xmax=condval +2*condsd), height=0)