In früheren Beiträgen habe ich sehr einfache (und naive) Prognosemethoden vorgestellt, nämlich CAGR-basierte Prognosen und einfache gleitende Durchschnittsprognosen . Ich habe solche Prognosemethoden in R implementiert und grundlegende Anwendungsfälle demonstriert.
In diesem Beitrag möchte ich eine weitere einfache Prognosemethode vorstellen: Random-Walk-Prognose. Ich werde ein Beispiel mit Python implementieren.
Random-Walk-Prognose kann z.B. verwendet werden, um ein einfaches Basismodell zu erstellen, mit dem andere Vorhersagen verglichen werden können. Ein Random Walk kann ein guter Maßstab sein. Ich denke hier z.B. an die Finanzmarktanalyse, wo viele Finanzingenieure versuchen, Handelsstrategien und Prognosemodelle zu entwickeln, die gegen Irrfahrten getestet werden können.
Unten implementiere ich eine Random-Walk-Prognosefunktion in Python. Die Funktion benötigt das Zufallsmodul.
import random
def random_walk_forecast(annualGrowth,
startPoint,
forecastLength,
productiveDaysPerYear,
standardDeviationRelativeToMeanGrowth):
prediction = []
g = (1+annualGrowth)**(1/productiveDaysPerYear)-1
for i in range(0,forecastLength):
if i == 0:
prediction.append(startPoint*random.normalvariate(mu=1+g, sigma=g*standardDeviationRelativeToMeanGrowth))
else:
prediction.append(prediction[i-1]*random.normalvariate(mu=1+g,
sigma=g*standardDeviationRelativeToMeanGrowth))
return prediction
Mit random_walk_forecast können wir eine Random-Walk-Prognose mit pyplot als Teil der matplotlib- Bibliothek in Python visualisieren:
historicals = [800,1000,874,945,1121,1245,1020]
growth_rate = 0.03
predictions = random_walk_forecast(annualGrowth = growth_rate,
startPoint = historicals[-1],
forecastLength=10,
productiveDaysPerYear=220,
standardDeviationRelativeToMeanGrowth = 500)
import matplotlib.pyplot as plt
plt.figure(figsize = (20,5))
historicals.extend(predictions)
plt.bar(range(1,len(historicals)+1),
historicals,
color = "#229900")
plt.title("time series wrandom walk: result of simple forecasting appraoch",size=20)
plt.xlabel("days",size=14)
plt.ylabel("values of interest",size=14)
plt.show()
Damit ist mein einfaches Beispiel beendet.
Wirtschaftsingenieur mit Interesse an Optimierung, Simulation und mathematischer Modellierung in R, SQL, VBA und Python
Leave a Reply