绘制混合模型&x27;R中的回归系数

绘制混合模型&x27;R中的回归系数,r,ggplot2,lme4,sjplot,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(slee

我很难尝试使用
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)
重现问题。尝试#2(
sjp.lmer
+
plot#u grid


plot.1我对这个
sjPlot
类一无所知,但它看起来像是将一堆东西捆绑到列表中的plot中
plot\u grid
grid.arrange
等不知道如何处理多余的东西,但他们可以处理
ggplot
部分,称为
plot

plot_grid(lapply(list(plot.1,plot.2,plot.3,plot.4), "[[", "plot"))

我有点惊讶,因为看起来至少有些捆绑信息是重复的。例如,
plot.1$data
有一个小数据框,它似乎是已与绘图绑定的数据的副本(或子集?)
plot.1$plot$data
。也许它更不同,在更复杂的情况下有充分的理由使用它。

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

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

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

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

我接受了你的答案,两种解决方案都很有效。谢谢但是我有一个快速的跟进:
sjp.lmm
需要数据。如果您使用最新快照复制尝试#1,它将工作,但只有在加载数据帧的情况下(即
rm(睡眠研究)后才会失败)
。最好能避免这种情况,因为数据已经存储在
M1@frame
。这是由于通过
pbkrtest::get_Lb_ddf(x,lme4::fixef(x)))计算了df的Kenward-Rogers近似值。
。pbkrtest似乎需要环境中的数据。但是,如果调用
sjp.lmm(M1,M2,M3,M4,p.kr=F)
(p.kr=F),即使sleepstudy不在环境中,它也可以工作。我还注意到添加
type=“std2”
会破坏代码
sjp.lmm(M1,M2,M3,M4,type=“std2”)data.frame中的错误(betas,p=ps,pa=palpha,shape=pointshapes,grp=fitcnt,:参数表示行数不同:3,2,1
。好的,谢谢,现在也修复了。我修改(整理)时出现了一些新的错误我的包函数,希望现在大部分/全部都已修复。我不知道是否应该在这里提出新问题,但是:有没有办法更改
sjp.lmm
中系数的顺序?
sort.est
选项似乎在这里不起作用。
plot_grid(list(plot.1$plot, plot.2$plot, plot.3$plot, plot.4$plot))
sjp.lmm(M1, M2, M3, M4)