J'essaie de prévoir les ventes de produits dans un distributeur automatique. Le problème est que la machine est remplie à intervalles irréguliers et à chaque remplissage, nous ne pouvons enregistrer que les ventes agrégées depuis le dernier remplissage de la machine (c'est-à-dire que nous n'avons pas de données de vente quotidiennes). Donc, fondamentalement, nous avons des données sur les ventes agrégées à intervalles irréguliers. Les intervalles sont généralement compris entre 2 jours et 3 semaines. Voici des exemples de données pour un distributeur automatique et un produit:
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
Notre algorithme naïf actuel consiste à calculer les ventes moyennes par jour en divisant par 90 la quantité totale vendue au cours des 90 derniers jours.
Avez-vous une idée de comment améliorer la prévision des ventes par jour? J'ai besoin de prévoir ce qui sera vendu lors de la prochaine visite de la machine. Est-il possible d'utiliser une sorte d'algorithme de lissage exponentiel étant donné la nature de nos données?
Merci d'avance!
MISE À JOUR: Merci beaucoup pour toutes les réponses et commentaires. Permettez-moi d'essayer de donner un peu plus de contexte (l'analyse de rentabilisation derrière la question - très simplifiée bien sûr). Nous avons des centaines de distributeurs automatiques. Chaque jour, nous devons décider quels 20 d'entre eux visiter pour recharge. Pour ce faire, nous essayons de prédire quel est l'état actuel des machines et de sélectionner les 20 machines les plus "vides". Pour chaque machine et produit, nous calculons les ventes moyennes par jour (SPD) en utilisant l'algorithme naïf décrit ci-dessus. Ensuite, nous multiplions le SPD par le nombre de jours écoulés depuis le dernier remplissage de la machine et le résultat est la quantité prévue vendue.
la source
Réponses:
Concentrons-nous sur le problème commercial, développons une stratégie pour y remédier et commençons à mettre en œuvre cette stratégie de manière simple. Plus tard, il peut être amélioré si l'effort le justifie.
Le problème commercial est bien sûr de maximiser les profits. Cela se fait ici en équilibrant les coûts de remplissage des machines contre les coûts des ventes perdues. Dans sa formulation actuelle, les coûts de remplissage des machines sont fixes: 20 peuvent être rechargés chaque jour. Le coût des ventes perdues dépend donc de la fréquence à laquelle les machines sont vides.
Un modèle statistique conceptuel pour ce problème peut être obtenu en concevant un moyen d'estimer les coûts pour chacune des machines, sur la base des données précédentes. L' attendule coût de la non-maintenance d'une machine aujourd'hui équivaut approximativement au risque qu'elle soit épuisée multipliée par la vitesse à laquelle elle est utilisée. Par exemple, si une machine a 25% de chances d'être vide aujourd'hui et vend en moyenne 4 bouteilles par jour, son coût attendu est égal à 25% * 4 = 1 bouteille en ventes perdues. (Traduisez cela en dollars comme vous le ferez, sans oublier qu'une vente perdue engendre des coûts intangibles: les gens voient une machine vide, ils apprennent à ne pas y compter, etc. Vous pouvez même ajuster ce coût en fonction de l'emplacement de la machine; avoir certains obscurs les machines qui fonctionnent à vide pendant un certain temps peuvent entraîner quelques coûts intangibles.) Il est juste de supposer que le rechargement d'une machine remettra immédiatement à zéro la perte attendue - il devrait être rare qu'une machine soit vidée chaque jour (vous ne le souhaitez pas. ..). Au fil du temps,
Un modèle statistique simple dans ce sens propose que les fluctuations de l'utilisation d'une machine semblent aléatoires. Cela suggère un modèle de Poisson . Plus précisément, nous pouvons supposer qu'une machine a un taux de vente journalier sous-jacent de bouteilles et que le nombre vendu pendant une période de jours a une distribution de Poisson avec le paramètre . (D'autres modèles peuvent être formulés pour gérer la possibilité de regroupements de ventes; celui-ci suppose que les ventes sont individuelles, intermittentes et indépendantes les unes des autres.)x θ xθ X θ x
Dans le présent exemple, les durées observées sont et les ventes correspondantes étaient . Maximiser la probabilité donne : cette machine vend environ deux bouteilles par jour. L'historique des données n'est pas assez long pour suggérer qu'un modèle plus compliqué est nécessaire; il s'agit d'une description adéquate de ce qui a été observé jusqu'à présent.y = ( 4 , 14 , 4 , 16 , 16 , 12 , 7 , 16 , 24 , 48 ) θ = 1,8506x = ( 7 , 7 , 7 , 13 , 11 , 9 , 8 , 7 , 8 , 10 ) y= ( 4 , 14 , 4 , 16 , 16 , 12 , 7 , 16 , 24 , 48 ) θ^= 1,8506
Les points rouges indiquent la séquence des ventes; les points bleus sont des estimations basées sur l'estimation de la probabilité maximale du taux de vente typique.
Armé d'un taux de vente estimé, nous pouvons ensuite calculer le risque qu'une machine soit vide après jours: elle est donnée par la fonction de distribution cumulative complémentaire (CCDF) de la distribution de Poisson, évaluée à la capacité de la machine (présumée être 50 dans la figure suivante et les exemples ci-dessous). La multiplication par le taux de vente estimé donne un graphique de la perte quotidienne prévue des ventes en fonction du temps depuis la dernière recharge:t
Naturellement, cette courbe augmente le plus rapidement vers le moment à jours où la machine est le plus susceptible de s'épuiser. Ce que cela ajoute à notre compréhension, c'est de montrer qu'une augmentation sensible commence en fait une semaine plus tôt que cela. D'autres machines avec d'autres taux auront des montées plus raides ou moins profondes: ce seront des informations utiles.50 / 1,85 = 27
Étant donné un tableau comme celui-ci pour chaque machine (dont il semble qu'il y en ait quelques centaines), vous pouvez facilement identifier les 20 machines qui subissent actuellement la plus grande perte attendue: leur entretien est la décision commerciale optimale. (Notez que chaque machine aura son propre taux estimé et sera à son propre point le long de sa courbe, en fonction du dernier entretien.) Personne n'a réellement à regarder ces tableaux: identifier les machines à entretenir sur cette base est facilement automatisé avec un programme simple ou même avec une feuille de calcul.
Ce n'est que le début. Au fil du temps, des données supplémentaires peuvent suggérer des modifications à ce modèle simple: vous pouvez tenir compte des week-ends et des jours fériés ou d'autres influences anticipées sur les ventes; il peut y avoir un cycle hebdomadaire ou d'autres cycles saisonniers; il peut y avoir des tendances à long terme à inclure dans les prévisions. Vous voudrez peut-être suivre les valeurs aberrantes représentant des exécutions ponctuelles inattendues sur les machines et incorporer cette possibilité dans les estimations de pertes, etc. de tout mécanisme pour provoquer une telle chose.
Oh, oui: comment obtient-on l'estimation ML? J'ai utilisé un optimiseur numérique, mais en général, vous vous rapprocherez simplement en divisant les ventes totales sur une période récente par la longueur de la période. Pour ces données, c'est 163 bouteilles vendues du 09/12/2011 au 27/02/2012, soit une période de 87 jours: bouteilles par jour. Assez proche de et extrêmement simple à implémenter, donc tout le monde peut commencer ces calculs tout de suite. (R et Excel, entre autres, calculeront facilement le CCDF de Poisson: modélisez les calculs après 1,8506θ^= 1,87 1,8506
pour Excel (
A2
est une cellule contenant le temps écoulé depuis la dernière recharge etTheta
est le taux de vente quotidien estimé) etpour R.)
Les modèles plus sophistiqués (qui intègrent les tendances, les cycles, etc.) devront utiliser la régression de Poisson pour leurs estimations.
NB Pour les aficionados: J'évite volontairement toute discussion sur les incertitudes dans les pertes estimées. Leur manipulation peut compliquer considérablement les calculs. Je soupçonne que l'utilisation directe de ces incertitudes n'apporterait pas une valeur appréciable à la décision. Cependant, être conscient des incertitudes et de leurs tailles pourrait être utile; cela pourrait être représenté au moyen de bandes d'erreur dans la deuxième figure. En terminant, je veux juste souligner à nouveau la nature de ce chiffre: il trace des chiffres qui ont une signification commerciale directe et claire; à savoir, les pertes attendues; il ne trace pas des choses plus abstraites telles que les intervalles de confiance autour de , qui peuvent intéresser le statisticien mais qui feront tellement de bruit pour le décideur.θ
la source
Je pense que vous aurez généralement la première étape de la conversion en série chronologique régulière. Vous avez dit que vous prenez en moyenne 90 jours. Étant donné que vous avez des données plus fréquentes que cela, je pense qu'il est plus logique d'utiliser au maximum ce que vous avez en prenant les jours entre chaque observation et en les divisant par le nombre d'articles vendus pour cette période (en supposant que c'est ce que votre deuxième colonne est).
Comme avertissement, je suis un amateur total, donc vous voulez suivre les conseils d'un expert comme IrishStat sur le code suivant (par exemple, il a dit que ETS est un mauvais modèle, alors ne le traitez que comme un exemple de jouet), mais dans l'espoir que cela vous fait gagner du temps, voici un code R avec lequel vous pouvez jouer:
Le tracé résultant est:
la source
Ce que vous avez, c'est un «problème de demande intermittente». Nous avons résolu ce problème en convertissant la demande en un taux en divisant la demande réelle par le nombre de jours dans l'intervalle entre les services. Ce taux peut ensuite être modélisé comme une fonction de transfert afin de prédire un taux compte tenu de la prédiction de l'intervalle. Ce taux prévu peut ensuite être converti en demande. Des précautions doivent être prises pour détecter les changements structurels du taux via la détection d'intervention. Essayez de googler "Approche de modélisation de la demande intermittente en utilisant une méthodologie de fonction de transfert". Écartez très clairement les modèles d'approches présomptives de Croston ou de lissage exponentiel car ils sont assez déficients.
ANALYSE SUPPLÉMENTAIRE:
Lorsque j'ai modélisé le débit en fonction de l'intervalle, j'ai obtenu ce qui suit. En utilisant une prédiction d'INTERVAL en utilisant son passé, cette équation peut alors prédire le taux, qui peut être utilisé pour prédire la demande. Ce type de modèle permet d'incorporer une structure autorégressive dans le taux ainsi que des impulsions, des changements de niveau et / ou des tendances temporelles locales dans le taux.
# (BOP) VALEUR D'ERREUR VALEUR
INTERVALLE D'ENTRÉE DE LA SÉRIE X1
INPUT SERIES X2 I ~ P00002 12/03/11 PULSE
INPUT SERIES X3 I ~ P00007 12/08/11 PULSE
INPUT SERIES X4 I ~ P00010 12/11/11 PULSE
la source