首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >叠加2 allEffects图

叠加2 allEffects图
EN

Stack Overflow用户
提问于 2016-05-19 20:32:47
回答 1查看 1.3K关注 0票数 0

我有下面的模型

代码语言:javascript
复制
require(effects)

fit<-lme(x ~ y, data, random= ~1|item)
plot(allEffects(fit)

fit2<-lme(x ~ y, data2, random = ~1|item)
plot(allEffects(fit2)

如何绘制fit和fit2覆盖?我试过par(new=T),但它不起作用。这些图表分别绘制得很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-19 20:50:59

我不确定有什么很好的方法。我通常从效果结构中提取信息,然后用ggplot绘制它(格也是可能的)。

下面是一个例子:

代码语言:javascript
复制
library(effects)
library(nlme)
library(plyr)  ## utilities

将模型安装到标准示例数据集的前半部分和第二部分:

代码语言:javascript
复制
fm1 <- lme(distance ~ age, random = ~1|Subject,
          data = Orthodont[1:54,])
fm2 <- update(fm1, data = Orthodont[55:108,])
a1 <- allEffects(fm1)
a2 <- allEffects(fm2)

efflist对象中提取信息。这部分并不完全是一般的..。最困难的部分是提取预测变量。

代码语言:javascript
复制
as.data.frame.efflist <- function(x) {
   ldply(x,
         function(z) {
           r <- with(z,data.frame(fit,
                                  var=variables[[1]]$levels,
                                  lower,upper))
           return(plyr::rename(r,setNames(z$variables[[1]]$name,"var")))
         })
}

为了方便起见,请使用ldply将这两种模型的结果放在一起:

代码语言:javascript
复制
comb <- ldply(list(fm1=a1,fm2=a2),as.data.frame,.id="model")

现在阴谋:

代码语言:javascript
复制
library(ggplot2); theme_set(theme_bw())
ggplot(comb,aes(age,fit,
               ymin=lower,ymax=upper,
               colour=model,fill=model))+
     geom_line()+
     geom_ribbon(alpha=0.2,colour=NA)+
     geom_rug(sides="b")

地毯的情节在这里有点傻。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37333487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档