Pour enregistrer la bande passante et afin de ne pas générer de photos / graphiques, je prévois d'utiliser l'API de Graphique de Google: P>
http://code.google.com/apis/chat/ p >
qui fonctionne en émettant simplement une (potentiellement longue) get (ou un post), puis Google générer et servir le graphique eux-mêmes. P>
Dès présent, j'ai des graphiques d'environ deux milliers d'entrées et j'aimerais réduire cela à un nombre arbitraire d'entrées (par exemple, en ne conservant que 50% des entrées d'origine, soit 10% de l'original. entrées). p>
Comment puis-je décider quelles entrées je devrais garder afin d'avoir mon nouveau graphique le plus proche du graphique d'origine? P>
est-ce une sorte de problème d'ajustement de courbe? p>
Notez que je sais que je peux faire poster dans l'API de la carte de Google avec jusqu'à 16 000 de données et cela peut suffire à mes besoins, mais je suis toujours curieux em> p>
3 Réponses :
Ce que vous cherchez à faire est appelé rédaction em> ou décimation em>. Essentiellement, vous filtrez les données, puis déposez N - 1 sur tous les échantillons N (décimation ou échantillonnage en bas par facteur de N). Un filtre brut prend simplement une moyenne mobile locale. Par exemple. Si vous souhaitez décimer par un facteur de n = 10, remplacez tous les 10 points par la moyenne de ces 10 points. P>
Notez que, avec le schéma ci-dessus, vous risquez de perdre des données haute fréquence de votre parcelle (puisque vous êtes efficacement basculant sur les données) - s'il est important de voir une variabilité à court terme, une approche alternative consiste à tracer tous les n points une seule barre verticale qui représente la plage em> (c'est-à-dire min..max) de ces n points. P>
Non, cela ne conserve pas le nouveau graphique aussi proche de l'original. En fait, vous risquez de perdre toutes les données pertinentes (ce qui peut ne être qu'un segment de points X). Si l'OP signifie faire de sérieuses "données pertinentes", ce n'est pas la solution.
Laquelle des deux solutions proposées ci-dessus faisez-vous référence? Descendante / décimation ou gammes de tracé?
Dans les deux, vous modifiez simplement les données qui, du moins pour les statisticiens, sont toujours un non-non, car les points "ne sont pas des points de données réels". Si vous souhaitez conserver l'esprit du graphique, ces méthodes ne feront pas que vous avez besoin d'une approche plus intelligente. Si, toutefois, la fidélité des données n'est pas importante pour l'OP, alors oui, ces méthodes simples feront le faire.
@Dervin Thunk: J'ai déclaré que je voulais garder le nouveau graphique "fermer" à l'original, pas identique. Bien sûr, je modifie les données, c'est un peu tout le point de ma question ...
@Syntax: Et je dis qu'il y a une méthode pour ne pas le faire. Selon ce que vous faites, ma méthode pourrait être surchargée ... Mes résultats ont tendance à affecter les politiques à l'échelle du pays ...: S
Eh bien, car vous réduisez le nombre de points de données, alors quelle que soit la méthode que vous utilisez, vous devez perdre quelques informations i>. En fonction de la nature des données, vous devez décider quelles informations vous souhaitez conserver et ce que vous pouvez vous permettre de perdre. Les deux méthodes ci-dessus conviennent à de nombreuses applications, mais je suis sûr qu'il doit y avoir des exceptions. Vous pourriez peut-être partager des méthodes alternatives?
@Paul r: +1 ... Yup "Downsample" i> semble être exactement ce que je suis après. Avec ce terme de recherche, j'ai déjà trouvé des API de Java faisant ce que je pense, c'est ce que je suis après. Cependant, je cherche quelque chose de plus complexe que de simplement lisser mes données en utilisant une moyenne brute chaque n i> point.
@Paul ... Non, non ... Je ne semble pas m'expliquer correctement: je dis que mes méthodes ont une méthodologie de principe i> de ce que certaines informations que je perds sont. Vos méthodes sont à travers le conseil d'administration et c'est ce que c'est mauvais, imo.
@ SyntaxT3RRR0R: Une moyenne mobile n'est qu'un très mauvais filtre passe-bas - vous pouvez utiliser de meilleurs filtres, en fonction de la précision que vous souhaitez que votre représentation réduite soit. La taille du filtre dépendra de votre facteur de décimation, N.
@Dervin: Je pense que vous assumez des exigences qui ne sont peut-être pas valables dans ce cas. Il se peut que vous ayez une méthode spécifique qui est importante pour vous, mais dans le cas général, la plupart des personnes ne sont pas intéressées par des composants à haute fréquence (qui sont généralement un bruit de bruit) lorsqu'ils créent une représentation d'une vue d'ensemble graphique.
graphique (données de la série chronologique) La résumé est un problème très difficile. C'est comme décider, dans un texte, quelle est la partie "pertinente" à conserver dans une résumation automatique de celle-ci. Je vous suggère d'utiliser l'une des bibliothèques les plus respectées pour trouver des "motifs d'intérêt" dans les données de la série temporelle par eamonn Keogh p>
le plug-in FLOT-Downsample strong> pour le flot La bibliothèque de graphiques JavaScript pourrait faire ce que vous recherchez, jusqu'à un point. P>
Le but est d'essayer de conserver les caractéristiques visuelles de la ligne d'origine en utilisant considérablement moins de points de données. P> blockQuote>
Il existe une grande liste d'implémentations pour d'autres langages / frameworks de programmation dans le README .