绘制混合模型&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)