r - 在 R 中绘制混合模型的回归系数

标签 r ggplot2 lme4 sjplot

我很难尝试使用 sj.plot 包从四个非嵌套线性随机效应模型生成具有四个系数图的网格。 我没有与这个包结婚,所以请随意建议其他路线(ggplot2 解决方案比 coefplot2::coefplot2 更好)。

所需的输出:四个系数图彼此相邻的网格。

复制模型:

data("sleepstudy")
sleepstudy$var2 <- rnorm(n=nrow(sleepstudy), mean=0, sd=1)
sleepstudy$var3 <- rnorm(n=nrow(sleepstudy), mean=10, sd=5)
M1 <- lmer(Reaction ~ Days + (1|Subject), data=sleepstudy, REML = FALSE)
M2 <- lmer(Reaction ~ Days + var2 + (1|Subject), data=sleepstudy, REML = FALSE)
M3 <- lmer(Reaction ~ Days + var3 + (1|Subject), data=sleepstudy, REML = FALSE)
M4 <- lmer(Reaction ~ Days + var2 + var3 + (1|Subject), data=sleepstudy, REML = FALSE)

重现问题。尝试 #1 (sjp.lmm)

> sjp.lmm(M1, M2, M3, M4)
Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
Error in data.frame(betas, p = ps, pa = palpha, shape = pointshapes, grp = fitcnt,  : 
  arguments imply differing number of rows: 3, 2, 1

重现问题。尝试 #2 (sjp.lmer + plot_grid)

plot.1 <- sjp.lmer(fit=M1,type="fe.std",
                   p.kr=FALSE,
                   sort.est = "sort.all",
                   y.offset = 0.4,
                   fade.ns = TRUE,
                   facet.grid = T)
plot.2 <- sjp.lmer(fit=M2,type="fe.std",
                   p.kr=FALSE,
                   sort.est = "sort.all",
                   y.offset = 0.4,
                   fade.ns = TRUE,
                   facet.grid = T)
plot.3 <- sjp.lmer(fit=M3,type="fe.std",
                   p.kr=FALSE,
                   sort.est = "sort.all",
                   y.offset = 0.4,
                   fade.ns = TRUE,
                   facet.grid = T)
plot.4 <- sjp.lmer(fit=M4,type="fe.std",
                   p.kr=FALSE,
                   sort.est = "sort.all",
                   y.offset = 0.4,
                   fade.ns = TRUE,
                   facet.grid = T)
plot_grid(list(plot.1,plot.2,plot.3,plot.4))

> plot_grid(list(plot.1,plot.2,plot.3,plot.4))
Error in gList(list(wrapvp = list(x = 0.5, y = 0.5, width = 1, height = 1,  : 
  only 'grobs' allowed in "gList"

有办法获得这个图吗? 版本:[6] sjPlot_2.1.1ggplot2_2.1.0lme4_1.1-12sjmisc_2.0.1gridExtra_2.2.1dplyr_0.5.0

最佳答案

sjPlot 函数的返回值同时返回数据框和绘图对象,因此您必须在参数中访问绘图对象:

plot_grid(list(plot.1$plot, plot.2$plot, plot.3$plot, plot.4$plot))

enter image description here

编辑: 我看到您在 sjp.lmm() 函数中发现了一个错误,并且可以修复它。如果您从 GitHub ( https://github.com/sjPlot/devel ) 下载最新快照,这将起作用:

sjp.lmm(M1, M2, M3, M4)

enter image description here

关于r - 在 R 中绘制混合模型的回归系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40546716/

相关文章:

r - GLMERTREE : Prevent clustered observations from being split among 2 terminal nodes

javascript - R - 使用 DT 按行格式化

r - 如何仅将函数应用于 dplyr 中组的第一行?

R:使用 geom_text 在条形图上添加观察数量

r - 将额外的图例项添加到 ggplot2 以进行重叠填充 (geom_rect)

r - lmer 但不是 glmer : Error in checkNlevels(reTrms$flist, n = n, control) 错误的解释:

r - Windows 中的长路径/文件名会使 R 中的 write.table() 出错

r - R Shiny 仪表板中多个菜单项中 UIOutput 的使用

r - 在 DESeq2 PCA 上为不同的 geom_point 形状添加黑色轮廓

r - lme 和 lmer 拟合的混合模型的等价性