Question

J'utilise R. J'ai 25 variables de plus de 15 points de temps, avec 3 ou plus réplicats par variable par point de temps. J'ai melted cela dans un data.frame, que je peux tracer en utilisant heureusement (entre autres) la commande de facet_wrap() ggplot. Mon cadre de données fondu est appelé lis; voici sa tête et la queue, donc vous aurez une idée des données:

> 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

Je peux obtenir un beau terrain de toutes les séries chronologiques, ainsi que d'une spline ajustée et 95% des intervalles de confiance à l'aide des commandes de ggplot2 suivantes:

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

Le problème est que le plus lisse n'est pas à mon goût - les intervalles de confiance à 95% sont loin. Je voudrais utiliser des processus gaussiennes (GP) pour obtenir une meilleure régression et estimation de covariance pour ma série chronologique.

Je peux adapter à un médecin généraliste en utilisant quelque chose comme

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

X qui prend du temps, les observations Y et fait des prédictions à chaque point dans XX. Le out objet contient un tas de choses au sujet de ces prédictions, y compris une matrice de covariance je peux utiliser à la place de l'intervalle, je reçois la confiance de 95% (je pense?) De ns().

Le problème est que je ne suis pas comment emballer cette fonction pour faire l'interface avec ggplot2::stat_smooth(). Toutes les idées ou des pointeurs quant à la façon de procéder serait grandement appréciée!

Était-ce utile?

La solution

Stat_smooth a y, ymin et esthétique ymax que vous pouvez utiliser avec une plus lisse personnalisé, comme indiqué ici: http://had.co.nz/ggplot2/stat_smooth.html . Vous créez une trame de données avec les prévisions et CI de votre plus lisse personnalisé et l'utilisation que directement dans stat_smooth (spécifiant un nouvel argument de données). Vous pourriez être en mesure d'utiliser stat_smooth(method="tgp::bgp",XX=seq(0,200,length=100)) mais je n'avez pas essayé.

Autres conseils

On dirait que bgp ne suit pas le style standard R pour les fonctions de modélisation. Cela signifie que vous ne pouvez pas l'utiliser à l'intérieur geom_smooth et vous devrez adapter à l'extérieur du modèle de l'appel ggplot2. Vous pouvez également envoyer un courriel l'auteur du paquet tgp et les encourager à suivre les normes R.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top