我正在使用多级模型(使用lme4软件包)绘制预测值的图形。我可以使用Effect()函数成功完成此操作。如下所示:

library(lme4)
library(effects)
m1=lmer(price~depth*cut+(1|cut),diamonds)
plot(Effect(c("cut","depth"),m1))

r - 将lmer的预测值绘制为单个图-LMLPHP

但是,我想将这些相同的数据呈现为带有图例的单个图。使用ggplots,我可以做到这一点;但是,我丢失了错误条,如下所示:
ggplot(data.frame(Effect(c("cut","depth"),m1)),
       aes(x=depth,y=fit,color=cut,group=cut))+
  geom_line()

r - 将lmer的预测值绘制为单个图-LMLPHP

如何将第一个绘图(带有误差线)重新创建为一个绘图?

最佳答案

怎么样:

library(effects)
library(lme4)
library(ggplot2)
m1 <- lmer(price~depth*cut+(1|cut),diamonds)

顺便说一下,请注意,此特定模型没有任何意义(固定和随机因素都包括在内)!希望您仅将其用作说明...
ee <- Effect(c("cut","depth"),m1)

关键是使用as.data.frame()将效果对象变成有用的东西...
theme_set(theme_bw())
ggplot(as.data.frame(ee),
       aes(depth,fit,colour=cut,fill=cut))+
    geom_line()+
     ## colour=NA suppresses edges of the ribbon
    geom_ribbon(colour=NA,alpha=0.1,
                            aes(ymin=lower,ymax=upper))+
     ## add rug plot based on original data
        geom_rug(data=ee$data,aes(y=NULL),sides="b")

r - 将lmer的预测值绘制为单个图-LMLPHP

关于r - 将lmer的预测值绘制为单个图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33763089/

10-10 19:01