2016-05-19 4 views
0

私は、次のモデルオーバーレイ2 allEffectsグラフ

require(effects) 

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

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

どのようにフィットし、fit2オーバーレイをプロットすることができますがありますか? par(new = T)を試しましたが、うまくいきません。グラフは個別に細かくプロットされます。

+1

についての情報を読む(http://stackoverflow.com/help/how-to-ask)[良い質問をする方法]と[再現可能な例]を得るためにどのようにしてくださいます(http: //stackoverflow.com/questions/5963269)。これは他の人があなたを助けることをはるかに容易にします。 – zx8754

+0

はいくつかのデータを提供し、オーバーレイはどういう意味ですか?少なくともあなたのプロットをどのように見せたいかの例を見せてください –

答えて

2

非常にこれを行うには良い方法がありません。私は通常、効果構造から情報を抽出し、それをggplot(格子も可能です)でプロットします。

ここに例を示します。

library(effects) 
library(nlme) 
library(plyr) ## utilities 

は、標準的な例示的なデータセットの一つの第一および第二の半分にモデルをフィット:

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オブジェクトから情報を抽出します。これは完全に一般的ではない部分ですが、難しい部分は予測変数を取り除いています。便宜上

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を使用します。

comb <- ldply(list(fm1=a1,fm2=a2),as.data.frame,.id="model") 

は今プロット:

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") 

ラグプロットコンポーネントは、ここで少し愚かです。

enter image description here

関連する問題