Du hast Fragen? Wir haben Antworten! - Bald findet unser nächster Tag der offenen Tür statt!

Logo site

Zeitreihe Python: Verarbeitung und Modellierung

-
3
 Minuten Lesezeit
-
zeitreihe python

Eine Zeitreihe ist eine Datentabelle, die die Entwicklung einer Variablen im Laufe der Zeit wiedergibt. In Python wird die Zeitreihe oft in Form einer Pandas-Reihe verarbeitet, die durch ein DateTime indiziert ist. Dieses Format ist sehr einfach zu verarbeiten und zu visualisieren.

Zeitreihen werden in vielen Bereichen wie z. B. der Astronomie und der Meteorologie verwendet, aber wahrscheinlich am häufigsten in der Wirtschaft. Man denke z. B. an die Aktienkurse von Unternehmen oder auch an die Entwicklung der Temperaturen im Laufe der Zeit.

Der ARMA-Prozess

AR

Eine erste Modellierung von Zeitreihen kann mithilfe des AR- oder Autoregressiven Modells erfolgen. Dieses Modell zielt darauf ab, den Wert unserer Zeitreihe zu einem Zeitpunkt t mithilfe einer Summe über die p vorherigen Zeitpunkte vorherzusagen.

mit:

  • Xt der Wert zu einem Zeitpunkt t
  • epsilon t der Fehler zu einem Zeitpunkt t
  • alpha i der Koeffizient, der mit Xt-i verbunden ist

MA

Der MA- oder Moving-Average-Prozess hingegen versucht, den Wert zu einem Zeitpunkt t aus den Fehlern der letzten q Zeitpunkte vorherzusagen.

Dabei gilt Folgendes:

  • Xt der Wert zu einem Zeitpunkt t
  • epsilon t der Fehler zu einem Zeitpunkt t
  • beta i der Koeffizient, der mit epsilon t-i verbunden ist

ARMA

Der ARMA-Prozess kombiniert einen AR- und einen MA-Prozess. Er wird als ARMA(p, q) bezeichnet. Die genaue mathematische Formel lautet wie folgt:

In der gleichen Schreibweise wie oben.

Auch wenn diese Formel erschreckend klingen mag, ist sie in Wirklichkeit sehr einfach zu verstehen.

Konkret bedeutet ein ARMA(1, 1)-Prozess Folgendes:

Grenzen des Modells

Dieses Modell ist zwar sehr einfach und liefert gute Ergebnisse, hat aber einige Einschränkungen. Zunächst einmal liefert dieses Modell nur gute Ergebnisse bei sogenannten stationären Zeitreihen, d. h. bei Zeitreihen, deren Mittelwert und Varianz konstant sind.

Außerdem ist es schwierig, die nächsten Werte für mehr als t + 1 vorherzusagen, da wir dann kein Feedback mehr über den Fehler unseres Modells für den MA-Teil haben.

Python-Studie

Erste Analyse

Um mit der Analyse der Zeitreihe zu beginnen, importieren wir die Pandas-Bibliothek und Matplotlib, die für die Visualisierung verwendet wird.

In dieser Befehlszeile sind neben dem Namen der Datei, die gelesen werden soll, die Argumente für die Funktion:

  • parse_dates: Dieses Argument teilt pandas mit, dass der Dataframe eine Datumsspalte enthält und dass diese die erste Spalte ist.
  • index_col: gibt an, dass der Index ebenfalls die erste Spalte ist.
  • squeeze: ermöglicht die Rückgabe einer Series und nicht eines Dataframes.

Um unsere Analyse zu beginnen, können wir unsere Zeitreihe ganz einfach mithilfe der Bibliothek matplotlib.pyplot visualisieren, indem wir die folgende Funktion verwenden:

Mithilfe dieser Funktion erhältst du ein Diagramm, das die Entwicklung unserer Variable im Laufe der Zeit zeigt.

power bi lizenz

Stationaritätstest

Anschließend wird ein Stationaritätstest durchgeführt. Der Dickey-Fuller-Test liefert schnell gute Ergebnisse und ist in Python bereits in der Bibliothek Statsmodels implementiert.

Indem wir die Funktion importieren und sie wie folgt verwenden, können wir feststellen, ob unsere Zeitreihe durch einen ARMA-Prozess modelliert werden kann:

Dieser Code-Schnipsel ruft den p-Wert des Dickey-Fuller-Tests für die Reihe ab. Dieser Wert gibt an, ob die Reihe als stationär angesehen werden kann. Normalerweise wird sie als stationär angesehen, wenn der Wert unter 0,05 liegt. Hier liegt unser p-Wert bei 0,053. Wir befinden uns also an der Grenze zur Stationarität, da die Varianz der Reihe nicht wirklich konstant ist, aber du wirst sehen, dass dies später kein Problem darstellt.

Modellierung

Dazu wird ein ARMA-Modell erstellt, dessen Parameter so angepasst werden müssen, dass sie der Zeitreihe so gut wie möglich entsprechen, was sich als schwierig erweisen kann.

Hier entsprechen die Begriffe p und q der ersten bzw. letzten Stelle des Arguments order der Funktion. Die am Ende hinzugefügte Methode fit dient dazu, das Modell zu trainieren, damit es seine Parameter allein bestimmt.

Mit der Methode summary können wir überprüfen, ob unser Modell gut ist:

Diese Tabelle mag beeindruckend erscheinen, ist aber in Wirklichkeit sehr einfach zu interpretieren. Die lila umrandete Spalte entspricht den Parametern des Modells und die blau umrandete Spalte gibt den p-Wert jedes Parameters an. Hier sieht man, dass die Parameter gut sind, denn der p-Wert ist immer kleiner als 0,05. Wenn das nicht der Fall ist, kann man p und q ändern, um unnötige Parameter zu entfernen.

So kannst die Ergebnisse aufrufen und ansehen:

In Rot ist unser Modell dargestellt, in Blau die tatsächlichen Werte:

Fazit

Zusammenfassend lässt sich sagen, dass wir unsere Zeitreihe modellieren konnten, aber unser Modell hat einige Einschränkungen, die wir weiter oben besprochen haben. Um nicht-stationäre Zeitreihen zu behandeln, können wir das ARIMA-Modell verwenden, das eine Differenzierung hinzufügt. Wenn unsere Reihe Saisonalität aufweist, d. h. Schwankungen in einem regelmäßigen Zeitintervall, solltest du eher das SARIMA-Modell verwenden. Diese Modelle und noch mehr werden in unserer Weiterbildung für Data Scientists behandelt.

DataScientest News

Melde Dich jetzt für unseren Newsletter an, um unsere Guides, Tutorials und die neuesten Entwicklungen im Bereich Data Science direkt per E-Mail zu erhalten.

Möchtest Du informiert bleiben?

Schreib uns Deine E-Mail-Adresse, damit wir Dir die neuesten Artikel zum Zeitpunkt der Veröffentlichung zusenden können!
icon newsletter

DataNews

Starte Deine Karriere im Bereich Data: Erhalte regelmäßig Insiderwissen und wertvolle Karrieretipps in Deinem Posteingang.