CubeServ Blog
Bleiben Sie auf dem neuesten Stand, rund um das Data Driven Business mit Tools für Analytics von SAP & Co. und verpassen Sie keine Neuigkeiten, Downloads & Veranstaltungen.

Advanced Analytics mit R: Eine Übersicht

Die Programmiersprache R wurde bereits anfangs der 90er Jahre entwickelt. An Bedeutung gewonnen hat sie aber erst in den letzten zehn Jahren. Dies liegt zum einen am grossen Funktionsumfang und zum anderen an der Tatsache, dass Anwender nicht zwangsläufig umfangreiche Programmierkenntnisse haben müssen, um Advanced Analytics mit R erstellen zu können. 

In meinem letzten Blogbeitrag „Erste Schritte mit R“ haben wir uns umfassend mit den Grundlagen befasst. Sollten Sie den Artikel noch nicht gelesen haben, dann wäre jetzt ein guter Zeitpunkt – zum Beitrag gelangen Sie hier.

Denn heute werden wir tiefer in die Thematik eintauchen und uns mit Advanced Analytics mit R befassen, im Speziellen mit der graphischen Darstellung, der Regessionsanalyse und der Zeitreihenanalyse mit R.  

Lassen Sie uns beginnen.

focussed Analytics

Graphische Darstellung in R

Beginnen wir mit den Grundlagen und sehen wir uns die verschiedenen Diagrammarten an, die wir in R erstellen können. Obwohl das Erstellen von Diagrammen eine relativ einfache Aufgabe ist und man meinen könnte, dass es nicht zu den fortgeschrittenen Analysen gehört, ist es wichtig, die verschiedenen Diagrammarten zu kennen und zu wissen, wann und für welches Szenario sie verwendet werden sollten. Die Ergebnisse, die Sie so aus ein paar Codezeilen erzielen können, sind oft aussagekräftiger als so manch ausgeklügeltes Advanced Analytics.

ggplot2 – Your best Friend!

Unabhängig davon, welche Art von Diagrammen Sie in R erstellen möchten, ggplot2 sollte immer Ihre erste Wahl sein. Wenn es darum geht etwas darzustellen, dann ist es mit Abstand das von R-Programmierern am häufigsten verwendete Paket.

Schauen wir uns die verschiedenen Diagramme, die das ggplot2-Paket bietet, genauer an und finden heraus, für welche Anwendungen sie geeignet sind. Zu Demonstrationszwecken werden wir den berühmten Iris-Datensatz (Iris dataset) verwenden.

Also, R-Studio laden und loslegen!

				
					install.packages("tidyverse")
library(datasets)
data("iris")
				
			

1.      Balkendiagramme

Balkendiagramme sind die gängigste Art von Diagrammen, die im Analytics verwendet werden. Sie eignen sich dazu um Werte verschiedener Kategorien mit Hilfe von vertikalen Balken zu vergleichen. Die unterschiedlich hohen Balken machen den Vergleich sehr einfach. Hier ist ein Beispiel, das die Sepal-Länge verschiedener Arten zeigt.

				
					ggplot(data=iris, aes(x=Species, fill = Species)) + 
geom_bar() + 
  xlab("Species") +  
  ylab("Count") + 
  ggtitle("Bar plot of Sepal Length")
				
			
simple bar chart

2.      Histogramme

Histogramme sind den Balkendiagrammen sehr ähnlich. Sie werden verwendet, um fortlaufende Daten grafisch darzustellen und sie in bestimmte Bereiche zu gruppieren. Jeder Balken in einem Histogramm hat mehrere Bins mit unterschiedlichen Farben, welche die Häufigkeit jeder einzelnen Kategorie veranschaulichen. Unten sehen Sie ein Beispiel, wie Histogramme mit ggplot2 erstellt werden können.

				
					ggplot(data=iris, aes(x=Sepal.Width)) + 
  geom_histogram(binwidth=0.2, color="black", aes(fill=Species)) + 
  xlab("Sepal Width") + 
  ylab("Frequency") + 
  ggtitle("Histogram of Sepal Width")
				
			
example Histogram

3.      Box-Plot

Der Box-Plot stellt die gesamte Datenverteilung auf sehr kompakte Weise dar. Mit einer einzigen Box können Sie sowohl das obere und untere Quartil als auch etwaige Ausreißer sowie den Bereich der Datenverteilung anzeigen.

Möchten Sie wissen, wie man den Boxplot liest? Klicken Sie hier.

				
					ggplot(data=iris, aes(x=Species, y=Sepal.Length)) +
  geom_boxplot(aes(fill=Species)) + 
  ylab("Sepal Length") + ggtitle("Iris Boxplot")
				
			
example Box Plots

4.      Streudiagramme

Nicht zuletzt sind auch Streudiagramme sehr verbreitet und eignen sich zur Darstellung von Daten. Sie werden häufig von Datenwissenschaftlern verwendet, um eine vorhandene Korrelation zwischen einer Reihe von Variablen zu erkennen. Es werden dabei alle Punkte einer Variablen in ein Diagramm gestreut. Gibt es eine Korrelation zwischen ihnen, so wird diese ersichtlich.

				
					ggplot(data=iris, aes(x = Sepal.Length, y = Sepal.Width)) + geom_point(aes(color=Species, shape=Species)) +
  xlab("Sepal Length") +  ylab("Sepal Width") +
  ggtitle("Sepal Length-Width")
				
			
Example Scatter Plots

Regressionsanalyse in R

Bei der Regressionsanalyse handelt es sich um ein statistisches Analyseverfahren, bei der die Beziehung zwischen den Variablen eines Datensatzes ermittelt wird. Häufig wird die Beziehung zwischen den unabhängigen und abhängigen Variablen ermittelt – ist aber kein Muss. Dies ist eine weitere wichtige Funktion zur Durchführung von Advanced Analytics mit R.

Die Idee der Regressionsanalyse ist es, herauszufinden, wie sich die Variable ändern wird, wenn wir eine andere Variable ändern. Genau auf diese Weise werden Regressionsmodelle erstellt. Es gibt verschiedene Arten von Regressionsverfahren, die wir je nach Form der Regressionslinie und Art der beteiligten Variablen verwenden können:

  • Lineare Regression
  • Logistische Regression
  • Multinominale Logistische Regression
  • Ordinale Logistische Regression

Schauen wir uns die verschiedenen Regressionsarten und ihre Verwendung genauer an.

Analytics

1.      Lineare Regression

Die lineare Regression ist die einfachste Art der Regression und kann verwendet werden, wenn zwei Variablen eine lineare Beziehung aufweisen. Ausgehend von den Werten der beiden Variablen wird eine gerade Linie mit der folgenden Gleichung formuliert:

Y = ax + b

Die lineare Regression wird zur Vorhersage fortlaufender Werte verwendet, wobei Sie lediglich den Wert der unabhängigen Variablen angeben. Als Ergebnis erhalten Sie den Wert der abhängigen Variable (in diesem Fall y).

2.      Logistische Regression

Die logistische Regression wird angewandt, um die Vorhersage von Werten innerhalb eines bestimmten Bereichs zu ermitteln. Sie kann verwendet werden, wenn die Zielvariable kategorisch ist, z. B. zur Vorhersage eines Gewinners oder Verlierers anhand bestimmter Daten. Die folgende Gleichung wird bei der logistischen Regression verwendet.

3.      Multinomiale Logistische Regression

Wie der Name schon sagt, ist die multinomiale logistische Regression eine erweiterte Version der logistischen Regression. Der Unterschied zur einfachen logistischen Regression besteht darin, dass sie mehr als zwei kategoriale Variablen unterstützen kann. Ansonsten verwendet sie denselben Mechanismus wie die logistische Regression.

4.      Ordinale Logistische Regression

Auch hier handelt es sich um einen erweiterten Mechanismus der einfachen logistischen Regression, der zur Vorhersage von Werten auf verschiedenen Kategorie Levels verwendet wird, z. B. zur Vorhersage von Rangfolgen. Ein Anwendungsbeispiel für die ordinale logistische Regression wäre die klassische Restaurantbewertung.

Verwendung von Regression in R

Zur Demonstration werde ich ein logistisches Regressionsmodell in R erstellen.

Anwendungsfall: Wir wollen den Erfolg von Schülern in einer Prüfung anhand ihrer IQ-Werte vorhersagen.

Lassen Sie uns dafür einige zufällige IQ-Zahlen generieren, um unseren Datensatz zu erstellen.

				
					# Generate random IQ values with mean = 30 and sd =2
IQ <- rnorm(40, 30, 2)
 
# Sorting IQ level in ascending order
IQ <- sort(IQ)
				
			

Mithilfe von rnorm() haben wir eine Liste mit 40 IQ-Werten erstellt, die einen Mittelwert von 30 und einen STD von 2 haben.

Nun werden wir für 40 Schüler nach dem Zufallsprinzip Werte für bestanden/nicht bestanden als 0/1 erstellen und sie in einen Datenrahmen einfügen. Außerdem werden wir jeden von uns erstellten Wert mit einem IQ-Wert verknüpfen, damit unser Datenrahmen vollständig ist.

				
					# Generate vector with pass and fail values of 40 students
result <- c(0, 0, 0, 1, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 1, 1, 0, 0, 1, 0,
0, 0, 1, 0, 0, 1, 1, 0, 1, 1,
1, 1, 1, 0, 1, 1, 1, 1, 0, 1)
 
# Data Frame
df <- as.data.frame(cbind(IQ, result))
 
# Print data frame
print(df)
				
			
example table

Lassen Sie uns nun ein Regressionsmodell auf der Grundlage unseres Datensatzes anlegen und eine Kurve erstellen, um zu sehen, wie das Regressionsmodell auf diesem Datensatz abschneidet. Wir können die Funktion glm() verwenden, um ein Regressionsmodell zu erstellen und zu trainieren, und die Funktion curve(), um die Kurve auf der Grundlage der Vorhersage zu zeichnen.

				
					# Plotting IQ on x-axis and result on y-axis
plot(IQ, result, xlab = "IQ Level",
ylab = "Probability of Passing")
 
# Create a logistic model
g = glm(result~IQ, family=binomial, df)
 
# Create a curve based on prediction using the regression model
curve(predict(g, data.frame(IQ=x), type="resp"), add=TRUE)
 
# This Draws a set of points
# Based on fit to the regression model
points(IQ, fitted(g), pch=30)
				
			
regression model as graph
regression model as graph

Wenn Sie die Statistiken des logistischen Regressionsmodells weiter überprüfen möchten, können Sie dies mit der Funktion summary() von R (summary(g)) ausführen.

Zeitreihenanalyse in R

Die Zeitreihenanalyse gehört zu den wichtigsten Stärken von R. Python ist zwar auch für die Zeitreihenanalyse bekannt, aber viele Experten sind der Meinung, dass R insgesamt eine bessere Anwendungsumgebung bietet. Das Zeitreihenanalyse-Paket ist sehr umfassend und das Beste, was man sich für Advanced Analytics mit R wünschen kann.

In diesem Artikel werden wir die folgenden Methoden der Zeitreihenanalyse behandeln:

  • Naive Methode
  • Exponentielle Glättung
  • BATS and TBATS

Wir werden den in R vorhandenen Datensatz „Air Passengers“ verwenden, um Modelle für einen Validierungssatz und Prognosen für die Dauer des Validierungssatzes zu erstellen und schließlich den Mittleren Absoluten Prozentualen Fehler (Mean Absolute Percentage Error) ermitteln, um das Segment abzuschließen.

Initialisieren wir also die Daten zusammen mit dem Trainings- und Validierungsfenster, um zu beginnen.

				
					#  Time Series Forecast In R
install.packages("forecast")
install.packages("MLmetrics")
library(forecast)
library(MLmetrics)
data=AirPassengers
#Create samples
training=window(data, start = c(1949,1), end = c(1955,12))
validation=window(data, start = c(1956,1))
				
			

1.    Naive Methode

Wie der Name schon sagt, ist die naive Methode die einfachste aller Prognosemethoden. Sie basiert auf dem einfachen Prinzip „was wir heute beobachten, wird morgen die Prognose sein“. Die saisonale naive Methode ist eine etwas komplexere Variante, bei der der Beobachtungszeitraum dem Zeithorizont entspricht, mit dem wir arbeiten, z. B. Woche/Monat/Jahr.

Lassen Sie uns mit einer saisonalen naiven Prognose fortfahren.

				
					naive = snaive(training, h=length(validation))
MAPE(naive$mean, validation) * 100
				
			

Hier sehen wir einen MAPE-Wert von 27,05 %. Lassen Sie uns nun dieses Ergebnis grafisch darstellen.

MAPE-Wert = Mean Absolute Percentage Error

				
					plot(data, col="blue", xlab="Year", ylab="Passengers", main="Seasonal Naive Forecast", type='l')
lines(naive$mean, col="red", lwd=2)
				
			
plot forecast result naive forecast

Wie Sie sehen können, wird der Datensatz des letzten Jahres für den Validierungszeitraum einfach wiederholt. Kurzgesagt, das ist eine saisonale naive Prognose.

2.    Exponentielle Glättung

Die exponentielle Glättung bedeutet im Wesentlichen, dass die Beobachtungen weniger stark gewichtet werden. Wie bei gleitenden Durchschnitten erhalten die neuesten Beobachtungen ein höheres Gewicht, während die älteren allmählich an Gewicht verlieren.

Das Gute am Forecast-Paket ist, dass wir die optimalen exponentiellen Glättungsmodelle finden können, indem wir die Glättungsmethoden in die Struktur der Raummodelle einfügen.

				
					ets_model = ets(training, allow.multiplicative.trend = TRUE)
summary(ets_model)
				
			
summary ets model
summary ets model

Nun werden wir das geschätzte optimale Glättungsmodell auf unsere ETS-Prognose anwenden und sehen, wie es abschneidet.

				
					ets_forecast = forecast(ets_model, h=length(validation))
MAPE(ets_forecast$mean, validation) *100
				
			

Als Ergebnis erhalten wir einen MAPE von 12,6 %. Es ist offensichtlich, dass der Aufwärtstrend ein wenig gezählt wird.

graph ETS optimized model

3.    BATS and TBATS

Für Prozesse, die sehr komplexe Trends aufweisen, ist ETS oft nicht aussagekräftig genug. Manchmal gibt es sowohl eine wöchentliche als auch eine jährliche Saisonalität. In diesem Fall zeichnen sich BATS und TBATS aus, da sie mehrere Saisonalitäten gleichzeitig verarbeiten können.

Erstellen wir ein TBATS-Modell und machen wir eine Vorhersage.

				
					tbats_model = tbats(training)
tbats_forecast = forecast(tbats_model, h=length(validation))
MAPE(tbats_forecast$mean, validation) * 100

plot(data, col="blue", xlab="Year", ylab="Passengers", main="ETS Forecast", type='l')
lines(tbats_forecast$mean, col="red", lwd=2)
				
			
graph TBATS Forecast

Wie Sie sehen können, wird mit dieser Methode ein MAPE von 12,9 % erreicht.

FAZIT

Ich habe in diesem Blog einen Überblick über die Advanced Analytics in R gegeben. Neben den Darstellungsmöglichkeiten und verschiedenen Arten der Regressionsanalyse wurde auch die Zeitreihenanalyse in R behandelt. Zeitreihen sind jedoch ein ziemlich umfangreiches Thema und wir haben bisher nur an der Oberfläche gekratzt. Im nächsten Blog Beitrag werden wir uns deshalb intensiv damit zu beschäftigen. 

Bis dahin, viel Spaß mit R!

Newsletter abonnieren

Bleiben Sie auf dem neuesten Stand, rund um das Data Driven Business mit Tools für Analytics von SAP & Co. und verpassen Sie keine Neuigkeiten, Downloads & Veranstaltungen. 

Autor
Expert Team

Blog Artikel unserer Experten

R Programming

Erste Schritte mit R

Die Programmiersprache R gehört zu den beliebtesten Sprachen, wenn es um Data Science und statistische Analyse geht. Das liegt vor allem daran, dass R speziell für einfache statistische Kennzahlen und Datenanalysen entwickelt wurde. R wurde zwar in den frühen 90er Jahren entwickelt, aber erst mit dem Aufkommen der Data Science begann man, sich stark darauf zu konzentrieren.

circular-barplot-with-groups

Advanced Analytics mit SAP und R

Warum sich mit der SAP R-Integration beschäftigen? Die überwiegende Mehrheit der Unternehmen nutzt fortschrittliche Analysen mit R- und SAP-Tools, um zukünftige Ereignisse zu prognostizieren und datengestützte, fundierte Entscheidungen zu treffen. Mit diesem Blogbeitrag zeige ich die Vorteile und wesentlich Zusammenhänge auf.

Die Zeitdimension in der SAP Data Warehouse Cloud

Mit der Data Warehouse Cloud Version 2020.14 hat SAP die Einbindung von Zeitdimensionen ermöglicht. Warum ist die Zeitdimension so wichtig? Zuvor waren in den zu ladenden Daten für die SAP Data Warehouse Cloud viele Aggregationsebenen einer Datumsspalte erforderlich, z.B. für eine separate Spalte «Quartal» oder

SAP Data Warehouse Cloud – Erfahrungen beim Aufbau eines Datenmodells

Sie verwenden Einkaufsdaten in Ihrem Reporting?  Profitieren Sie von unserem kostenlosen Template!Sie benötigen weitere Daten?  Profitieren Sie von unserer Erfahrung!SAP Data Warehouse Cloud ermöglicht zentrale Datenbestände leicht und intuitiv zu erweitern. Einführung in die SAP Data Warehouse Cloud (DWC) Die SAP Datawarehouse Cloud Lösung ist

Advanced Analytics

Wie Business Analytics erfolgreich gestalten?

Business Analytics einfacher ✅ und effektiver ✅ zu gestalten, ist herausfordernd. Ich stelle mit dieser Blog(serie) meine Lösungsansätze zur Diskussion. ✌

Das Internet der Dinge, Big Data und eine Fischertechnik-Fabrik – Teil 6: Hadoop vom ABAP aus ansprechen: die GLUE-Middleware von Datavard

Im vorherigen Teil wurden Daten von Steuergeräten in ein CSV-File geschrieben, dies wurde per Kafka in Hadoop importiert und via Hive-Adapter bzw. Impala-Adpater in einer HANA-Datenbank gelesen. Diese Adapter stellen eine komfortable Möglichkeit dar, um auf die Hadoop-Daten lesend zuzugreifen. Diese Adapter ermöglichen allerdings nicht

Das Internet der Dinge, Big Data und eine Fischertechnik-Fabrik – Teil 5: Visualisierung mittels CalculationView und SAP Cloud for Analytics

In den vorherigen Teilen dieses Blogs wurde gezeigt, wie die Sensordaten der Fabriksimulation schliesslich als Tabelle (genauer: als Tabellenlink) in der SAP HANA verfügbar gemacht wurde. Der nächste Schritt wäre nun beispielsweise in der HANA einen gescripteten (oder alternativ auch graphischen) CalculationView anzulegen, der die