2016-05-19 17 views
0

Ich habe folgendes ModellOverlay 2 allEffects Graphen

require(effects) 

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

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

Wie kann ich mich fit und FIT2 überlagernde zeichnen können? Ich habe das Par versucht (neu = T), aber es funktioniert nicht. Die Diagramme zeichnen einzeln fein auf.

+1

Bitte lesen Sie die Informationen über [wie eine gute Frage] (http://stackoverflow.com/help/how-to-ask) und wie ein [reproduzierbares Beispiel] (http zu geben: //stackoverflow.com/questions/5963269). Dies wird es anderen sehr erleichtern, Ihnen zu helfen. – zx8754

+0

bieten einige Daten, und was meinst du mit Overlay? Zeigen Sie uns zumindest ein Beispiel, wie Ihre Handlung aussehen soll –

Antwort

2

Ich bin mir nicht sicher, es gibt eine sehr nette Möglichkeit, dies zu tun. Normalerweise extrahiere ich die Informationen aus der Effektstruktur und zeichne sie mit ggplot auf (Gitter wäre auch möglich).

Hier ein Beispiel:

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

Fit ein Modell der ersten und der zweiten Hälfte einer der Standardbeispiel Datensätze:

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

Extrahieren der Information aus dem efflist Objekt. Dies ist der Teil, der nicht ganz allgemein ist ... der schwierige Teil ist, die Prädiktorvariable herauszuholen.

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

Der Einfachheit halber verwenden ldply die Ergebnisse der beiden Modelle zusammen:

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

Jetzt Grundstück:

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

Der Teppich Grundstück Komponente ist hier ein wenig albern.

enter image description here