Datenanalyse mit R - So erstellen Sie interaktive Prognoseplots!

15. Juni 2020 von Thomas Bierhance

Was haben selbstfahrende Autos, „Smart Homes“ und die Börse gemeinsam? Richtig, es fallen im Verlauf der Zeit große Datenmengen an, die mit einer Zeitkomponente versehen sind.

 

Datenanalyse mit R - Interaktive Prognoseplots

 

In der digitalisierten Welt werden Kenntnisse in der Datenanalyse und Visualisierung der anfallenden Datenmengen immer wichtiger. So verschaffen sich Unternehmen Wettbewerbsvorteile, weil sie Einblicke in die Interessen, das Kaufverhalten und das Risikopotenzial ihrer Kunden erhalten. Aus diesen Erkenntnissen werden beispielsweise mit verschiedenen Prognosetools Vorhersagen getroffen, wie sich das Kundenverhalten künftig entwickeln wird. Auch die Erkenntnisse und Vorhersagen über den Klimawandel entstammen der Sammlung und Auswertung großer Datenmengen.

Die Datenanalyse und Visualisierung großer Datenmengen stellt für viele Unternehmen und Institutionen eine große Herausforderung dar.

Datenanalyse mit R

R ist eine speziell für statistische Anwendungen entwickelte Programmiersprache. Ihre Kernfunktionen liegen in der statistischen Auswertung von Daten.

Der australische Statistiker Rob Hyndman, entwickelte das Paket „forecast“, welches die Möglichkeit bietet, Prognosen für Zeitreihen zu erstellen.

Neben den verschiedenen Werkzeugen und Methoden zur Analyse von Zeitreihen, erweitert es das Paket ggplot2 für Datenvisualisierungen um die Möglichkeit, Prognoseobjekte mit Autoplot zu visualisieren. Hier werden mit wenig Code äußerst gute Ergebnisse erzielt. Allerdings werden keine interaktiven Funktionen bereitgestellt.

Im nachfolgenden Beispiel wird eine 3-Jahres-Prognose für den klassischen Datensatz mit Flugpassagierzahlen von Box & Jenkins erstellt.

Das Beispiel zeigt, wie:

  • Sie eine Prognose mit interaktiven Funktionen wie Zoomen, Schwenken und Mouseover-Informationen zeichnen,
  • 80% - und 95% -Intervall-Vorhersagen in die Grafik aufgenommen werden und
  • ein JavaScript-Formatierungsprogramm geschrieben wird, um die Legende zu optimieren.

So wird später das Ergebnis aussehen:

 

Forecast monthly airline passengers

Forecast monthly airline passengers

 

Verwenden von Autoplot für Prognoseobjekte

Betrachten wir zunächst die Ergebnisse der grundlegenden Autoplot-Funktion für Vorhersageobjekte. Das Erstellen einer 3-Jahres-Prognose für den Datensatz und das Darstellen des Ergebnisses ist mit drei Codezeilen sehr einfach.

 

Simple code that forecasts and plots the air passenger time series

Simple code that forecasts and plots the air passenger time series

 

Autoplot of a forecast object

Autoplot of a forecast object

 

Auf dem obigen Bild sehen Sie die aktuellen Zeitreihen in schwarz und die Prognose in blau. Die Vorhersageintervalle (80% und 95%) werden zusätzlich als blaue Bereiche angezeigt. Im ersten Schritt erreichen Sie mit diesen drei Codezeilen ein gutes Ergebnis, welches im nächsten Schritt durch interaktive Funktionalität weiter verbessern wird.

Verwenden Sie das Paket dygraphs für Vorhersageobjekte

Mit der schnellen und flexiblen Open-Source JavaScript-Bibliothek dygraphs werden interaktive Diagramme erstellt, die beispielsweise die Möglichkeit bieten, die Werte zu zoomen oder hervorzuheben.

Um die Zeitreihen vom Prognoseobjekt anzuzeigen, werden die Codezeilen des obigen Beispiels modifiziert bzw. um eine Zeile ergänzt.

 

Simply dygraph for a forecast object

Simply dygraph for a forecast object

 

Basic dygraph showing aktuals and point forecast

Basic dygraph showing aktuals and point forecast

 

Allerdings fehlen hier noch die Vorhersageintervalle. Um dies zu beheben, wird in dygraphs eine Zeitreihe mit einem sogenannten Fehlerbalken aufgezeichnet. dygraphs unterstützt ausschließlich einen Fehlerbalken pro Zeitreihe. Aus diesem Grund wird für jedes Intervall eine eigene Zeitreihe hinzugefügt.

 

Adding error bars for the interval forecasts

Adding error bars for the interval forecasts

 

Dygraph showing actuals, point and interval forecasts

Dygraph showing actuals, point and interval forecasts

 

Wird der Mauszeiger über das Diagramm gehalten, werden nun ausschließlich die Werte der Punktvorhersage in der Legende angezeigt (569,93 in der obigen Abbildung). Das entsprechende Intervall fehlt noch.

Schreiben eines benutzerdefinierten Formatters für Vorhersageintervalle

Das Format der Werte in der dygraphs-Legende überschreiben Sie mit einer benutzerdefinierten JavaScript-Funktion, die den valueFormatter-Parameter der dyAxis-Funktion verwendet.

Diese JavaScript-Funktion wird beim Mouse-Over für jede Zeitreihe aufgerufen und umfasst sechs Parameter:

  • num: Wert auf der Mouse-Over-Position der aktuellen Zeitreihe
  • opts: Optionswerte des aktuellen Dygraphen
  • seriesName: Name der aktuellen Zeitreihe
  • g: das eigentliche Dygraph-Objekt
  • row: Zeilenindex der Rohdaten für die aktuelle Mouseover-Position
  • col: Spaltenindex der Rohdaten für die aktuelle Zeitreihe

Der Wert num, der an die Funktion übergeben wird, enthält keine Intervallwerte. Es besteht die Möglichkeit, den Wert für den angegebenen Zeilen- und Spaltenindex aus dem dygraph-Objekt mit der Funktion getValue abzurufen. Nun erhält der Wert das Vorhersageintervall, welches anschließend nach Belieben formatiert werden kann.

Wenn Sie die integrierte Funktion Dygraph.numberValueFormatter zum Formatieren und Übergeben der Optionswerte wiederverwenden, werden Optionen wie beispielsweise die Steuerung der Anzahl der anzuzeigenden Stellen weiterhin unterstützt (siehe z. B. optiondigitsAfterDecimal in dyOptions).

Zu beachten ist, dass der von dygraphs zurückgegebene Wert ebenso für Zeitreihen mit einem einzelnen Wert, wie die Zeitreihen mit historischen Ist-Daten, ein Vektor der Länge drei ist.

Deshalb wird der Formatter um eine Überprüfung ergänzt. Diese ermittelt zunächst, ob sich der obere und der untere Wert unterscheiden, bevor der Vektor als Intervall formatiert wird.

 

Custom JavaScript for formatting values in the legend

Custom JavaScript for formatting values in the legend

 

Darüber hinaus werden dem Diagramm folgende zusätzliche Optimierungen hinzugefügt:

  • eine dedizierte Zeitreihe für die Punktvorhersage, um die Intervallvorhersagen von der Punktvorhersage in der Legende zu trennen
  • Durch die Verwendung der Option labelsSeparateLines in der dyLegend-Funktion wird jedes Label in eine separate Zeile gesetzt, wodurch das Ergebnis besser lesbar wird
  • Mit der dyRangeSelector-Funktion wird ein schöner Selektor am unteren Rand des Diagramms platziert
  • Reduzieren Sie die Anzahl der Stellen auf eins, indem Sie die Option digitsAfterDecimal verwenden
  • Ein wenig CSS hält die Legende halbtransparent, um das Diagramm nicht zu verdecken

 

Final code

Final code

Dygraph showing actuals, point and interval forecasts and custom legends

Dygraph showing actuals, point and interval forecasts and custom legends

 

Somit steht für die Datenanalyse und Prognose mit wenigen Handgriffen, ein interaktives Prognosetool zur Verfügung.

 

Weitere Informationen

Haben Sie Fragen rund um die Themen Datenanalyse mit R und interaktive Prognoseplots im Spezifischen oder Datenanalyse im Allgemeinen?

 

Schreiben Sie mir eine E-Mail, ich freue mich auf Ihre Kontaktaufnahme:

email thomas.bierhance@exxcellent.de

 

Erfahren Sie mehr über uns und unser Know-How und Softwareportfolio kennen unter:

bubble-chat-information-2-1www.eXXcellent.de/Softwareportfolio

bubble-chat-information-2-1www.eXXcellent.de/Know-How

Über den Autor

Als “Practice Lead for Data Science & AI” verantwortet Thomas Bierhance die Aktivitäten der eXXcellent solutions, um für ihre Kunden Mehrwerte und Nutzen aus Daten zu schaffen. Nach dem Studium der Informationswirtschaft am KIT war er als Entwickler, Berater und Manager tätig. Er beschäftigt sich seit über 20 Jahren mit Anwendungen des maschinellen Lernens und verbindet dabei Geschäft und Technik.

Tags: Alle Blogbeiträge, Methodik/Vorgehen, Projekte/Lösungen, Datenanalyse

Diesen Artikel teilen:


Newsletteranmeldung