valuecloud-website-logo-60x60-min

Leistungen

Time-Series Forecasting mit ARIMA / SARIMAX

Die Herausforderung: In vielen Bereichen der Wirtschaft wird täglich der Ruf nach Prognosen lauter. Gerade zum Ende des Geschäftsjahres soll oftmals eine Aussage getroffen werden, wie die erwarteten Kosten in den einzelnen Bereichen sein werden. Werden höhere Ausgaben erwartet, oder kann auch ein Gewinn verzeichnet werden? Hilfreich wäre es also, ein Werkzeug zu besitzen, welches einem mit Hilfe historischer Daten ein mögliches Szenario in der (nahen) Zukunft vorhersagen kann.

Über den Autor

Matthias Bender

Junior ML Engineer, ValueCloud GmbH

Der ValueCloud Ansatz:

ARIMA – Auto-Regressive Integrated Moving Average – bzw. SARIMAX – Seasonal ARIMA mit eXogenen Faktoren – bietet diese Möglichkeit. ARIMA kann mit Hilfe linearer Differenzierungsgleichungen Bezüge zwischen historischen Daten herstellen. Grundlage für die Anwendbarkeit dieser Techniken ist die Bedingung, dass die Zeitreihe eine stationäre Verteilung ist. Vereinfacht gesprochen gilt:

„Eine Zeitreihe ist dann stationär, wenn der Erwartungswert und Varianz endlich und zeitunabhängig sind und Autokovarianzen lediglich von der zeitlichen Verschiebung abhängt.“ (Quelle: https://wirtschaftslexikon.gabler.de/definition/stationaritaet-43164)

Meist sind Zeitreihen aus dem realen Umfeld jedoch nicht von Haus aus stationär. Gründe hierfür sind beispielsweise:

  • Saisonalität
  • Steigende Kosten/Umsätze und damit eine Korrelation zur Ausgangsreihe
  • Trends

Durch verschiedene Hilfsmittel kann versucht werden, die Zeitreihe annähernd zu einer stationären Verteilung zu machen – Logrithmus, Umskalieren, ö.ä – um o.g. Verfahren anzuwenden. Verifiziert werden kann dies mit dem Dickey-Fuller-Test[1]. Auf Basis, dass die Einheitswurzel Teil der Nullhypothese  der zu testenden Zeitreihe ist, kann eine Aussage darüber getroffen werden, ob eine Stationarität annähernd vorliegt.

[1] https://analyticsindiamag.com/complete-guide-to-dickey-fuller-test-in-time-series-analysis/

Die Umsetzung der eingangs gestellten Frage wird im Folgenden kurz angerissen, um einen Einblick in die Funktionsweise zu geben.

				
					import pandas as pd
df = pd.read_csv('dataset.csv')
				
			

Gut für die Bearbeitung, Veränderung und Visualisierung von Daten bietet sich in der Programmiersprache Python besonders pandas an. Angelehnt an die Abbildung 1 enthält dieser Datensatz lediglich Kosten, indiziert mit den jeweiligen Monaten. Den Dickey-Fuller-Test kann man leicht umsetzen mit dem entsprechenden Package statsmodel.

				
					from statsmodel.tsa.stattools import adfuller
import matplotlib.pyplot as plt

# Dickey-Fuller-Test
def test_stationarity(timeseries, window_size=3):
    # determine rolling statistics
    moving_average = timeseries.rolling(window=window_size).mean()
    moving_std = timeseries.rolling(window=window_size).std()
    
    # Plot rolling statistics
    orig = plt.plot(timeseries, color='blue', label = 'Original')
    mean = plt.plot(moving_average, color='red', label = 'Rolling Mean')
    std = plt.plot(timeseries, color='black', label = 'Rolling Std')
    plt.legend(loc='best')
    plt.title ('Rolling Mean & Standard Deviation')
    plt.show(block=False)
    
    # Perform Dickey-Fuller Test
    print('Results of Dicky Fuller Test')
    dftest = adfuller(timeseries, autolag = 'AIC')
    dfoutput = pd.Series(dftest[0:4], index = ['Test Statistics', 'p-value' '#Lags used', 'Number of observations used'])
    for key, value in dftest[4].items():
        dfoutput['Critical Value (%s)' % key] = value

				
			

Eine Ausgabe des Dickey-Fuller-Tests kann, für die in Abbildung 1 gezeigte Zeitreihe, wie folgt aussehen:

Für die weitere Vorgehensweise sind insbesondere die „Test Statistic“ und „critical values“ wichtig. Diese geben Auskunft über die oben kurz beschriebene Nullhypothese. Vereinfacht interpretiert sollte dieser Wert niedriger als die kritischen Werte sein, weil  verworfen werden kann. Durch Transformation der Daten kann die Zeitreihe wie eingangs beschrieben in ein Format gebracht werden, welches eine bessere „Test Statistic“ aufweist und somit insgesamt näher an einer stationären Zeitreihe herankommt.

Für die Umsetzung des ARIMA/SARIMAX bietet das statsmodel Paket in Python ebenfalls ein gutes Grundgerüst, um den Algorithmus umzusetzen. Die einzigen Parameter, welche hier eine maßgebliche Rolle spielen, sind die  und  Werte für. Diese stellen für die zwei Hauptbestandteile, den Autoregressive (AR(p) – Model) und Moving Average (MA(q) – Model), die Basis für deren Lösungsstrategie des Gleichungssystems.

Nun können mit Hilfe beider Modelle entsprechend Vorhersagen auf Basis der Historie getroffen werden. Die Erweiterung mit saisonalen Trends durch SARIMAX bietet hiermit die Möglichkeit, auch Urlaub, Ferien o.ä. miteinfließen zu lassen. Hier können, jeweils bezogen auf den Anwendungsfall, explorativ die Parameter und Modelle festgelegt werden. Natürlich sollten, wie für die meisten Modelle dieser Art, eine hinreichend große Menge an Daten zur Verfügung stehen, im Tages-, Wochen-, oder Monatsintervall.

Natürlich gibt es auch Fälle, die mit dem Ansatz noch nicht optimal erfasst werden. Insbesondere, wenn Projekte auslaufen, Fördergelder gestrichen werden, oder eventuelle Lieferanten nicht mehr zur Verfügung stehen, können Verläufe nicht realistisch dargestellt werden, wie man in Abbildung 1 ab dem Jahr 2020 erkennen kann. Hier müssen noch Menschen entsprechend ihrer Expertise Aussagen über die Güte der Vorhersagen treffen.

Time-Series Forecasting mit ARIMA / SARIMAX

Stehen Sie vor einer ähnlichen Herausforderung?

Unsere Experten freuen sich auf den Austausch mit Ihnen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Neueste Artikel

Conversational AI
Caroline Wagner

Haystack & Rasa als Dreamteam für Chatbots mit Experten-Charakter

Chatbots sind schon lange Teil von Webshops, FAQ Seiten oder Apps. Meistens lassen uns diese Chatbots aber relativ schnell im Stich, insbesondere wenn es um fachliche komplexere Fragen geht. Um einem Endanwender trotzdem das Gefühl zu geben, mit einem Experten zu interagieren, müssen wir „schlauere“ Systeme bauen. Was wir hier brauchen ist „Conversational AI“.

Weiterlesen »
Tech Strategie
Christian Gilcher

Kostenfalle Hyperscaler (und mögliche Auswege)

Viele Unternehmen nutzen Cloud Plattform-Komponenten der großen Hyperscaler, um digitale Innovation möglichst schnell in den Markt zu bringen. Mit steigender Last werden Hyperscaler Angebote jedoch sehr schnell sehr teuer. ValueCloud bietet strategische Alternativen zur Reduzierung der Kostenlast, die zudem auf europäischen IaaS Diensten laufen und Datenschutz-Bedenken ausräumen. In Summe entstehen Kosten-optimierte, „intelligente“ Multi-Cloud Szenarien.

Weiterlesen »
Machine Learning
Matthias Bender

Time-Series Forecasting mit ARIMA / SARIMAX

In vielen Bereichen der Wirtschaft wird täglich der Ruf nach Prognosen lauter. Gerade zum Ende des Geschäftsjahres soll oftmals eine Aussage getroffen werden, wie die erwarteten Kosten in den einzelnen Bereichen sein werden. Werden höhere Ausgaben erwartet, oder kann auch ein Gewinn verzeichnet werden? Hilfreich wäre es also, ein Werkzeug zu besitzen, welches einem mit Hilfe historischer Daten ein mögliches Szenario in der (nahen) Zukunft vorhersagen kann.

Weiterlesen »
Tech Strategie
Christian Gilcher

Was ist eigentlich „Cloud native“ Software (und warum ist das wichtig)?

Ich rede jeden Tag mit Leuten, die über „die Cloud“ sprechen aber gar nicht wissen, was es damit auf sich hat. Ich möchte das gerne ändern. Insbesondere werden Begriffe wie „Cloud“, „Cloud Computing“ und „cloud native Software“ sehr häufig in einen Topf geworfen, obwohl damit unterschiedliche Dinge gemeint sind.

Weiterlesen »
Machine Learning
Christian Gilcher

KI-Systeme mit Kafka und Kubernetes

Ich glaube an die Notwendigkeit, KI-basierte Software Systeme für den geschäftlichen Einsatz so zu entwickeln, dass man als Unternehmen eine freie und eigenständige Wahl über die jeweiligen Betriebsumgebungen sowie den Ort der Speicherung und der Verarbeitung von Daten treffen kann. Nur so lässt sich eine vollständige Kontrolle und Hoheit über die Daten und die eingesetzten Technologien erreichen.

Weiterlesen »

ValueCloud GmbH

Europaallee 10

D-67657 Kaiserslautern

P: +49-631-3435-8150

F: +49-631-3435-8159

E: info@valuecloud.io