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?
la source
Réponses:
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.
la source
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.)
la source