Schritt Änderungserkennung


8

Ich verwende eine nichtlineare Methode der kleinsten Quadrate, um eine analytische Funktion an einige experimentelle Daten anzupassen. Ich muss dem Algorithmus einige anfängliche Schätzwerte geben, also versuche ich herauszufinden, wie dies automatisch gemacht wird (und nicht mit dem Auge, was ich getan habe).

Dies sind einige simulierte Daten, die durch Hinzufügen von normalverteiltem Zufallsrauschen zur Analysefunktion erstellt werden

Dies sind einige simulierte Daten, die durch Hinzufügen von normalverteiltem Zufallsrauschen zur Analysefunktion erstellt werden

Ich versuche, die Position dieser Schrittänderung in den Daten zuverlässig zu erkennen. Ich hatte nur begrenzten Erfolg, indem ich die mittlere Varianz in den Datenpunkten berechnet und nach Punkten in den Daten gesucht habe, die sich erheblich von diesem Wert unterscheiden, aber dieser Ansatz scheint durch das Signal-Rausch-Verhältnis sehr begrenzt zu sein.

Ich hoffe auf eine Richtung, in die ich schauen muss, um mein Problem zu lösen, da ich überhaupt nicht viele Statistiken kenne.

Vielen Dank!

-Edit Einfügen bin Link zu xy Daten

http://pastebin.com/QTawFex3


Vielleicht wäre es nützlich, Techniken zur Erkennung von Änderungspunkten in Betracht zu ziehen. Zirkuläre binäre Segmentierung könnte genau das sein, was Sie brauchen.
Mur1lo

Chen und Liu 1993 beschreiben eine Methode zur Erfassung der Pegelverschiebung in einer Zeitreihe. Ihr Algorithmus ist im Paket tsoutliers R implementiert.
Pionpi_

1
Eine neue leistungsstarke Änderungserkennungstechnik ist die Impulsindikatorsättigung und die Schrittindikatorsättigung in den Werken von Castle, Doornik, Hendry & Co. (Google diese Schlüsselwörter, um mehr zu finden.)
Richard Hardy

Die beste Antwort, die ich darauf finden konnte, ist dort, funktioniert in meinem Fall sehr gut und wenn man sich Ihre Daten ansieht, sollte es auch funktionieren. stackoverflow.com/questions/48000663/…
-Xavier Sireta

Antworten:


3

Es mag einige ausgefeiltere Methoden dafür geben, aber hier ist mein erster Gedanke.

Sie möchten im Grunde genommen die Ableitung der Funktion nehmen und herausfinden, wo sie am größten ist. Numerisch können Sie einfach den Unterschied zwischen Datenpunkten nehmen und herausfinden, welche beiden Punkte den größten Unterschied aufweisen. Dann ist der Mittelpunkt der x-Werte für diese beiden Punkte Ihr Ort der größten Änderung.

Diese einfache Methode ist anfällig für Rauschen. Sie können die Daten also zuerst mit einem Filter filtern, der die Daten nicht nach rechts oder links verschiebt. Wenn Sie einen einfachen FIR-Filter verwenden, filtern Sie von vorne nach hinten und das Ergebnis von hinten nach vorne. Das Ergebnis ist ein doppelt gefilterter und NICHT verschobener Datensatz. Befolgen Sie dann die obigen Schritte, um den Punkt mit der größten Differenz zwischen den Werten zu finden.

Sie können auch komplexere numerische Differentialberechnungen verwenden, die mehr als die Differenz zweier Punkte verwenden.


Danke für die Antwort. Ich war aufgehängt, dass es sich um diskrete Daten handelte, und dachte nicht daran, sie nur zu differenzieren! Ich werde
versuchen

1
Ich habe Ihre Idee umgesetzt und sie funktioniert wie ein Zauber, vielen Dank!
jm22b

Das ist schön zu hören. Danke, dass Sie mich informiert haben.
Jason

4

Ihre Daten deuten visuell auf eine asymptotische (allmähliche) Änderung der neuen Ebene hin. Zeitreihenmethoden können häufig verwendet werden, um diese Art von Strukturen zu erkennen, selbst wenn die Daten keine Zeitreihen sind. Bitte posten Sie Ihre Daten und ich kann dies möglicherweise mit "Spielzeug" demonstrieren, das mir zur Verfügung steht. Wenn Ihre Daten Zeitreihen sind, muss man, wie @jason reflektiert, effektiv mit dem Rauschmodell umgehen, um die Struktur korrekt zu "sehen".

BEARBEITET BEI DATENEMPFANG:

Die Modellierung ist häufig ein iterativer Ansatz mit Zwischenschritten, die wertvolle Hinweise auf ein nützliches Modell liefern. Ich nahm Ihre Daten und stellte sie AUTOBOX vor (eines meiner Spielzeuge, an deren Entwicklung ich mitgewirkt habe). Ein erstes Diagramm Geben Sie hier die Bildbeschreibung eindeutete stark auf einen longitudinalen (chronologischen) Datensatz hin, in dem die X-Reihe in festen Intervallen angegeben wird. AUTOBOX schlug automatisch ein Standard-ARIMA-Modell (mit Interventionserkennung) vor, das das instationäre X durch einen differenzierenden Operator ersetzt. Hier ist das tatsächliche / Fit / Prognose-Diagramm und das vorgeschlagene Modell.Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Bei der Prüfung bot sich ein anderes mögliches Modell an, das eine Verzögerungsstruktur für eine Indikatorvariable enthält. Ich habe im Zeitraum 76 einen Impuls eingeführt (ein dynamischer Prädiktor, der ausdrücklich bis zu einem möglichen Verzögerungseffekt von 50 Perioden zulässt) (Beginn des Übergangs), um die Beziehung zwischen dem ursprünglichen Y und dem vom Benutzer vorgeschlagenen X zu behandeln, um mehr zu erreichen Untersuchen Sie die Wirkung von X vollständig, als akzeptieren Sie die vollständige Aufhebung von X.

Es folgt das Diagramm der tatsächlichen Geben Sie hier die Bildbeschreibung einAnpassungsprognose für diesen Ansatz und das identifizierte robuste Übertragungsfunktionsmodell. Geben Sie hier die Bildbeschreibung einmit Geben Sie hier die Bildbeschreibung einRestplot und Rest-ACF hierGeben Sie hier die Bildbeschreibung ein

Das endgültige Modell erfasst die Dynamik in bestimmten Verzögerungen des dynamischen Prädiktors sowie einige Impulse und eine angemessene Speicherstruktur.

Selbst die leistungsstärksten Analysepakete benötigen häufig eine Anleitung, wenn sie mit komplexen Datensätzen der realen Welt wie diesem umgehen, da nichts mit dem kreativen menschlichen Verstand vergleichbar ist.


Ich bin nur neugierig ... 1) Was war Ihre Analysefunktion und 2) Was war die Varianz der Fehlerserie (Ihr normalverteiltes Zufallsrauschen): AUTOBOX geliefert: Varianz = SOS / (n) .402675E-04 Angepasste Varianz = SOS / (nm) .443625E-04 Standardabweichung RMSE = SQRT (Adj Var) .666052E-02
IrishStat

Meine analytische Funktion ist T(λ)=C1+C2[erfc(λ0λ2σ)Exp(λ0λτ+σ22τ2)erfc(λ0λ2σ+σ2τ)] Wo, C1,C2,λ0,σ,τsind Parameter, die angepasst werden müssen Das Bild des Diagramms in meinem ursprünglichen Beitrag war einfach diese Funktion + normalverteiltes zufälliges Rauschen mit einem Standardwert von 0,1 (glaube ich). Die Daten, die ich mit Ihnen geteilt habe, waren echte Daten, und ich habe nicht die geringsten Nebel, was ihre Eigenschaften sind!
jm22b

3

Eine Technik besteht darin, alle Werte der x-Variablen auf die Standardabweichung der Daten davor und danach zu testen. Für eine echte Schrittfunktion ist die Summe dieser beiden an der Schrittposition minimal, und das Minimum sollte ein guter Startparameter für Ihre nichtlineare Funktion sein.

Hier ist eine grafische Darstellung Ihrer Originaldaten (schwarz), der Standardabweichung vor x (blau), nach x (rot) und der Summe der letzten beiden (grün).

Geben Sie hier die Bildbeschreibung ein


2

Ich erkenne, dass diese Frage alt ist. Aber ich wollte da draußen eine andere Methode werfen. Canny schrieb eine Arbeit (A Computational Approach to Edge Detection), in der er dieses Problem im zweidimensionalen Fall der Kantenerkennung in Bildern löste. Sie können die Zeitung lesen, wenn Sie möchten, aber um auf den Punkt zu kommen, können Sie eine sehr gute Annäherung an den Änderungspunkt erhalten, indem Sie Folgendes tun:

  1. Führen Sie die Faltung Ihres Signals mit der Ableitung des Gaußschen durch.

f(x)=xχ2ex2σ2

wo χ ist ein Skalierungsfaktor.

  1. Die Spitze der Antwort ist dort, wo der Änderungspunkt auftritt.

Geben Sie hier die Bildbeschreibung ein

In meiner Erfahrung mit dieser Methode habe ich festgestellt, dass die Auswahl der richtigen Skalierungsparameter schwierig ist. Aber es kann noch mehr Arbeit geben, die mir nicht bekannt ist.

Ich habe Cannys Artikel zusammengefasst und hier ein Beispiel gegeben .


Hallo, ich schätze die Antwort und die interessante Methode. Interessanter Blogbeitrag auch! Das Projekt, das diese Frage generierte, beinhaltete eine Bildverarbeitung, daher hatte ich damals ein wenig über die Erkennung kniffliger Kanten gelesen.
jm22b

0

Sie können Wavelet-transformierte Zeitreihen mit Kurzperiodentypen haar / db4 untersuchen . Ich habe keine Zeiger, sondern nur einige Suchbegriffe. Versuchen Sie "Wavelet Change Point Detection".

Es gibt mehrere R-Pakete auf Wavelets, siehe Zeitreihen-Aufgabenansicht: https://cran.r-project.org/web/views/TimeSeries.html

Hier finden Sie ein Beispiel: http://it.mathworks.com/help/wavelet/examples/detecting-discontinuities-and-breakdown-points.html?requestedDomain=www.mathworks.com

Zur Theorie siehe Mallat et Hwang-Artikel: "Singularitätserkennung und -verarbeitung mit Wavelets"

Siehe verwandte Antwort: Anwendung von Wavelets auf zeitreihenbasierte Anomalieerkennungsalgorithmen

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.