2010-05-03 8 views
6

Ich habe 40 Probanden, von zwei Gruppen, über 15 Wochen, mit einigen gemessenen Variablen (Y).Hinzufügen von Trendlinien/Boxplots (nach Gruppe) in ggplot2

Ich möchte ein Diagramm haben, wo: x = Zeit, y = T, Linien sind nach Themen und Farben nach Gruppen.

fand ich es kann wie folgt geschehen:

TIME <- paste("week",5:20) 
ID <- 1:40 
GROUP <- sample(c("a","b"),length(ID), replace = T) 
group.id <- data.frame(GROUP, ID) 
a <- expand.grid(TIME, ID) 
colnames(a) <-c("TIME", "ID") 
group.id.time <- merge(a, group.id) 
Y <- rnorm(dim(group.id.time)[1], mean = ifelse(group.id.time$GROUP =="a",1,3)) 
DATA <- cbind(group.id.time, Y) 
qplot(data = DATA, 
     x=TIME, y=Y, 
     group=ID,  
     geom = c("line"),colour = GROUP) 

Aber jetzt mag ich die Handlung etwas hinzuzufügen, um den Unterschied zwischen den beiden Gruppen zu zeigen (zum Beispiel einer Trendlinie für jede Gruppe, mit einige CI shadelines) - wie geht das?

Ich erinnere mich, einmal das ggplot2 sehen kann (leicht) dies mit geom_smooth tun, aber mir fehlt etwas darüber, wie es funktioniert.

Ich fragte mich auch, ob die Zeilen vielleicht wie ein Boxplot für jede Gruppe sein würden (mit einer Zeile für die verschiedenen Quantile und Zäune und so weiter). Aber ich könnte mir vorstellen, dass die Beantwortung der ersten Frage mir helfen würde, die zweite Frage zu lösen.

Danke.

Antwort

16
p <- ggplot(data=DATA, aes(x=TIME, y=Y, group=ID)) + 
      geom_line(aes(colour=GROUP)) + 
      geom_smooth(aes(group=GROUP)) 

geom_smooth plot http://img143.imageshack.us/img143/7678/geomsmooth.png

+0

Dank rcs. Wie ändere ich die schattierte SE auf 95% anstelle von 68%? –

+0

Ich würde nur bemerken, dass die Standard-Glättungsintervalle (nach meinem Wissen) keine Autokorrelation innerhalb des Subjekts berücksichtigen. Longitudinale Daten werden mit hoher Wahrscheinlichkeit eine Korrelationsstruktur aufweisen. Ich mag diese Art von Handlung. –

+0

Sie können 'level' in' stat_smooth' verwenden (standardmäßig 0,95): 'p + geom_smooth (level = 0,95, aes (group = GROUP))' – rcs