Estoy usando R. Tengo 25 variables en 15 puntos de tiempo, con 3 o más repeticiones por variable por punto de tiempo. He melt
ed esto en un data.frame
, que puedo trazar felizmente usando (entre otras cosas) el comando facet_wrap()
de ggplot. Mi marco de datos derretido se llama lis
; aquí está su cabeza y cola, para que pueda obtener una idea de los datos:R + ggplot: cómo usar un suavizador personalizado (Proceso Gaussiano)
> 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
yo puede conseguir una hermosa parcela de toda la serie histórica, junto con un ajuste de ranura y el% de intervalo de confianza del 95 utilizando los siguientes comandos 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))
El problema es que el suavizador no es de mi gusto: los intervalos de confianza del 95% están muy lejos. Me gustaría usar procesos gaussianos (GP) para obtener una mejor regresión y estimación de la covarianza para mi serie de tiempo.
que puede adaptarse a un médico de cabecera usando algo como
library(tgp)
out <- bgp(X, Y, XX = seq(0, 200, length = 100))
que lleva tiempo X
, observaciones Y
y hace predicciones en cada punto de XX
. El objeto out
contiene un montón de cosas sobre esas predicciones, incluida una matriz de covarianza que puedo usar en lugar del intervalo de confianza del 95% que obtengo (¿o sí?) De ns()
.
El problema es que no soy cómo ajustar esta función para hacerla interactuar con ggplot2::stat_smooth()
. ¡Cualquier idea o sugerencia sobre cómo proceder sería muy apreciada!