Clustering von Zeitreihen

8

Ich habe viele Zeitreihen in diesem Format 1 Spalte, in der ich Datumsformat (d / m / Jahr) habe, und viele Spalten, die verschiedene Zeitreihen darstellen, wie hier:

DATE         TS1     TS2     TS3 ...
24/03/2003   0.00    0.00    ...
17/04/2003  -0.05    1.46
11/05/2003   0.46   -3.86
04/06/2003  -2.21   -1.08
28/06/2003  -1.18   -2.16
22/07/2003   0.00    0.23

Wie kann ich mit R die Zeitreihen gruppieren, die ähnliche Trends zeigen?

daveal81
quelle
3
Was ist in Ihrer Bewerbung ein Trend ?
Kardinal
4
Es gibt mindestens drei weitere Fragen zu diesem oder sehr ähnlichen Themen: stats.stackexchange.com/q/3331/1036 , stats.stackexchange.com/q/2777/1036 , stats.stackexchange.com/q/3238/1036 .
Andy W
Ein Trend in meiner Anwendung ist eine Gruppe von Kurven in einem Diagramm von TS mit ähnlicher Form, dh eine Gruppe von Kurven, die saisonale Trends zeigen, und eine andere, die einen langen Seeschwalben-Trend zeigt, ......
daveal81
Ja, dieses Thema [Link] stats.stackexchange.com/questions/3331/… fett code ist sehr ähnlich zu dem, was ich tun möchte
daveal81

Antworten:

6

Schritt 1

Führen Sie eine schnelle Fourier-Transformation für die Zeitreihendaten durch. Dadurch werden Ihre Zeitreihendaten in Mittelwert- und Frequenzkomponenten zerlegt, und Sie können Variablen für das Clustering verwenden, die keine starke Autokorrelation aufweisen, wie dies bei vielen rohen Zeitreihen der Fall ist.

Schritt 2

Wenn Zeitreihen einen reellen Wert haben, verwerfen Sie die zweite Hälfte der schnellen Fourier-Transformationselemente, da diese redundant sind.

Schritt 3

Trennen Sie den Real- und Imaginärteil jedes schnellen Fourier-Transformationselements.

Schritt 4

Führen Sie ein modellbasiertes Clustering für den Real- und Imaginärteil jedes Frequenzelements durch.

Schritt 5

Zeichnen Sie die Perzentile der Zeitreihen nach Cluster, um ihre Form zu untersuchen.

Alternativ können Sie die DC-Komponenten der schnellen Fourier-Transformation weglassen, um zu vermeiden, dass Ihre Cluster auf dem Mittelwert und stattdessen auf der durch die Fourier-Transformation definierten Reihe basieren, die die Form der Zeitreihe darstellt.

Sie möchten auch die Amplituden und Phasenwinkel aus der schnellen Fourier-Transformation berechnen, um die Verteilung von Zeitreihenspektren innerhalb von Clustern zu untersuchen. In dieser StackOverflow-Antwort erfahren Sie, wie Sie dies für Daten mit echtem Wert tun.

Sie können die Perzentile der Zeitreihenform auch nach Clustern darstellen, indem Sie die Fourier-Reihen aus den Amplituden und Phasenwinkeln berechnen (die resultierende Zeitreihenschätzung stimmt nicht perfekt mit der ursprünglichen Zeitreihe überein). Sie können die Perzentile der rohen Zeitreihendaten auch nach Cluster darstellen. Hier ist ein Beispiel für eine solche Darstellung, die aus einer harmonischen Analyse von NDVI-Daten hervorgegangen ist, die ich gerade heute durchgeführt habe:

1., 25., 50., 75. und 99. Perzentil von NDVI-Messungen auf Periodenebene durch Cluster, die aus modellbasiertem Clustering unter Verwendung des Mclust-Pakets in R abgeleitet wurden

Wenn Ihre Zeitreihen nicht stationär sind (dh Mittelwert und Varianzverschiebung über die Zeit), ist es möglicherweise besser, eine Wavelet-Transformation anstelle einer Fourier-Transformation zu verwenden. Sie würden dies auf Kosten von Informationen über Frequenzen tun, während Sie Informationen über den Standort erhalten.

Dreistes Gleichgewicht
quelle
Übrigens habe ich das heute gerade gemacht !!!
Dreistes Gleichgewicht
1
Könnten Sie einen Beispielcode für die Ausführung Ihrer Schritte bereitstellen?
Pocketfullofcheese
Hallo, @pocketfullofcheese. Ich muss es auf dem Remote-Desktop des Forschungszentrums finden, in dem ich als Stipendiat tätig war. Es kann ein bisschen dauern, aber ich habe es in meinen Rückstand aufgenommen.
Dreistes Gleichgewicht
Falls jemand meinen Kommentar oben sieht, konnte ich nicht auf diesen Code zugreifen, bevor ich den Zugriff auf den Remotedesktop verloren habe. Entschuldigen Sie.
Dreistes Gleichgewicht vor