2010-06-04 14 views
9

Sto usando R. Ho 25 variabili su 15 punti temporali, con 3 o più repliche per variabile per punto temporale. Ho inserito melt in uno data.frame, che posso tracciare felicemente usando (tra le altre cose) il comando facet_wrap() di ggplot. Il mio data frame fuso è chiamato lis; ecco la sua testa e la coda, in modo da avere un'idea dei dati:R + ggplot: come utilizzare un metodo Smoother personalizzato (Gaussian Process)

> 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 

posso ottenere una bella trama di tutta la serie storica, insieme ad una spline a muro e 95% intervallo di confidenza utilizzando i seguenti comandi ggplot2:

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

Il guaio è che il fluido non è di mio gradimento - gli intervalli di confidenza al 95% sono lontani. Mi piacerebbe usare Gaussian Processes (GP) per ottenere una regressione e una stima migliori della covarianza per le mie serie temporali.

posso montare un GP usando qualcosa come

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

che richiede tempo X, osservazioni Y e fa previsioni in ogni punto XX. L'oggetto out contiene un sacco di cose su tali previsioni, inclusa una matrice di covarianza che posso usare al posto dell'intervallo di confidenza del 95% ottenuto (credo?) Da ns().

Il problema è che non sono come avvolgere questa funzione per renderla interfaccia con ggplot2::stat_smooth(). Qualsiasi idea o suggerimento su come procedere sarebbe molto apprezzato!

risposta

-3

Stat_smooth ha y, ymin, e ymax estetica che è possibile utilizzare con un costume più liscia, come documentato qui: http://had.co.nz/ggplot2/stat_smooth.html. È possibile creare un frame di dati con le previsioni e l'elemento di configurazione dall'assoluta personalizzazione e utilizzarlo direttamente in stat_smooth (specificando un nuovo argomento di dati). Potresti essere in grado di utilizzare stat_smooth(method="tgp::bgp",XX=seq(0,200,length=100)) ma non l'ho provato.

6

Sembra che lo bgp non segua lo stile R standard per le funzioni di modellazione. Ciò significa che non è possibile utilizzarlo all'interno di geom_smooth e che è necessario adattare il modello al di fuori della chiamata ggplot2. Potresti anche mandare un'email all'autore del pacchetto tgp e incoraggiarli a seguire gli standard R.

Problemi correlati