Comment savoir quand un graphique atteint un sommet et des plateaux?


9

Cela peut sembler très basique, mais j'ai ce problème: j'ai une file d'attente de données avec une taille de fenêtre de 300. De nouvelles données sont ajoutées à une extrémité, les anciennes valeurs sont supprimées de l'autre extrémité.

Je m'attends à ce que les données de la file d'attente restent plus ou moins cohérentes, par exemple: 10,12,15,10,20, puis commencent à augmenter fortement: 15,10,20,22,25,26,28,30,32 ... tout le chemin jusqu'à 150 environ. Là, les données peuvent fluctuer un peu, puis elles descendraient avec une pente similaire (120, 118, 116, 115 ...) jusqu'à 20 environ.

J'essaie d'identifier le tournant de cette série de données par programme, mais mon code détecte les pics plus souvent que je ne le souhaiterais. Comment savoir quand le graphique monte, quand il a atteint un tournant définitif et quand il commence à chuter? Dois-je essayer de regarder le taux de changement du taux de changement?


Si vous avez une idée raisonnable de la pente et de la hauteur du sommet, pourriez-vous tenir compte à la fois de la hauteur et de la durée de la montée, ainsi que de la pente actuelle? De combien de données antérieures vous disposez sur les pics, et pourriez-vous les utiliser pour adapter un modèle?
Karl

2
Quelle que soit la méthode, vous devrez définir correctement ce qu'est un pic et ce qu'est un plateau. Deux valeurs «élevées» consécutives sont-elles un pic ou un plateau? Et cinq? Certaines méthodes peuvent ne pas sembler avoir besoin de ces informations, mais elles sont ensuite masquées en arrière-plan. Comme toujours, il s'agit de bien définir votre problème et d'optimiser vos paramètres (et / ou algorithme).
Nick Sabbe

Réponses:


2

Si vous savez que c'est le modèle exact à attendre, alors vous pouvez rechercher ce modèle exact, mais vous manquerez d'autres modèles. Donc. Si vous savez que le pic sera de 150, alors vous pouvez rechercher 2, 3 ou 4 ou (si nombreux) valeurs consécutives de 150. Mais vous dites "ou alors" - quelle est la taille du "ou alors"? Peut-être que le pic est défini comme "3 valeurs consécutives sur 130" ou peut-être "3 sur 5 valeurs consécutives sur 140". C'est à vous de décider.

D'un autre côté, si vous cherchez simplement un programme général pour détecter les pics - eh bien, cela a été examiné. Il existe un tas de méthodes de lissage (par exemple le lœss, les splines de toutes sortes, les moyennes mobiles, etc.). Pas un domaine dans lequel je suis expert, mais il y a beaucoup de littérature à ce sujet.


4

Examinez SiZer (passages à niveau importants de ZERO ... ou pentes, je ne me souviens pas), bien qu'il s'agisse sans doute d'un outil transversal plutôt que chronologique. L'idée est de lisser les données à différentes largeurs de bande (variant d'environ trois ordres de grandeur) et d'appliquer des tests locaux pour voir si la pente d'une régression locale est significativement positive ou négative (ou indécise). Il produit une image convaincante qui vous aiderait à déterminer quelles fonctionnalités existent. (Je suis surpris qu'il n'y ait pas d'implémentation R, seulement Matlab.)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.