Business Intelligence/20. August 2024 -Aktualisiert am 3. Februar 2025/4 Min. Lesezeit

Trendanalyse mit Moving Averages

Visualisierung von Moving Averages.

Was sind Moving Averages?

Eine Trendanalyse mit Moving Averages oder Rolling Averages, im Deutschen Sprachraum auch Mittelwertfilter oder gleitender Mittelwert genannt, sind ein einfaches und häufig genutztes Werkzeug für die Analyse von Zeitreihen-Daten.

Sie werden in den unterschiedlichsten Disziplinen eingesetzt, um den Trend von Daten abzubilden. Dabei werden lokale Minima und Maxima „herausgefiltert“ – man spricht von einer Glättung der Daten.

Beliebt sind Moving Averages etwa bei der Beurteilung von Aktienkursen, Verkaufs- oder Kundenzahlen. Sie werden aber auch für Wetter- oder Sensordaten und – in abgewandelter Form – sogar in der Bildverarbeitung genutzt.

Wie werden Moving Averages berechnet?

Die Berechnung von Moving Averages ist sehr einfach: Für jeden Messzeitpunkt der Datenreihe wird der Mittelwert der umliegenden Daten gebildet. Dabei werden gleich viele Werte links und rechts des betrachteten Werts herangezogen. Je größer die Fensterbreite, also je mehr umliegende Werte genutzt werden, desto stärker ist die Glättung.

Ein Beispiel: Analyse von Nutzerzahlen

Moving Averages eignen sich beispielsweise für die Analyse von Nutzerzahlen einer Website. Eine Fragestellung aus dem Business-Intelligence-Umfeld könnte sein, den Verlauf der täglichen Nutzerzahlen einer Website für das letzte Jahr zu beurteilen. Bedingt durch viele externe Faktoren können Nutzerzahlen von Tag zu Tag starken Schwankungen unterworfen sein, sodass eine Analyse auf Basis der Tages-Daten schwer fällt:

Rohdaten ohne Moving Averages

"Rohdaten ohne Moving Averages"

Bildet man nun anstelle der Rohdaten Moving Averages mit einer Fensterbreite von 20 ab, wird in diesem Beispiel nicht nur der Aufwärtstrend der Nutzerzahlen viel deutlicher, sondern es wird auch eine periodisch wiederkehrende Schwankung in den Nutzerzahlen erkennbar.

Moving Averages mit Fensterbreite von 20

"Moving Averages mit Fensterbreite von 20"

Wählt man eine größere Fensterbreite zur Berechnung der Moving Averages, wird die Kurve immer “glatter”: Lokale Minima und Maxima werden breiter und flacher. Der generelle Trend der Daten wird immer deutlicher. Allerdings verschwindet nicht nur zufälliges Rauschen (engl. noise), sondern auch subtilere, eventuell bedeutsame Muster werden nach und nach herausgefiltert. Die eben entdeckten periodischen Schwankungen in den Nutzerzahlen sind bei einer Fensterbreite von 60 kaum noch zu erkennen:

Trendanalyse mit Moving Averages mit Fensterbreite von 60

"Trendanalyse mit Moving Averages mit Fensterbreite von 60"

Die optimale Fensterbreite ist deshalb immer abhängig von der Fragestellung, die hinter einer Analyse steht. Je mehr Details im Verlauf der Daten von Interesse sind, desto kleiner sollte die Fensterbreite gewählt werden.

Analyse aktueller Trends: One-sided Moving Average a.k.a Einseitiger Mittelwertsfilter

Es gibt viele Varianten bei der Berechnung von Moving Averages, die jeweils von den zugrunde liegenden Daten und der Fragestellung abhängig sind. Zum Beispiel ist es häufig interessanter den aktuellen Trend von Daten zu beurteilen anstatt rückblickende Aussagen über Daten zu treffen. Für den aktuellen Tag liegen aber natürlich nur Daten aus der Vergangenheit vor, weshalb nur ein einseitiger Mittelwertsfilter verwendet werden kann. Bei einer Fensterbreite von 10 wird in diesem Fall für jeden Zeitpunkt der Mittelwert aus den 10 vorherigen Werten gebildet.

Moving Averages in SQL berechnen

Mithilfe einer window function kann man ganz einfach moving averages in SQL berechnen. Angenommen, es liegt eine Tabelle daily_users vor, in der für jeden Tag (date) genau eine Zeile angelegt ist und die Anzahl an täglichen Nutzern im Feld users gespeichert wird. Dann könnte der SQL-Code zur Berechnung der moving averages mit Fensterbreite 10 so aussehen:

1SELECT 
2  date, 
3  AVG(users) OVER (ORDER BY date ROWS BETWEEN 5 PRECEDING AND 5 FOLLOWING) AS mov_avg_users 
4FROM daily_users
mysql

Zur Verschiebung des Fensters kann der OVER – Ausdruck angepasst werden. Für one-sided moving averages mit Fensterbreite 10 zum Beispiel so:

1SELECT 
2  date, 
3  AVG(users) OVER (ORDER BY date ROWS BETWEEN 10 PRECEDING AND CURRENT ROW) AS mov_avg_users 
4FROM daily_users
mysql

Fazit

Eine Trendanalyse mit Moving Averages ist nützlich, wenn Trends in Zeitreihendaten betrachtet werden. Wenn es um aktuelle Trends geht, eignet sich die Berechnung von one-sided moving averages, bei rückblickender Beurteilung von Trends bietet sich die Berechnung von two-sided moving averages an. Da die Berechnung einfach und die Interpretation intuitiv ist, kommen moving averages in vielfältigen Analyseszenarien zur Anwendung.