I tidligere indlæg introducerede jeg meget simple (og naive) prognosemetoder, nemlig CAGR-baseret prognose og simpel glidende gennemsnitsprognose . Jeg implementerede sådanne prognosemetoder i R og demonstrerede grundlæggende use cases.
I dette indlæg vil jeg introducere en anden simpel prognosemetode: Random walk forecasting. Jeg vil implementere et eksempel ved hjælp af Python.
Random walk forecasting kan fx bruges til at skabe en simpel basismodel, som andre prognoser kan sammenlignes med. En tilfældig gåtur kan være et godt benchmark. Her tænker jeg fx på finansmarkedsanalyse, hvor mange finansielle ingeniører forsøger at skabe handelsstrategier og prognosemodeller, der kan testes mod tilfældige vandringer.
Nedenfor implementerer jeg en tilfældig gang-forudsigelsesfunktion i Python. Funktionen kræver det tilfældige modul.
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
Ved at bruge random_walk_forecast kan vi visualisere en tilfældig gangprognose ved hjælp af pyplot, som en del af matplotlib- biblioteket i Python:
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()
Dette afslutter mit simple eksempel.
Industriingeniør som gerne beskæftiger sig med optimering, simulation og matematisk modellering i R, SQL, VBA og Python
Leave a Reply