Exponentielle Glättungsverfahren

Wie ich schon damals sagte, möchte ich den Blog auch gerne für eigene Themen nutzen. Darunter fallen natürlich auch Gebiete, die mir während meiner Arbeitszeit begegnen und die ich recht interessant finde. An dieser Stelle möchte ich mich mit einem exponentiellen Glättungsverfahren auseinandersetzen, welches in der Lagerverwaltung eine größere Rolle spielt.

Definition

Doch was sind eigentlich Glättungsverfahren? In der Mathematik beziehungsweise Statistik werden solche Verfahren genutzt, um Trendkomponenten, welche sich durch keine funktionale lineare oder nichtlineare Beziehung darstellen lassen, durch eine sogenannte glatte Komponente mit Hilfe gleitender Durchschnitte zu bestimmen.

Beschreibung

Klingt nun alles sehr theoretisch und unverständlich? Ist es aber letztenendes garnicht. Im Prinzip habt Ihr eine Kurve mit einem festem Beobachtungszeitraum. Zu jedem dieser Zeitpunkte liegt ein beliebiger Wert vor (y1, y2, y3 … yn). Jetzt errechnen wir einfach geglättete Schätzwerte, die sich auf Ergebnisse der vorherigen Zeitpunkte beziehen. Neben unseren Zeitreihenwerten y(t) brauchen wir noch einen Glättungsfaktor alpha, der größer null aber kleiner eins sein muss (0 <= a <= 1). Daraus ergibt sich die Formel, y’(t) ergibt dabei den geglätteten Wert:

y’(t) = a * y(t) + (1-a) * y’(t-1)

Der Schätzwert y’(t) liefert hier den Prognosewert für den Zeitpunkt t+1. Liegt im Zeitpunkt t+1 eine weitere Beobachtung vor, so kann dir Prognose für t+2 ermittel werden, usw.

Beispiel

Es seien insgesamt zehn Zeitreihenwerte (y0 bis y10) gegeben. Diese sollen nun mit einem Glättungskoeffizienten von alpha (a) = 0,3 geglättet werden. Der Anfangswert y’0 soll 19 betragen.

y’1 = 0,3 * 20 + 0,7 * 19 = 6 + 13,3 = 19,3
y’2 = 0,3 * 18 + 0,7 * 19,3 = 5,4 + 13,51 = 18,91
y’3 = 0,3 * 21 + 0,7 * 18,91 = 6,3 + 13,24 = 19,54

Dadurch ergibt sich folgende Tabelle und Grafik:

Exponentielle Glättung

Die Grafik zeigt die Glättung für α = 0,6 sowie α = 0,3 und α = 0,1. Man sieht, dass der kleinere Glättungsfaktor die Zeitreihe stärker glättet, denn hier geht der aktuelle Wert nur mit einem Gewicht von 0,3 ein, wogegen die „mittleren“ Vergangenheitswerte mit 0,7 berücksichtigt werden.

Programmcode

 

// yt = (19, 20 , 18 , 21 , 22 , 19 , 21 , 18 , 20 , 21 , 17 )
// result = (19, 19.3, 18.91, 19.54, 20.28, 19.89, 20.23, 19.56, 19.69, 20.08, 19.16)
// Exponentielle Glättung: yt = Zeitwerte, a = alpha, result = geglättete Werte

privatestaticdouble[] expsmoothing(double[] yt, double a) {
double[] result = newdouble[yt.length];

result[0] = yt[0];
for
(int i = 0; i < yt.length – 1; i++) {
if
(i == 0) { result[i+1] = a * yt[i+1] + (1-a) * yt[i]; }
else
{ result[i+1] = a * yt[i+1] + (1-a) * result[i]; }

}

return
result;

}


Fazit

Diese Methode ist sehr nützlich, um Kurvenverläufe zu beeinflussen und kann ohne größere Umstände implementiert werden. Da ich mich gerade mit Java beschäftige, ist der Code in dieser Programmiersprache geschrieben. Dieser funktioniert allerdings auch ohne viel Modifikation in anderen Sprachen, also viel Spaß!

 

Die Grafik zeigt die Glättung für α = 0,6 sowie α = 0,3 und α = 0,1. Man sieht, dass der kleinere Glättungsfaktor die Zeitreihe stärker glättet, denn hier geht der aktuelle Wert nur mit einem Gewicht von 0,3 ein, wogegen die „mittleren“ Vergangenheitswerte mit 0,7 berücksichtigt werden.

2 Responses to Exponentielle Glättungsverfahren
  1. Obelix Reply

    Formel falsch, da Rekursion fehlt:
    y’(t) = a * y(t) + (1-a) * y’(t-1)

    • Dustin Klein Reply

      Oh stimmt, da ist mir das kleine Zeichen doch glatt durchgegangen. Danke sehr! :-)

Leave a Reply

Your email address will not be published. Please enter your name, email and a comment.

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">