R + ggplot: comment utiliser une plus lisse sur mesure (processus gaussienne)

voix
9

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 en une data.frame, que je peux tracer en utilisant heureusement (entre autres) de ggplot facet_wrap()de commande. Mon trame 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))

qui prend du temps X, des observations Yet fait des prédictions en chaque point XX. L'objet outcontient un tas de choses au sujet de ces prédictions, y compris une matrice de covariance je peux utiliser à la place de l'intervalle de confiance de 95% que je reçois (je crois?) À partir 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!

Créé 04/06/2010 à 20:42
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
-3

Stat_smooth a y, yminet l' ymaxesthétique que vous pouvez utiliser avec une plus lisse sur mesure, 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 sur mesure et à l' utilisation que directement 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'ai pas essayé.

Créé 04/06/2010 à 23:28
source utilisateur

voix
6

Il ressemble à bgpne pas suivre le style standard R pour les fonctions de modélisation. Cela signifie que vous ne pouvez pas l' utiliser à l' intérieur geom_smoothet vous aurez besoin d'ajuster le modèle en dehors de l'appel ggplot2. Vous pouvez également envoyer un courriel l' tgpauteur du paquet et les encourager à se conformer aux normes de R.

Créé 05/06/2010 à 00:01
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more