Schritte in Zeitreihen erkennen


8

Ich habe ein Bild der Zeitreihe angehängt, über die ich spreche. Die Oberseite ist die Originalserie, die Unterseite ist die differenzierte Serie.

Jeder Datenpunkt ist ein 5-Minuten-Durchschnittswert von einem Dehnungsmessstreifen. Dieser Dehnungsmessstreifen wird an einer Maschine angebracht. Die lauten Bereiche entsprechen Bereichen, in denen die Maschine eingeschaltet ist, die sauberen Bereiche sind Bereiche, in denen die Maschine ausgeschaltet ist. Wenn Sie sich den rot eingekreisten Bereich ansehen, gibt es anomale Schritte in der Anzeige, die ich automatisch erkennen möchte.

Ich bin völlig ratlos darüber, wie ich das schaffen könnte - irgendwelche Ideen?

Geben Sie hier die Bildbeschreibung ein


Was sind anomale Schritte? Ist die Maschine ausgeschaltet? Ich konnte ähnliche Muster im roten Kreis im anderen Teil der Serie sehen? Habe ich etwas in der Handlung verpasst?
Vinux

Das scheint schwierig zu sein. Mein erster Gedanke: Modellieren Sie den (versteckten) Ein / Aus-Zustand durch eine Markov-Kette. Das Phänomen, das Sie erkennen möchten, ist das Auftreten einiger wichtiger Werte in der differenzierten Reihe, wenn die Maschine ausgeschaltet ist. Wenn Sie also zu jedem Zeitpunkt die Wahrscheinlichkeit berechnen können, dass die Maschine ausgeschaltet ist, können Sie sie möglicherweise als " wichtige Werte bei hoher Ausschaltwahrscheinlichkeit ".
Elvis

Ich hatte einen zweiten Gedanken. Ich werde es posten ...
Elvis

Antworten:


14

Es scheint, dass Sie innerhalb von Intervallen relativer Ruhe nach Spitzen suchen . "Relativ" bedeutet im Vergleich zu typischen Werten in der Nähe, was darauf hindeutet, die Reihe zu glätten . Eine robuste Glätte ist gerade deshalb wünschenswert, weil sie nicht durch einige lokale Spitzen beeinflusst werden sollte. "Ruhig" bedeutet, dass die Variation um diese Glätte gering ist. Auch hier ist eine robuste Schätzung der lokalen Variation wünschenswert. Schließlich wäre eine "Spitze" ein großes Residuum als Vielfaches der lokalen Variation.

Um dieses Rezept zu implementieren , müssen wir auswählen, (a) wie nahe "in der Nähe" bedeutet, (b) ein Rezept zum Glätten und (c) ein Rezept zum Finden lokaler Variationen. Möglicherweise müssen Sie mit (a) experimentieren, also machen wir es zu einem leicht steuerbaren Parameter. Gute, leicht verfügbare Auswahlmöglichkeiten für (b) und (c) sind Lowess bzw. IQR . Hier ist eine RImplementierung:

library(zoo)                      # For the local (moving window) IQR
f <- function(x, width=7) {       # width = size of moving window in time steps
    w <- width / length(x)
    y <- lowess(x, f=w)           # The smooth
    r <- zoo(x - y$y)             # Its residuals, structured for the next step
    z <- rollapply(r, width, IQR) # The running estimate of variability
    r/z                           # The diagnostic series: residuals scaled by IQRs
}

Betrachten Sie als Beispiel für die Verwendung diese simulierten Daten, bei denen zwei aufeinanderfolgende Spitzen zu einer Ruheperiode hinzugefügt werden (zwei in einer Reihe sollten schwerer zu erkennen sein als eine isolierte Spitze):

> x <- c(rnorm(192, mean=0, sd=1), rnorm(96, mean=0, sd=0.1), rnorm(192, mean=0, sd=1))
> x[240:241] <- c(1,-1) # Add a local spike
> plot(x)

Simulierte Daten

Hier ist das diagnostische Diagramm:

> u <- f(x)
> plot(u)

Diagnoseplot

Trotz des Rauschens in den Originaldaten erkennt dieses Diagramm die (relativ kleinen) Spitzen in der Mitte auf wunderbare Weise. Automatisieren Sie die Erkennung, indem Sie f(x)nach größeren Werten suchen (größer als etwa 5 im absoluten Wert: Experimentieren Sie, um herauszufinden, was mit Probendaten am besten funktioniert).

> spikes <- u[abs(u) >= 5]
      240       241       273 
 9.274959 -9.586756  6.319956

Die falsche Erkennung zum Zeitpunkt 273 war ein zufälliger lokaler Ausreißer. Sie können den Test verfeinern , um (die meisten) derartigen Störwerte auszuschließen, indem Sie ändern f, um nach gleichzeitig hohen Werten der Diagnose r/zund niedrigen Werten des laufenden IQR zu suchen z. Obwohl die Diagnose eine universelle (einheitlose) Skala und Interpretation hat, hängt die Bedeutung eines "niedrigen" IQR von den Einheiten der Daten ab und muss aus Erfahrung bestimmt werden.


Der letzte Absatz basierte auf simulierten Daten, die den hier gezeigten ähnlich, aber nicht genau identisch waren. In diesem diagnostischen Diagramm ist klar, dass es andere Störwerte bis zu einer Größe von etwa 7,5 gibt und die beiden Spitzen Werte um 14 haben.
whuber

Schöne Antwort - das sieht vielversprechend aus. Vielen Dank. Ich werde später mit meinen Ergebnissen auf Sie zurückkommen.
Mohamedmoussa

Nur eine kurze Nachverfolgung - ich habe etwas Ähnliches getan wie Sie, aber ich hatte Zugriff auf die Standardabweichung der Daten innerhalb jedes Datenpunkts (dh innerhalb jedes Zeitraums von 5 Minuten). Ich habe mich durch die geglättete sexuell übertragbare Krankheit geteilt und einige ziemlich gute Ergebnisse erzielt.
Mohamedmoussa

wow, das habe ich verpasst! (+1!)
Elvis

3

Hier ist ein Zwei-Cent-Vorschlag.

XtΔ>0t

a(Δ,t)=12Δ+1|Xt|.

Δ=50a(Δ,t)

t|Xt|>αa(Δ,t)α,ΔΔ=50α=4

ta(δ,t)>αa(Δ,t)δΔδ=10Δ=100α


Ist es möglich, einen R-Code zu schreiben, um dies zu implementieren? Vielen Dank!
user9292
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.