R: parcelle mise à jour [xy] LIMS avec de nouveaux points (ou) lignes () additions?

StackOverflow https://stackoverflow.com/questions/1475631

  •  16-09-2019
  •  | 
  •  

Question

Contexte:

Je suis en cours d'exécution d'une simulation de Monte Carlo pour montrer qu'un processus particulier (une moyenne cumulative) ne pas convergent vers au fil du temps, et diverge souvent d'une manière extravagante dans la simulation (l'attente de la variable aléatoire = infini ). Je veux tracer environ 10 de ces simulations sur un graphique en ligne, où l'axe x a le nombre d'itérations, et l'axe y a la moyenne cumulative jusqu'à ce moment-là.

Voilà mon problème:

Je vais courir la première simulation (chaque sim. Ayant 10.000 itérations), et de construire l'intrigue principale en fonction de sa gamme actuelle. Mais souvent l'un des simulations auront une gamme de quelques ordres de grandeur grande que la première, de sorte que l'intrigue vole hors de la plage d'origine. Ainsi, est-il possible de mettre à jour dynamiquement le ylim ou xlim d'une parcelle sur l'ajout d'un nouvel ensemble de points ou de lignes?

Je peux penser à deux solutions de contournement pour: 1. magasin chaque simulation, puis choisir celui avec la plus large gamme, et construire au large de ce (pas élégant le graphique de base, et je doivent stocker beaucoup de données en mémoire, mais serait probablement facile à un ordinateur portable [[EDIT: comme le souligne Marek out, ce n'est pas un exemple intense mémoire, mais si vous connaissez une bonne solution qui avait le soutien itérations beaucoup plus telle que cela devient un problème (pensez des promenades de grande dimension qui nécessitent beaucoup, beaucoup plus d'échantillons MC pour la convergence) puis sautez à droite en]] ) 2. trouver une graine qui semble construire une belle recherche de la version , et régler le ylim manuellement, ce qui rendrait la démonstration reproductible.

Bien sûr que je tiens pour quelque chose de plus élégant que mes solutions de contournement. En espérant que ce ne soit pas trop piéton un problème, puisque j'imagine que ce n'est pas rare avec des simulations dans R. Des idées?

Était-ce utile?

La solution

Je ne sais pas si cela est possible en utilisant des graphiques de base, si quelqu'un a une solution, j'aimerais le voir. Cependant les systèmes graphiques basés sur la grille (treillis et ggplot2) permettent l'objet graphique à enregistrer et mis à jour. Il est incroyablement facile à ggplot2.

require(ggplot2)

faire des données et obtenir la gamme:

foo <- as.data.frame(cbind(data=rnorm(100), numb=seq_len(100)))

faire un premier objet ggplot et le tracer:

p <- ggplot(as.data.frame(foo), aes(numb, data)) + layer(geom='line')
p

faire un peu plus de données et l'ajouter à l'intrigue

foo <- as.data.frame(cbind(data=rnorm(200), numb=seq_len(200)))

p <- p + geom_line(aes(numb, data, colour="red"), data=as.data.frame(foo))

tracer le nouvel objet

p

Autres conseils

Je pense que (1) est la meilleure option. Je ne pense pas que ce fait pas élégant. Je pense que ce serait plus intense de redessiner informatiquement chaque fois que vous frappez un point supérieur à XLIM ou ylim.

En outre, j'ai vu dans le livre de Peter Hoff sur les statistiques bayésiens une utilisation fraîche de ts () au lieu de lignes () pour des sommes cumulées / moyens. Il semble assez épatant:

text alt

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