2010-06-04 4 views
9

Ich benutze R. Ich habe 25 Variablen über 15 Zeitpunkte, mit 3 oder mehr Wiederholungen pro Variable pro Zeitpunkt. Ich habe melt ed dies in eine data.frame, die ich glücklich mit (unter anderem) ggplot facet_wrap() Befehl plotten kann. Mein geschmolzener Datenrahmen heißt lis; hier ist sein Kopf und Schwanz, so dass Sie eine Vorstellung von den Daten zu erhalten:R + ggplot: Wie verwende ich einen benutzerdefinierten Glätter (Gauß-Prozess)

> head(lis) 
    time variable value 
1 10  SELL 8.170468 
2 10  SELL 8.215892 
3 10  SELL 8.214246 
4 15  SELL 8.910654 
5 15  SELL 7.928537 
6 15  SELL 8.777784 
> tail(lis) 
    time variable value 
145 1  GAS5 10.92248 
146 1  GAS5 11.37983 
147 1  GAS5 10.95310 
148 1  GAS5 11.60476 
149 1  GAS5 11.69092 
150 1  GAS5 11.70777 

ich ein schönes Grundstück von all den Zeitreihen bekommen, zusammen mit einem eingebauten Spline und 95% Konfidenzintervall folgende ggplot2 Befehle:

p <- ggplot(lis, aes(x=time, y=value)) + facet_wrap(~variable) 
p <- p + geom_point() + stat_smooth(method = "lm", formula = y ~ ns(x,3)) 

Das Problem ist, dass der Glätter ist nicht nach meinem Geschmack - die 95% Konfidenzintervalle sind weg. Ich würde gern Gaußsche Prozesse (GP) verwenden, um eine bessere Regression und Schätzung der Kovarianz für meine Zeitreihe zu erhalten.

kann ich einen GP passen so etwas wie

library(tgp) 
out <- bgp(X, Y, XX = seq(0, 200, length = 100)) 

mit der Zeit in XXX, Beobachtungen Y und macht Vorhersagen an jedem Punkt nimmt. Das Objekt out enthält eine Menge Dinge über diese Vorhersagen, einschließlich einer Kovarianzmatrix, die ich anstelle des 95% -Konfidenzintervalls verwenden kann, das ich (glaube ich?) Von ns() bekomme.

Das Problem ist, ich bin nicht, wie man diese Funktion umschließt, um es Schnittstelle mit ggplot2::stat_smooth() zu machen. Irgendwelche Ideen oder Hinweise, wie man fortfährt, würde sehr geschätzt werden!

Antwort

-3

Stat_smooth hat y, ymin und ymax Ästhetik, die Sie mit einem benutzerdefinierten glattere verwenden können, wie hier dokumentiert: http://had.co.nz/ggplot2/stat_smooth.html. Sie erstellen einen Datenrahmen mit den Vorhersagen und dem CI von Ihrem benutzerdefinierten Glätter und verwenden diesen direkt in stat_smooth (unter Angabe eines neuen Datenarguments). Sie könnten stat_smooth(method="tgp::bgp",XX=seq(0,200,length=100)) verwenden, aber ich habe es nicht versucht.

6

Es sieht so aus, als ob bgp nicht dem Standard-R-Stil für Modellierungsfunktionen folgt. Dies bedeutet, dass Sie es nicht innerhalb von geom_smooth verwenden können und dass Sie das Modell außerhalb des ggplot2-Aufrufs anpassen müssen. Sie können auch den Autor des Pakets tgp per E-Mail kontaktieren und sie ermutigen, den R-Standards zu folgen.