En publicaciones anteriores, introduje métodos de pronóstico muy simples (e ingenuos), a saber, el pronóstico basado en CAGR y el pronóstico de promedio móvil simple . Implementé dichos métodos de pronóstico en R y demostré casos de uso básicos.
En esta publicación, quiero presentar otro método de pronóstico simple: pronóstico de paseo aleatorio. Implementaré un ejemplo usando Python.
El pronóstico de paseo aleatorio puede usarse, por ejemplo, para crear un modelo de línea de base simple contra el cual se pueden comparar otros pronósticos. Una caminata aleatoria puede ser un buen punto de referencia. Aquí estoy, por ejemplo, pensando en el análisis del mercado financiero en el que muchos ingenieros financieros intentan crear estrategias comerciales y modelos de pronóstico que se pueden probar con caminatas aleatorias.
A continuación, implemento una función de pronóstico de recorrido aleatorio en Python. La función requiere el módulo aleatorio.
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
Usando random_walk_forecast podemos visualizar un pronóstico de caminata aleatoria usando pyplot, como parte de la biblioteca matplotlib en 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()
Esto concluye mi ejemplo simple.
Ingeniero industrial especializado en optimización y simulación (R, Python, SQL, VBA)
Leave a Reply