Das Ergebnis kann mit einer Grafik dargestellt werden. Die Grafik-Komponente in R funktioniert anders als in Excel, ist in vieler Hinsicht leistungsfähiger. In diversen Packages gibt es umfassende Erweiterungen.
Eingeleitet wird die Grafikerstellung über "BERT:graphics.device(<Name>)". "BERT.grahics.device()" überträgt eine in R erstellte Grafik (Plot) nach Excel. Diese Grafik ist dynamisch und wird bei jeder Code-Ausführung aktualisiert. Dieser Funktion kann ein Name als Parameter mitgegeben werden. Das hieraus erstellte Objekt hat in Excel die Kennung "BGD_<name>".
"plot()" ist der Standardbefehl für Diagramme in R. Über "xlim" und "ylim" werden die Achsenweiten begrenzt. Achsenbeschriftungen werden über "xlab" und "ylab" festgelegt. Mit dem "type" wird die Art (hier Linie) festgelegt. Mit "abline()" kann die Regressionsgerade gezeichnet werden. Hierzu werden die Regressionsparameter eingesetzt.
BERT.graphics.device("Grafik"); plot(Daten$Period_Index,Daten$Absatz,ylim=c(0,max(Daten$Absatz)),xlim=c(0,72),xlab="Perioden",ylab="Absatz",xaxt='n',type='l') abline(lin_model$coefficients[1],lin_model$coefficients[2]) axis(1,at=1:72,c(paste0(Daten$Monat,'.',Daten$Jahr),paste0(Daten[1:12,]$Monat,'.',2018))) |
Das Ergebnis ist aus Abb. 2 ersichtlich (der Excel-Name ist BGD_Grafik).
Abb. 2: Verlauf der Absatzkurve und Regressionsgerade
Höhere Qualität als mit Excel
Gut, das hätten Sie auch mit Excel hinbekommen. Aber zu den wirklich anspruchsvollen Methoden gehören auch häufig anspruchsvolle Grafiken dazu. Und hier kann man sich eine Menge Arbeit sparen, wie Sie noch sehen werden.
Wie kann nun die Qualität der Analysemethode gemessen werden? Üblicherweise wird das Bestimmtheitsmaß "R2" herangezogen. R2 kennzeichnet den Anteil der erklärten Abweichungen durch die gesamten Abweichungen vom Mittelwert. Es ist nur bedingt geeignet, da keine Aussage über die statistische Signifikanz gemacht wird. Zudem fehlt ein objektiver Vergleichsmaßstab zu anderen Verfahren.
Es besteht auch die Möglichkeit, über einen Vergleich mit den Istzahlen Eignungskennzahlen zu ermitteln. Dies hat den Vorteil, dass ein Vergleich methodenübergreifend stattfinden kann. Als Maßstab wird die mittlere prozentuale Abweichung (MAPE = mean average percentage error) gewählt. Dies macht deutlich, um wie viel Prozent ein Prognosewert durchschnittlich vom Istwert abweicht. Eine Berechnung kann in R wie folgt umgesetzt werden:
E.mape=function(a,b) { sum(abs(a-b)/sum(b)) } |
Über folgende Funktion, die aus Excel über "R.E.eval()" aufgerufen wird, kann der Wert ermittelt werden:
E.mape(predict(lin_model,data.frame(Period_Index=49:60)),Daten[49:60]$Absatz) |
Wir erhalten den Wert 0,103524139, also ein durchschnittlicher Prognosefehler von 10,4 %.
Eine Regression ist allerdings nicht immer ein geeignetes Verfahren, insbesondere, wenn die Schwankungen um einen Mittelwert nicht zufällig sind, sondern bestimmten Mustern folgen, z. B. Weihnachtsgeschäft, Ferien, Sommerpause etc.
Für diese Sachverhalte gibt es verschiedene Ansätze der Zeitreihenanalyse. Ein häufig verwendetes Verfahren ist "stl". In R lässt sich eine Zeitreihenanalyse ganz einfach mit der Funktion "stl()" aufbauen. Zunächst wird der folgende Code über "R.E.eval()" aufgerufen:
tl<-ts(Daten$Absatz[1:48],frequency=12) d<-stl(tl,s.window='periodic') pred_d <- predict(d) pred_d$fitted[1:12] BERT.graphics.device("Grafik_stl"); plot(pred_d) |
"Plot()" ist eine übersteuerbare Funktion. Sie kann für jeden Objekttyp implementiert werden. In diesem Fall kann man diese Funktion nutzen, um ein Diagramm zu zeichnen (Abb. 3).
Abb. 3: plot-Ausgabe für stl
Hilfreich ist es, sich das Vertrauensintervall ausgeben zu lassen. Dieses gibt an, dass mit einer Wahrscheinlichkeit von jeweils 95 % und 99 % dieser Korridor nicht verlassen wird. Je mehr Daten aus der Vergangenheit verfügbar sind, desto schmaler wird der Korridor.
Alternativ dazu können Verfahren wie Holt-Winters oder ARIMA verwendet werden. Die Erläuterung dieser Verfahren würde den Rahmen sprengen. Trotzdem sind diese Verfahren einfach einzusetzen (wenn man von der Parametrisierung absieht). Hier die Umsetzung für Holt-Winters:
BERT.graphics.device("Grafik_hw"); hw <-HoltWinters(tl) h_pred <- predict(hw,12,prediction.interval = T) plot(hw,h_pred) |