Estoy tratando de pronosticar las ventas de productos en máquinas expendedoras. El problema es que la máquina se llena a intervalos irregulares y en cada llenado solo podemos registrar las ventas agregadas desde el último llenado de la máquina (es decir, no tenemos datos de ventas diarias). Básicamente, tenemos datos para ventas agregadas a intervalos irregulares. Los intervalos generalmente son entre 2 días y 3 semanas. Aquí hay datos de ejemplo para una máquina expendedora y un producto:
27/02/2012 48
17/02/2012 24
09/02/2012 16
02/02/2012 7
25/01/2012 12
16/01/2012 16
05/01/2012 16
23/12/2011 4
16/12/2011 14
09/12/2011 4
02/12/2011 2
Nuestro algoritmo ingenuo actual es calcular el promedio de ventas por día dividiendo la cantidad total vendida durante los últimos 90 días por 90.
¿Tienes alguna idea de cómo mejorar el pronóstico de las ventas por día? Necesito pronosticar lo que se venderá en la próxima visita de la máquina. ¿Es posible utilizar algún tipo de algoritmo de suavizado exponencial dada la naturaleza de nuestros datos?
¡Gracias por adelantado!
ACTUALIZACIÓN: Muchas gracias por todas las respuestas y comentarios. Permítanme tratar de dar un poco más de contexto (el caso de negocios detrás de la pregunta, muy simplificado, por supuesto). Tenemos cientos de máquinas expendedoras. Todos los días tenemos que decidir qué 20 de ellos visitar para recargar. Para hacerlo, estamos tratando de predecir cuál es el estado actual de las máquinas y seleccionar las 20 máquinas "más vacías". Para cada máquina y producto, estamos calculando el promedio de ventas por día (SPD) usando el algoritmo ingenuo descrito anteriormente. Luego multiplicamos el SPD por el número de días desde el último llenado de la máquina y el resultado es la cantidad pronosticada vendida.
fuente
Respuestas:
Centrémonos en el problema comercial, desarrollemos una estrategia para abordarlo y comencemos a implementar esa estrategia de una manera simple. Más tarde, se puede mejorar si el esfuerzo lo amerita.
El problema empresarial es maximizar las ganancias, por supuesto. Esto se hace aquí al equilibrar los costos de las máquinas de rellenado con los costos de las ventas perdidas. En su formulación actual, los costos de rellenar las máquinas son fijos: se pueden rellenar 20 por día. El costo de las ventas perdidas, por lo tanto, depende de la frecuencia con que las máquinas estén vacías.
Se puede obtener un modelo estadístico conceptual para este problema ideando alguna forma de estimar los costos para cada una de las máquinas, en base a datos previos. Lo esperadoel costo de no dar servicio a una máquina hoy es aproximadamente igual a la posibilidad de que se haya agotado por la velocidad a la que se usa. Por ejemplo, si una máquina tiene un 25% de posibilidades de estar vacía hoy y, en promedio, vende 4 botellas por día, su costo esperado es igual al 25% * 4 = 1 botella en ventas perdidas. (Convierta eso en dólares como lo desee, sin olvidar que una venta perdida conlleva costos intangibles: las personas ven una máquina vacía, aprenden a no confiar en ella, etc. Incluso puede ajustar este costo de acuerdo con la ubicación de la máquina; tener algo oscuro las máquinas que funcionan vacías por un tiempo pueden incurrir en pocos costos intangibles.) Es justo suponer que rellenar una máquina restablecerá inmediatamente esa pérdida esperada a cero; debería ser raro que una máquina se vacíe todos los días (no lo desee. ..). Como pasa el tiempo,
Los puntos rojos muestran la secuencia de ventas; los puntos azules son estimaciones basadas en la estimación de máxima probabilidad de la tasa de ventas típica.
Dada una tabla como esta para cada máquina (de las cuales parece que hay un par de cientos), puede identificar fácilmente las 20 máquinas que actualmente experimentan la mayor pérdida esperada: darles servicio es la decisión comercial óptima. (Tenga en cuenta que cada máquina tendrá su propia tasa estimada y estará en su propio punto a lo largo de su curva, dependiendo de cuándo recibió el último servicio). En realidad, nadie tiene que mirar estos cuadros: identificar las máquinas para dar servicio de esta manera es fácil automatizado con un programa simple o incluso con una hoja de cálculo.
Este es solo el comienzo. Con el tiempo, los datos adicionales pueden sugerir modificaciones a este modelo simple: puede tener en cuenta los fines de semana y días festivos u otras influencias anticipadas en las ventas; puede haber un ciclo semanal u otros ciclos estacionales; Puede haber tendencias a largo plazo para incluir en las previsiones. Es posible que desee realizar un seguimiento de los valores periféricos que representan ejecuciones inesperadas en las máquinas e incorporar esta posibilidad en las estimaciones de pérdidas, etc. Sin embargo, dudo que sea necesario preocuparse mucho por la correlación en serie de las ventas: es difícil pensar de cualquier mecanismo para causar tal cosa.
para Excel (
A2
es una celda que contiene el tiempo transcurrido desde la última recarga yTheta
es la tasa de ventas diaria estimada) ypara R.)
Los modelos más elegantes (que incorporan tendencias, ciclos, etc.) deberán utilizar la regresión de Poisson para sus estimaciones.
fuente
Creo que generalmente tendrá el primer paso para convertir a una serie de tiempo regular. Dijiste que tomas el promedio de 90 días. Dado que tiene datos que son más frecuentes que eso, creo que tiene más sentido usar la mayor parte de lo que tiene al tomar los días entre cada observación y dividirlos por la cantidad de artículos vendidos para ese período (suponiendo que eso sea lo que segunda columna es).
Como descargo de responsabilidad, soy un completo aficionado, por lo que desea seguir el consejo de un experto como IrishStat sobre el siguiente código (por ejemplo, dijo que ETS es un mal modelo, así que solo trate esto como un ejemplo de juguete), pero con la esperanza que esto te ahorra algo de tiempo, aquí hay un código R con el que puedes jugar:
La trama resultante es:
fuente
Lo que tienes es un "problema de demanda intermitente". Hemos resuelto esto convirtiendo la demanda en una tasa dividiendo la demanda real por el número de días en el intervalo entre el servicio. Esta tasa se puede modelar como una función de transferencia para predecir una tasa dada la predicción del intervalo. Esta tasa prevista se puede convertir a una demanda. Se debe tener cuidado para detectar cambios estructurales en la tasa a través de la detección de intervención. Intente buscar en Google "enfoque de modelado de demanda intermitente utilizando una metodología de función de transferencia". Tenga muy claro el modelo de enfoques presuntivos de Croston o suavizado exponencial ya que son bastante deficientes.
ANÁLISIS ADICIONAL
Cuando modelé Rate en función del intervalo, obtuve lo siguiente. El uso de una predicción de INTERVALO que haya pasado esta ecuación puede predecir la tasa, que puede usarse para predecir la demanda. Este tipo de modelo permite que se incorpore la estructura autorregresiva en la frecuencia, así como también permite las pulsaciones, los cambios de nivel y / o las tendencias de tiempo local en la frecuencia.
# (BOP) VALOR DE ERROR VALOR
INTERVALO DE ENTRADA SERIE X1
ENTRADA SERIE X2 I ~ P00002 03/12/11 PULSO
ENTRADA SERIE X3 I ~ P00007 08/12/11 PULSO
ENTRADA SERIE X4 I ~ P00010 11/12/11 PULSO
fuente