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!