Wie finde ich heraus, wann ein Graph einen Peak und ein Plateau erreicht?


9

Das mag sehr einfach klingen, aber ich habe dieses Problem: Ich habe eine Datenwarteschlange mit einer Fenstergröße von 300. Neue Daten werden an einem Ende hinzugefügt, alte Werte werden am anderen Ende entfernt.

Ich erwarte, dass die Warteschlangendaten mehr oder weniger konsistent bleiben, z. B.: 10,12,15,10,20, und dann stark ansteigen: 15,10,20,22,25,26,28,30,32 ... bis zu 150 oder so. Dort können die Daten etwas schwanken, dann würden sie mit einer ähnlichen Steigung (120, 118, 116, 115 ...) bis auf etwa 20 abfallen.

Ich versuche, den Wendepunkt in dieser Datenreihe programmgesteuert zu identifizieren, aber mein Code erkennt Spitzen häufiger als ich möchte. Wie kann ich feststellen, wann der Graph steigt, wann er einen endgültigen Wendepunkt erreicht hat und wann er zu fallen beginnt? Sollte ich versuchen, die Änderungsrate der Änderungsrate zu betrachten?


Wenn Sie ein vernünftiges Gefühl für die Steigung und die Höhe des Gipfels haben, können Sie sowohl die Höhe und die Steigdauer als auch die aktuelle Steigung berücksichtigen? Wie viele frühere Daten zu Peaks haben Sie und könnten Sie diese verwenden, um ein Modell anzupassen?
Karl

2
Unabhängig von der Methode müssen Sie richtig definieren, was ein Peak und was ein Plateau ist. Sind zwei aufeinanderfolgende "hohe" Werte ein Peak oder ein Plateau? Wie wäre es mit fünf? Einige Methoden benötigen diese Informationen möglicherweise nicht, diese sind jedoch hinter den Kulissen verborgen. Wie immer kommt es darauf an, Ihr Problem richtig zu definieren und Ihre Parameter (und / oder Algorithmen) dafür zu optimieren.
Nick Sabbe

Antworten:


2

Wenn Sie wissen, dass dies genau das zu erwartende Muster ist, können Sie nach diesem genauen Muster suchen, aber dann werden Sie andere Muster vermissen. So. Wenn Sie wissen, dass der Peak 150 sein wird, könnten Sie nach 2 oder 3 oder 4 oder (wie viele) aufeinanderfolgenden Werten von 150 suchen. Aber Sie sagen "oder so" - wie groß ist das "oder so"? Vielleicht ist der Peak als "3 aufeinanderfolgende Werte über 130" definiert, oder vielleicht ist es "3 von 5 aufeinanderfolgenden Werten über 140". Das müssen Sie entscheiden.

Auf der anderen Seite, wenn Sie nur nach einem allgemeinen Programm suchen, um Spitzen zu erkennen - nun, das wurde angeschaut. Es gibt eine Reihe von Glättungsmethoden (z. B. Löss, Splines verschiedener Art, gleitende Durchschnitte usw.). Ich bin kein Experte, aber es gibt viel Literatur dazu.


4

Schauen Sie sich SiZer an (wichtige ZERo-Kreuzungen ... oder Steigungen, an die ich mich nicht erinnere), obwohl es wohl eher ein Querschnitts- als ein Zeitreihenwerkzeug ist. Die Idee besteht darin, die Daten bei verschiedenen Bandbreiten (die um drei Größenordnungen variieren) zu glätten und einige lokale Tests anzuwenden, um festzustellen, ob die Steigung einer lokalen Regression signifikant positiv oder negativ (oder unentschlossen) ist. Es wird ein überzeugendes Bild erstellt, anhand dessen Sie feststellen können, welche Funktionen vorhanden sind. (Ich bin überrascht, dass es keine R-Implementierung gibt, nur Matlab.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.