Évaluation de la prévisibilité des séries chronologiques

11

Supposons que j'ai un peu plus de 20 000 séries chronologiques mensuelles s'étendant de janvier 2005 à décembre 2011. Chacun d'eux représente les données de ventes mondiales pour un produit différent. Et si, au lieu de calculer des prévisions pour chacun d'entre eux, je voulais me concentrer uniquement sur un petit nombre de produits qui "comptent réellement"?

Je pourrais classer ces produits en fonction du revenu annuel total et réduire la liste en utilisant Pareto classique. Pourtant, il me semble que, même s'ils ne contribuent pas beaucoup au résultat net, certains produits sont si faciles à prévoir que les laisser de côté serait un mauvais jugement. Un produit qui a vendu 50 $ par mois au cours des 10 dernières années peut ne pas sembler beaucoup, mais il nécessite si peu d'efforts pour générer des prévisions sur les ventes futures que je pourrais aussi bien le faire.

Supposons donc que je divise mes produits en quatre catégories: revenus élevés / faciles à prévoir - revenus faibles / faciles à prévoir - revenus élevés / difficiles à prévoir - revenus faibles / difficiles à prévoir.

Je pense qu'il serait raisonnable de ne laisser que les séries chronologiques appartenant au quatrième groupe. Mais comment puis-je évaluer exactement la "prévisibilité"?

Le coefficient de variation semble être un bon point de départ (je me souviens également avoir vu un article à ce sujet il y a un certain temps). Mais que se passe-t-il si mes séries chronologiques présentent une saisonnalité / des changements de niveau / des effets de calendrier / de fortes tendances?

J'imagine que je devrais baser mon évaluation uniquement sur la variabilité de la composante aléatoire et non sur celle des données "brutes". Ou est-ce que je manque quelque chose?

Quelqu'un est-il déjà tombé sur un problème similaire? Comment vous y prendriez-vous?

Comme toujours, toute aide est grandement appréciée!

Bruder
la source

Réponses:

9

Voici une deuxième idée basée sur stl.

Vous pouvez ajuster une décomposition stl à chaque série, puis comparer l'erreur-type de la composante restante à la moyenne des données d'origine en ignorant les années partielles. Les séries faciles à prévoir devraient avoir un petit rapport entre se (reste) et moyenne (données).

La raison pour laquelle je suggère d'ignorer les années partielles est que la saisonnalité affectera la moyenne des données autrement. Dans l'exemple de la question, toutes les séries ont sept années complètes, ce n'est donc pas un problème. Mais si la série s'est étendue en partie en 2012, je suggère que la moyenne n'est calculée que jusqu'à la fin de 2011 pour éviter une contamination saisonnière de la moyenne.

Cette idée suppose que la moyenne (données) a du sens - c'est-à-dire que les données sont moyennes stationnaires (en dehors de la saisonnalité). Cela ne fonctionnerait probablement pas bien pour les données avec des tendances fortes ou des racines unitaires.

Cela suppose également qu'un bon ajustement stl se traduit par de bonnes prévisions, mais je ne peux pas penser à un exemple où cela ne serait pas vrai, donc c'est probablement une hypothèse correcte.

Rob Hyndman
la source
Salut Rob, merci d'être revenu vers moi. J'aime votre idée, je vais donc essayer et voir si elle fournit le niveau de filtrage souhaité. Encore une chose, y a-t-il une raison particulière d'utiliser la moyenne (données) sur la moyenne (reste)? Je crains que certaines de mes séries chronologiques aient une tendance quelque peu forte. La série décomposée STL, au contraire, ne devrait pas. Pensez-vous également que l'approche que nous avons décrite jusqu'à présent pour évaluer la prévisibilité / repérer les valeurs aberrantes est suffisamment bonne pour être mise en œuvre dans un environnement commercial réel? Ou est-ce trop "amateur"? Feriez-vous normalement les choses différemment?
Bruder
moyenne (reste) sera proche de zéro. Vous voulez comparer le bruit à l'échelle des données, donc la moyenne (données) devrait être correcte. Vous ne savez pas comment gérer vos tendances. Je testerais soigneusement l'approche sur une gamme de données avant d'en croire les résultats.
Rob Hyndman
8

Il s'agit d'un problème assez courant dans les prévisions. La solution traditionnelle consiste à calculer les erreurs de pourcentage absolu moyen (MAPE) sur chaque élément. Plus le MAPE est bas, plus l'article est facile à prévoir.

Un problème avec cela est que de nombreuses séries contiennent des valeurs nulles et MAPE n'est pas défini.

J'ai proposé une solution dans Hyndman et Koehler (IJF 2006) [version préimprimée] en utilisant des erreurs d'échelle absolues moyennes (MASE). Pour les séries chronologiques mensuelles, la mise à l'échelle serait basée sur des prévisions saisonnières naïves dans l'échantillon. C'est-à-dire que si est une observation au temps , les données sont disponibles des temps 1 à et alors une erreur mise à l'échelle est , où est une prévision de utilisant la méthode de prévision que vous implémentez pour cet élément. Prenez la valeur absolue moyenne des erreurs mises à l'échelle pour obtenir le MASE. Par exemple, vous pouvez utiliser une origine mobile (akayttT

Q=1T12t=13T|ytyt12|,
qt=(yty^t)/Q y tythy^tytvalidation croisée des séries chronologiques ) et prendre la valeur absolue moyenne des erreurs résultantes en une étape (ou en ).h

Les séries faciles à prévoir doivent avoir de faibles valeurs de MASE. Ici, «facile à prévoir» est interprété par rapport aux prévisions saisonnières naïves. Dans certaines circonstances, il peut être plus judicieux d'utiliser une autre mesure de base pour mettre à l'échelle les résultats.

Rob Hyndman
la source
Salut Rob, merci pour votre aimable réponse. Comme toujours, votre approche est très soignée, simple et raisonnable. J'évalue déjà la valeur ajoutée prévisionnelle ( FTV ) par rapport à un modèle saisonnier naïf, donc votre idée d'évaluer la prévisibilité en utilisant la même "mesure de base" semble très attrayante. Le seul problème est que, pour calculer MASE, je dois choisir une méthode de prévision et exécuter des simulations pour chacune de mes 20000 séries chronologiques. J'espérais pouvoir repérer des séries faciles à prévoir à l'avance, afin de gagner du temps de calcul.
Bruder
Pour une raison quelconque, je pensais que des séries chronologiques avec une variabilité relative plus faible (c.-à-d. CV) aboutiraient nécessairement à des prévisions plus faciles et plus précises. Calculer les prévisions et puis, et ensuite seulement mesurer les erreurs, sorte de defies, je pense, mon purpouse. Je suppose que ce que j'essaie de dire, c'est que je regarde MASE plus comme une mesure de l'exactitude des prévisions que comme une mesure de la prévisibilité. Mais je peux me tromper ... :)
Bruder
1
@Bruder: 2 réflexions: 1. Vous pourriez regarder une simple prévision naïve, plutôt qu'une prévision saisonnière. Une simple prévision naïve utilise simplement la valeur précédente de la série chronologique et reprendra une tendance forte (avec un décalage d'une période). 2. La décomposition STL est une bonne idée. Si les résidus sont très faibles par rapport aux composantes saisonnières et tendancielles, vous pouvez probablement facilement prévoir la série.
Zach
1
@Rob - qu'en est-il de la décomposition STL? Puis-je obtenir deux oiseaux avec une pierre (c.-à-d. Repérer les valeurs aberrantes et évaluer la prévisibilité, donc évaluer la «vraie» prévisibilité)? Cela m'étonne combien de choses je peux accomplir avec juste STL et un modèle naïf saisonnier. Mais vous savez ce qui se passe quand les choses sont trop belles pour être vraies ...
Bruder
1
Je crois que l'indice de la somme devrait être au lieu de . iti
blakeoft
5

Vous pourriez être intéressé par ForeCA: analyse des composants prévisibles (avertissement: je suis l'auteur). Comme son nom l'indique, il s'agit d'une technique de réduction de dimension / séparation aveugle des sources (BSS) pour trouver la plupart des signaux prévisibles à partir de nombreuses séries temporelles multivariées - plus ou moins stationnaires. Pour votre cas particulier de 20000 séries temporelles, ce n'est peut-être pas la chose la plus rapide à faire (la solution implique des spectres de puissance multivariés et une mise à jour analytique itérative du meilleur vecteur de poids; en outre, je suppose que cela pourrait rencontrer le problème .)pn

Il existe également un package R ForeCA disponible au CRAN (encore une fois: je suis l'auteur) qui implémente les fonctionnalités de base; en ce moment, il prend en charge la fonctionnalité d'estimation de la mesure de prévisibilité pour les séries temporelles univariées et il a de bonnes fonctions d'encapsulation pour les spectres multivariés (encore 20000 séries temporelles sont probablement trop à gérer à la fois).Ω(xt)

Mais vous pouvez peut-être essayer d'utiliser la mesure MASE proposée par Rob pour effectuer une séparation grossière du réseau des 20 000 dans plusieurs sous-groupes, puis appliquer ForeCA à chacun séparément.

Georg M. Goerg
la source
0

Cette réponse est très tardive, mais pour ceux qui recherchent toujours une mesure appropriée de la prévisibilité pour les séries chronologiques de la demande de produits, je suggère fortement de regarder l' entropie approximative .

La présence de schémas de fluctuation répétitifs dans une série chronologique la rend plus prévisible qu'une série chronologique dans laquelle de tels schémas sont absents. ApEn reflète la probabilité que des schémas d'observations similaires ne soient pas suivis par d'autres observations similaires. [7] Une série chronologique contenant de nombreux motifs répétitifs a un ApEn relativement petit; un processus moins prévisible a un ApEn plus élevé.

La demande de produits a tendance à avoir une très forte composante saisonnière, ce qui rend le coefficient de variation (CV) inapproprié. ApEn (m, r) est capable de gérer correctement cela. Dans mon cas, comme mes données ont tendance à avoir une forte saisonnalité hebdomadaire, j'ai défini les paramètres m = 7 et r = 0,2 * std comme recommandé ici .

meraxes
la source
Dans l'article de wikipedia, que signifie ? u
blakeoft
Je vois maintenant. Je pensais que et étaient liés, mais ils ne le sont pas. u uu
blakeoft