Wie gehe ich mit Zeitreihen um, die sich in der Saisonalität oder in anderen Mustern ändern?

22

Hintergrund

Ich arbeite an einem Zeitreihendatensatz von Energiezählerständen. Die Länge der Serie variiert je nach Meter - für einige habe ich mehrere Jahre, für andere nur einige Monate usw. Viele zeigen eine signifikante Saisonalität und oft mehrere Schichten - innerhalb eines Tages, einer Woche oder eines Jahres.

Eines der Dinge, an denen ich gearbeitet habe, ist das Clustering dieser Zeitreihen. Meine Arbeit ist im Moment akademisch und während ich andere Analysen der Daten durchführe, habe ich ein spezifisches Ziel, ein Clustering durchzuführen.

Ich habe einige anfängliche Arbeiten durchgeführt, bei denen ich verschiedene Funktionen berechnet habe (Prozentsatz an Wochenenden im Vergleich zum Wochentag, Prozentsatz in verschiedenen Zeitblöcken usw.). Anschließend beschäftigte ich mich mit der Verwendung von Dynamic Time Warping (DTW), um den Abstand zwischen verschiedenen Serien und die Clusterbildung basierend auf den Unterschiedswerten zu ermitteln, und ich habe mehrere diesbezügliche Artikel gefunden.

Frage

Wird die Saisonalität in einer bestimmten Serie dazu führen, dass mein Clustering falsch ist? Und wenn ja, wie gehe ich damit um?

Ich befürchte, dass die von DTW erhaltenen Entfernungen in den Fällen, in denen sich das Muster in einer Zeitreihe geändert hat, irreführend sein könnten. Dies kann zu fehlerhaften Clustern führen.

Wenn das oben Genannte unklar ist, betrachten Sie diese Beispiele:

Beispiel 1

Ein Messgerät zeigt von Mitternacht bis 8 Uhr morgens niedrige Messwerte an. Die Messwerte steigen dann für die nächste Stunde stark an und bleiben von 9 Uhr morgens bis 17 Uhr morgens hoch. In der nächsten Stunde fallen sie dann stark ab und bleiben von 18 Uhr morgens bis Mitternacht niedrig. Das Messgerät setzt dieses Muster mehrere Monate lang jeden Tag fort, wechselt dann jedoch zu einem Muster, bei dem die Messwerte den ganzen Tag über konstant bleiben.

Beispiel 2

Ein Zähler zeigt ungefähr die gleiche Menge an Energie an, die jeden Monat verbraucht wird. Nach einigen Jahren ändert sich ein Muster, bei dem der Energieverbrauch in den Sommermonaten höher ist, bevor wieder die übliche Menge erreicht wird.

Mögliche Richtungen

  • Ich habe mich gefragt, ob ich weiterhin ganze Zeitreihen vergleichen kann, aber sie aufteilen und als separate Reihe betrachten kann, wenn sich das Muster erheblich ändert. Dazu müsste ich jedoch in der Lage sein, solche Änderungen zu erkennen. Außerdem weiß ich einfach nicht, ob dies ein geeigneter Weg ist oder ob ich mit den Daten arbeite.
  • Ich habe auch darüber nachgedacht, die Daten zu teilen und sie als mehrere separate Zeitreihen zu betrachten. Zum Beispiel könnte ich jede Tag / Meter-Kombination als separate Serie betrachten. Allerdings müsste ich dann ähnlich vorgehen, wenn ich die wöchentlichen / monatlichen / jährlichen Muster berücksichtigen möchte. Ich denke, das würde funktionieren, aber es ist möglicherweise ziemlich beschwerlich und ich würde es hassen, diesen Weg zu gehen, wenn es einen besseren Weg gibt, den ich vermisse.

Weitere Hinweise

Dies sind Dinge, die in Kommentaren auftauchen, oder Dinge, an die ich aufgrund von Kommentaren gedacht habe, die relevant sein könnten. Ich stelle sie hierher, damit die Leute nicht alles durchlesen müssen, um relevante Informationen zu erhalten.

  • Ich arbeite in Python, habe aber Probleme mit den Stellen, an denen R besser geeignet ist. Ich bin jedoch nicht unbedingt auf der Suche nach einer Python-Antwort - wenn jemand eine praktische Antwort darauf hat, was zu tun ist, finde ich die Implementierungsdetails gerne selbst heraus.
  • Ich arbeite viel an "grobem Entwurfscode" - ich habe einige DTW-Läufe durchgeführt, ich habe ein paar verschiedene Arten von Clustering durchgeführt usw. Ich glaube, ich verstehe weitgehend, in welche Richtung ich gehe und was ich tue. Die Frage, nach der ich wirklich suche, hängt davon ab, wie ich meine Daten verarbeite, bevor ich Entfernungen finde, Clustering durchführe usw. Angesichts dessen vermute ich, dass die Antwort dieselbe ist, unabhängig davon, ob die Entfernungen zwischen Serien über DTW oder eine einfachere euklidische Entfernung (ED) berechnet werden.
  • Ich fand diese Artikel besonders informativ zu Zeitreihen und DTW und sie können hilfreich sein, wenn Hintergrundinformationen zum Themenbereich benötigt werden: http://www.cs.ucr.edu/~eamonn/selected_publications.htm
Jo Douglass
quelle
+1 Sehr schöne Frage, und es ist toll, so viel Begeisterung zu sehen! Ich denke, Sie könnten Ihre Frage ein wenig präzisieren, so dass es für andere einladender ist, sie zu lesen und Ihnen dann eine Antwort zu geben.
Rubens
@ Rubens Danke! Ich werde es überarbeiten, wenn ich heute Abend zu Hause bin. Ich kann sehen, wo es nützlich wäre, weitere Informationen darüber aufzunehmen, wie ich zu diesem Punkt gekommen bin und warum. Ich hatte Angst, dass es zu lange wird, aber ich werde den Hintergrund herausfiltern und ein bisschen mehr hinterfragen, um zu vermeiden, dass es unleserlich wird.
Jo Douglass
Möglicherweise handelt es sich nicht um eine "reine Statistik" -Frage, sondern um eine reine Statistikantwort. Sie werden kämpfen, bis Sie in statistischen Begriffen darüber nachdenken können.
Spacedman
@Spacedman - Ich freue mich über Antworten auf die Art und Weise, wie Menschen sie am besten beantworten, mit dem Vorbehalt, dass ich weitere Fragen habe, wenn die Antwort viele Formeln oder Verweise auf statistische Konzepte enthält, die ich noch nicht verstehe.
Jo Douglass
Jo hast du die richtige Antwort auf deine Frage gefunden? Ich bin in der gleichen Situation und brauche Hilfe. Vielen Dank
LSola

Antworten:

14

Nachdem ich Ihre Frage gelesen hatte, wurde ich neugierig auf das Thema Zeitreihen-Clustering und Dynamic Time Warping (DTW) . Daher habe ich eine eingeschränkte Suche durchgeführt und (für mich) Grundkenntnisse und die folgenden IMHO- relevanten Referenzen (für Sie) gefunden. Ich hoffe, dass Sie dies nützlich finden, aber denken Sie daran, dass ich absichtlich Forschungsarbeiten übersprungen habe, da ich mich mehr für praktische Aspekte des Themas interessiert habe .

Ressourcen:

Aleksandr Blekh
quelle
1
Einige dieser Ressourcen habe ich mir angesehen - ich habe zum Beispiel eine modifizierte Version der Arbeit in den Punkten 2 und 4 implementiert -, also sind wir wahrscheinlich jetzt auf der gleichen Seite. Und die überwiegende Mehrheit von dem, was ich weiß, basiert auf Eamonn Keoghs Papieren oder Artikeln, die darauf basieren. Aber hier gibt es einige, die ich nicht gelesen habe, und die über das Clustern von Zeitreihen mit dem Fahrrad ist interessant - danke! Ich sehe nichts, das speziell auf meine Frage antwortet, aber mache Sie darauf aufmerksam, wenn ich beim Lesen etwas verpasst habe.
Jo Douglass
1
Auch wenn Sie das immer noch interessant finden, sind Keoghs Papiere wirklich eine Lektüre wert. Sie sind überraschend einfach zu lesen und recht praktisch, da sie sich auf die Verwendung vieler Datensätze konzentrieren und genügend Informationen enthalten, damit jemand alle Experimente neu erstellen kann. Das jüngste ist interessant und genau das habe ich durchgearbeitet, als ich von meiner Frage abgelehnt wurde. cs.ucr.edu/~eamonn/selected_publications.htm
Jo Douglass
1
@ JoDouglass: Gern geschehen! Ich hatte nicht die Absicht, Ihre Frage direkt zu beantworten (aufgrund meines begrenzten Wissens über das Thema), hoffte jedoch, dass dies hilfreich sein würde, was anscheinend der Fall ist. Vielen Dank für nette Kommentare und den Hinweis - ich werde in den Zeitungen stöbern und versuchen, eine bessere Vorstellung zu bekommen. Es gibt so viel zu lernen, dass es ein bisschen überwältigend ist.
Aleksandr Blekh
1
Überwältigend ist richtig, ich habe mich für eine Weile dafür eingesetzt, dass ich dieses Thema gewählt habe! Ich habe das Gefühl, dass ich dorthin komme - und es war wirklich interessant, etwas darüber zu lernen. Ich habe eine Reihe von Dingen als grobe Version von dem, was ich tun muss, und ich denke, es geht jetzt mehr darum, herauszufinden, wie meine Daten verarbeitet werden, bevor sie in meinen Modellen ausgeführt werden. Dieser Link zur Fahrradfreigabe ist für mich interessant, da ich zum ersten Mal seit dem Lesen der kürzlich von mir erwähnten Zeitung von Keogh eine Diskussion über die Mittelwertbildung von Zeitreihen gesehen habe.
Jo Douglass
1
@JoDouglass: Als ich "überwältigend" sagte, meinte ich die gesamte Data-Science-Domäne (einschließlich AI / ML und Statistik, speziell). Ich bin noch zu finden Ressource , die präsentiert eine High-Level - Diskussion verschiedenen Ansätze und / oder Methoden wie Themen , integrierten in einen umfassenden , noch geizig , Rahmen .
Aleksandr Blekh
4

Wenn Sie nur nach saisonalen Mustern suchen möchten, untersuchen Sie die Autokorrelation . Wenn Sie nach einem Modell suchen, das saisonale Muster lernt und daraus Prognosen erstellt, ist Holt-Winters ein guter Anfang, und ARIMA ist eine gute Lösung . Hier [pdf] ist das Tutorial, das mich auf den Weg gebracht hat.

TheGrimmScientist
quelle
Die Arbeit ist (vorerst) akademisch und nicht rein praktisch. Möglicherweise mache ich einige Prognosen sehr spät oder in Zukunft, aber ich bin mehr daran interessiert, die vergangenen Daten für den Moment zu untersuchen. Das Clustering ist ein Ziel an und für sich sowie einige Ideen, die ich über diesen Punkt hinaus erforschen möchte.
Jo Douglass
Entschuldigung, drücken Sie vorzeitig die Eingabetaste. Ich habe mich bis zu einem gewissen Grad mit Autokorrelation befasst und sie vor einiger Zeit auf einer Teilmenge meiner Daten ausgeführt, aber mir war nicht wirklich klar, was ich daraus machen konnte. Die Daten sind ziemlich laut. Die Saisonalitätsmuster sind in der Visualisierung manchmal ziemlich offensichtlich, aber in ihren Timings ungenau - daher suche ich möglicherweise nach ähnlichen Mustern, aber nicht nach einem schönen, gleichmäßigen Zeitplan. Mir wurde gesagt, dass Autokorrelation bei solchen Daten wahrscheinlich problematisch ist, aber ich bin froh, einen anderen Blick darauf zu werfen, ob darin ein Wert enthalten ist. Ich möchte nicht nur Saisonalität finden, sondern verstehen, dass es ein Ziel ist.
Jo Douglass
Arbeiten Sie dieses Tutorial mindestens bis einschließlich 2.5 durch. Es verwendet R, was besonders gut für Ihr akademisches Umfeld ist. Es wird Ihnen Autokorrelation beibringen, die genau nach dem klingt, wonach Sie suchen (kann nicht sagen, ob es nicht passt, weil Sie nicht wussten, wonach Sie suchen, oder die Daten tatsächlich zu laut sind). Wenn es um Rauschen geht, ist die exponentielle Glättung eine Möglichkeit, die im Rahmen des Holt-Winter-Modells vermittelt wird. Auch wenn Ihnen all dies keine Antwort gibt, wird dies Ihren nächsten Schritt klarer machen.
TheGrimmScientist
Ich habe das Tutorial durchgelesen, aber es geht meistens über Dinge, die ich bereits kenne. Eigentlich arbeite ich in Python und bin ein bisschen zu weit in Sachen, um auf R umzusteigen, obwohl ich vorgehabt habe, irgendwann nach RPY zu greifen, falls es einige Dinge gibt, die ich in keiner Python-Bibliothek finden könnte. Ich habe meine Frage für den Fall, dass sie hilft, umgeschrieben. Wie ich bereits sagte, ist das Clustering ein Ziel an und für sich. Ich suche nicht nach einer ganz anderen Richtung. Ich beantworte meine Frage nicht wirklich.
Jo Douglass