2010-06-04 8 views
9

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!

Respuesta

-3

Stat_smooth tiene y, ymin y ymax la estética que se pueden utilizar con una costumbre más suave, tal como se documenta aquí: http://had.co.nz/ggplot2/stat_smooth.html. Usted crea un marco de datos con las predicciones e IC de su suavizador personalizado y lo utiliza directamente en stat_smooth (especificando un nuevo argumento de datos). Es posible que pueda usar stat_smooth(method="tgp::bgp",XX=seq(0,200,length=100)) pero no lo he probado.

6

Parece que bgp no sigue el estilo R estándar para funciones de modelado. Esto significa que no puede usarlo dentro de geom_smooth y deberá ajustar el modelo fuera de la llamada a ggplot2. También puede enviar un correo electrónico al autor del paquete tgp y alentarlos a seguir los estándares de R.

Cuestiones relacionadas