Ich habe einen linear ansteigenden Zeitreihendatensatz eines Sensors mit Wertebereichen zwischen 50 und 150. Ich habe einen einfachen linearen Regressionsalgorithmus implementiert , um eine Regressionslinie an solche Daten anzupassen, und ich sage das Datum voraus, an dem die Reihe erreicht werden würde 120.
Alles funktioniert gut, wenn sich die Serie nach oben bewegt. Es gibt jedoch Fälle, in denen der Sensor etwa 110 oder 115 erreicht und zurückgesetzt wird. in solchen Fällen würden die Werte beispielsweise bei 50 oder 60 von vorne beginnen.
Hier stelle ich Probleme mit der Regressionslinie fest, da sie sich nach unten bewegt und das alte Datum vorhersagt. Ich denke, ich sollte nur die Teilmenge der Daten berücksichtigen, von denen sie zuvor zurückgesetzt wurden. Ich versuche jedoch zu verstehen, ob Algorithmen verfügbar sind, die diesen Fall berücksichtigen.
Ich bin neu in der Datenwissenschaft und würde mich über Hinweise freuen, um mich weiterzuentwickeln.
Bearbeiten: Die Vorschläge von nfmcclure wurden angewendet
Vor dem Anwenden der Vorschläge
Unten ist der Schnappschuss von dem, was ich nach dem Aufteilen des Datensatzes, in dem das Zurücksetzen erfolgt, und die Steigung von zwei Sätzen erhalten habe.
Finden des Mittelwerts der beiden Steigungen und Zeichnen der Linie aus dem Mittelwert.
Ist das ok?
quelle
Antworten:
Ich dachte, dies sei ein interessantes Problem, also schrieb ich einen Beispieldatensatz und einen linearen Steigungsschätzer in R. Ich hoffe, es hilft Ihnen bei Ihrem Problem. Ich werde einige Annahmen treffen, die größte ist, dass Sie eine konstante Steigung schätzen möchten, die von einigen Segmenten in Ihren Daten angegeben wird. Eine andere Annahme, um die Blöcke linearer Daten zu trennen, ist, dass das natürliche "Zurücksetzen" gefunden wird, indem aufeinanderfolgende Unterschiede verglichen und solche gefunden werden, die X-Standardabweichungen unter dem Mittelwert liegen. (Ich habe 4 SDs gewählt, aber das kann geändert werden)
Hier ist eine grafische Darstellung der Daten, und der Code zum Generieren befindet sich unten.
Für den Anfang finden wir die Pausen und passen jeden Satz von y-Werten an und zeichnen die Steigungen auf.
Hier sind die Pisten: (3.309110, 4.419178, 3.292029, 4.531126, 3.675178, 4.294389)
Und wir können einfach den Mittelwert nehmen, um die erwartete Steigung zu finden (3.920168).
Bearbeiten: Vorhersagen, wann die Serie 120 erreicht
Mir wurde klar, dass ich die Vorhersage nicht beendet habe, wenn die Serie 120 erreicht. Wenn wir die Steigung auf m schätzen und zum Zeitpunkt t einen Reset auf einen Wert x (x <120) sehen, können wir vorhersagen, wie lange es dauern würde, bis die Serie erreicht ist 120 durch eine einfache Algebra.
Hier ist t die Zeit, die benötigt wird, um nach einem Zurücksetzen 120 zu erreichen, x ist das, worauf es zurückgesetzt wird, und m ist die geschätzte Steigung. Ich werde hier nicht einmal das Thema Einheiten ansprechen, aber es ist eine gute Praxis, sie auszuarbeiten und sicherzustellen, dass alles Sinn macht.
Bearbeiten: Erstellen der Beispieldaten
Die Beispieldaten bestehen aus 100 Punkten, zufälligem Rauschen mit einer Steigung von 4 (hoffentlich schätzen wir dies). Wenn die y-Werte einen Grenzwert erreichen, werden sie auf 50 zurückgesetzt. Der Grenzwert wird bei jedem Zurücksetzen zufällig zwischen 115 und 120 gewählt. Hier ist der R-Code zum Erstellen des Datensatzes.
quelle
Ihr Problem ist, dass die Zurücksetzungen nicht Teil Ihres linearen Modells sind. Sie müssen Ihre Daten entweder beim Zurücksetzen in verschiedene Fragmente schneiden, damit in jedem Fragment kein Zurücksetzen erfolgt, und Sie können jedem Fragment ein lineares Modell anpassen. Oder Sie können ein komplizierteres Modell erstellen, das das Zurücksetzen ermöglicht. In diesem Fall muss entweder der Zeitpunkt des Auftretens der Zurücksetzungen manuell in das Modell eingegeben werden, oder der Zeitpunkt des Zurücksetzens muss ein freier Parameter im Modell sein, der durch Anpassen des Modells an die Daten bestimmt wird.
quelle