Gerne beraten wir Sie auch telefonisch & geben Ihnen eine kostenfreie persönliche Auskunft zu Ihrem Projekt.

X

Zeitreihenanalyse für Dummies in R – der ultimative Guide!

Zeitreihenanalyse für Dummies in R – der ultimative Guide!

Was haben selbst-fahrende Autos, „Smart Homes“ und die Börse gemeinsam? Richtig, es fallen im Verlauf der Zeit große Mengen an Daten an, die allesamt mit einer Zeitkomponente versehen sind. Daten mit einer Zeitkomponente nennt man auch Zeitreihe (Time Series), die Analyse dieser Daten entsprechend Zeitreihenanalyse. In der digitalisierten Welt werden Kenntnisse in diesen Bereichen immer wichtiger. Wir möchten diesem Guide deshalb die wichtigsten Grundlagen der Zeitreihenanalyse vermitteln. Unser Tutorial ist dabei anhand eines Beispiels verständlich erklärt – also quasi „Zeitreihenanalyse für Dummies“!

Dieser Artikel beantwortet folgende Fragen:

  • Was ist eine Zeitreihe?
  • Wie geht man bei der Analyse von Zeitreihen vor?
  • Wie kann man zukünftige Werte einer Zeitreihe vorhersagen?

Einführung: Was ist eine Zeitreihe?

Am häufigsten ist eine Zeitreihe (oftmals auch „Time Series“) eine Sequenz von Datenpunkten, die zu aufeinanderfolgenden, gleich großen Zeitpunkten erfasst wird (zum Beispiel jede Sekunde, jeden Tag oder jeden Monat). Die Analyse von Zeitreihen ist aufgrund des industriellen Bedarfs, insbesondere der Prognose von Nachfrage, Umsatz und Angebot von kommerzieller Bedeutung. Andere Beispiele für Zeitreihen sind die Höhe der Meeresgezeiten, die Anzahl der Sonnenflecken und der tägliche Schlusswert des Dow Jones Industrial Average.

Zeitreihenanalyse für Dummies – die wichtigsten Schritte

Wie in einem der vorherigen Tutorials über die Poisson-Regression [Link mit Haupt-KW vom Poisson-Regression-Artikel hier dann einfügen (ist noch nicht online)] wird in diesem Guide wieder ein Standard-R-Datensatz verwendet. Hierzu muss man zunächst das R-Paket „datasets“ importieren:

require(datasets)

Für diesen Guide werden wir den „USAccDeaths“ Datensatz verwenden. Dieser Datensatz beschreibt die Anzahl der Verkäufe von Staubsaugern einer Firma in den USA von 1973 bis 1978. Wie so oft in der Datenanalyse beginnen wir mit einer Begutachtung der Time Series:

show(USAccDeaths)

Beispiel Datensatz für eine Zeitreihenanalyse
Der aus 72 Punkten bestehende Datensatz, welcher Todesfälle durch Unfall in den USA beschreibt

Für die Zeitreihenanalyse ist es hilfreich, den Datensatz in einer R-Variable abzuspeichern. Das erreichen wir mittels

time_series = USAccDeaths

Grafische Analyse der Zeitreihe

Der in Abbildung 1 dargestellte Datensatz ist ziemlich unübersichtlich. Wir empfehlen daher in der Regel Zeitreihen über Liniendiagramme darzustellen. So sind Zusammenhänge (Trends und Saisonalitäten) häufig viel schneller zu erkennen. Dies erreichen wir mit dem R-Befehl

plot.ts(time_series)

Grafische Darstellung für eine Zeitreihenanalyse
Grafische Darstellung der USAccDeaths-Zeitreihe (time series)

Der Graph ist bereits vielversprechend! Man kann schon erkennen, dass R die Zeitreihe richtig interpretiert, und auf der x-Achse die Jahreszahlen abträgt.

Komponenten einer Zeitreihe

Bevor der Plot genauer betrachtet wird, behandeln wir zunächst ein wenig Hintergrundwissen. Generell bestehen Zeitreihen aus den folgenden Komponenten:

  • Trend, also wie entwickeln sich die Staubsaugerverkäufe „in der Tendenz“?
  • Saisonale Komponenten: gibt es wiederkehrende Schwankungen in den Verkäufen, z.B. systematisch weniger Staubsaugerverkäufe zu Anfang eines Jahres?
  • Fluktuationen (Zufällige Schwankungen): Möglicherweise werden z.B. zufällig und unsystematisch in vielen Haushalten neue Staubsauger gekauft
Trends, saisonale Schwankungen und weißes Rauschen bei einer Zeitreihe
Eine Zeitreihe (Time Series) lässt sich aufteilen in Trend, saisonale (also wiederkehrende) Schwankungen sowie weißes Rauschen

Was kann man nun im Plot genau erkennen? Scheinbar tritt immer zu Jahresbeginn ein Minimum auf (rote Kreise in der Abbildung oben). Dieses Phänomen ist, wie besprochen, Saisonalität. Wie man Saisonalität modelliert, ist zum Beispiel hier beschrieben. Abgesehen von diesen „groben“ Schwankungen gibt es auch „feinere“ Schwankungen (blaue Kreise in der Abbildung oben). Dies sind sogenannte Fluktuationen oder „weißes Rauschen“.

In R gibt es eine Funktion, mit deren Hilfe man Zeitreihen in die drei Komponenten Trend, Saisonalität und zufällige Fluktuationen aufteilen kann:

time_series_components <- decompose(time_series)

Der Rückgabewert time_series_components dieser Funktion enthält eine Liste, welcher verschiedene Komponenten enthält. Ein Plot dieser Liste zeigt Folgendes:

plot(time_series_components)

decompose Befehl für Zeitreihe in R
Plot des R „decompose“-Befehls, man erkennt schön die Trend-, saisonale- und Zufallskomponente

Die erste Zeile des Plots trägt zunächst die ursprüngliche Zeitreihe ab („observed“). In der zweiten Zeile („trend“) sieht man, wie die Verkäufe im Trend erst nach unten entwickeln und sich gegen Ende leicht erholen. In dieser Darstellung sind also saisonale und zufällige Komponenten „herausgerechnet“, diese finden sich in den Zeilen drei und vier des Plots („seasonal“ und „random“).

Zeitreihenanalyse für Dummies – Modellierungsverfahren

In vielen Business-Anwendungen mit Zeitreihen ist die Vorhersage ein essenzieller Bestandteil. Diese wird im Folgenden besprochen. Es wird wieder die Zeitreihe von Staubsaugerverkäufen benutzt:

time_series_vorhersage <- HoltWinters(time_series, alpha=0.1, beta=FALSE, gamma=FALSE)

Wie man sieht, wird die Methode von Holt-Winters (genauere Informationen über diese Vorhersagemethode finden sich hier) benutzt. Diese Methode ist in R bereits eingebaut. Wieder können wir das Ganze plotten:

time_series_vorhersage

Vorhersage für Zeitreihe (Time Series) in R
Zeitreihe von Vorhersagen. Jeder Punkt auf der roten Linie wurde berechnet auf Basis von den tatsächlichen Werten VOR dem jeweiligen Zeitpunkt, also Januar 1976 zB auf Basis der Werte bis Dezember 1975.

Der Plot zeigt zu jedem Zeitpunkt, was das Modell vorhergesagt hätte (auf Basis der Zeitreihe bis exakt VOR diesem Zeitpunkt).

Wie kommen nun Vorhersagen zustande? Um die Vorhersagen in R zu berechnen, benötigen wir noch die Bibliothek forecast. Falls diese nicht auf Ihrem System installiert ist, können Sie diese mittels install.packages(„forecast“) installieren.

library("forecast")

Jetzt können wir die Vorhersagen in R berechnen.

forecast:::forecast.HoltWinters(time_series, h=8)

Der Parameter h gibt hierbei die Anzahl der Zeitpunkte an, für die Vorhersagen gemacht werden (hier also 8).

Die Ausgabe hiervon lautet dann:

         Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
Jan 1979       8884.955 7663.197 10106.71 7016.438 10753.47
Feb 1979       8884.955 7657.103 10112.81 7007.118 10762.79
Mar 1979       8884.955 7651.040 10118.87 6997.845 10772.06
Apr 1979       8884.955 7645.006 10124.90 6988.617 10781.29
May 1979       8884.955 7639.002 10130.91 6979.434 10790.48
Jun 1979       8884.955 7633.026 10136.88 6970.294 10799.62
Jul 1979       8884.955 7627.078 10142.83 6961.199 10808.71
Aug 1979       8884.955 7621.159 10148.75 6952.146 10817.76

Zur Erinnerung: Unsere ursprüngliche Zeitreihe ging nur bis Dezember 1978. Hier sieht man also Vorhersagen für 8 Monate. Die hinteren Spalten geben sogenannte Konfidenzintervalle an – zum Beispiel ist im Januar 1979 der wahre Wert mit 95% Sicherheit zwischen 7016 und 10753 verkauften Staubsaugern.

Fazit

Die Zeitreihenanalyse (Time Series Analysis) gewinnt in Zeiten von Big Data an Bedeutung und ist ein nützliches Tool in der statistischen Werkzeugkiste. Eine Zeitreihe enthält immer eine Zeitkomponente und lässt sich in Trend, Saisonalität und Zufallskomponente aufteilen. Es gibt verschiedene Vorhersagemodelle wie zum Beispiel die Methode von Holt-Winters, mit deren Hilfe zukünftige Werte vorhergesagt werden können.

Falls Sie weitere Fragen haben oder Hilfe bei Ihrem persönlichen Data-Mining-Projekt benötigen, können wir Ihnen jederzeit kompetent weiterhelfen.