Est-il possible d'automatiser la prévision des séries chronologiques?

17

Je voudrais construire un algorithme qui serait capable d'analyser n'importe quelle série chronologique et choisir "automatiquement" la meilleure méthode de prévision traditionnelle / statistique (et ses paramètres) pour les données de séries chronologiques analysées.

Serait-il possible de faire quelque chose comme ça? Si oui, pouvez-vous me donner quelques conseils sur la manière de procéder?

StatsNewbie123
la source
3
Non, cela ne peut raisonnablement être atteint. Fréquemment, il n'y a pas suffisamment de données pour faire la distinction entre deux modèles raisonnables, sans parler de tous les modèles possibles. Pour obtenir un meilleur modèle, il faudrait que la physique soit connue en termes absolus, et très souvent les hypothèses de modélisation ne sont même pas connues et / ou ne sont pas testées / non testables.
Carl
3
Non. Il n'y a aucun moyen de déterminer quel modèle est le meilleur. Python n'est pas pertinent dans cette discussion. Il y a néanmoins des tentatives avec de bons résultats. Par exemple, le projet github.com/facebook/prophet . Il a également une liaison Python.
Cagdas Ozgenc
3
Je vote pour laisser ouvert parce que je pense que c'est une question raisonnable - même si la réponse est "non". Je suggère de supprimer python du titre, car ce n'est pas pertinent ou surtout sur le sujet ici.
mkt
1
J'ai supprimé python du titre comme suggéré. Merci pour vos réponses.
StatsNewbie123
2
Voir le théorème "pas de déjeuner gratuit".
AdamO

Réponses:

19

Vous devez d'abord noter que l'approche décrite par IrishStat est spécifique aux modèles ARIMA, et non à un ensemble générique de modèles.

Pour répondre à votre question principale "Est-il possible d'automatiser la prévision des séries chronologiques?":

Oui, ça l'est. Dans mon domaine de la prévision de la demande, la plupart des progiciels de prévision commerciale le font. Plusieurs packages open source le font également, notamment les fonctions auto.arima () (prévisions ARIMA automatisées) et ETS () (prévisions automatisées de lissage exponentiel) de Rob Hyndman du package de prévisions open source dans R voir ici pour plus de détails sur ces deux fonctions . Il existe également une implémentation Python de auto.arima appelée Pyramid , bien que d'après mon expérience, elle ne soit pas aussi mature que les packages R.

Les produits commerciaux que j'ai mentionnés et les packages open source que j'ai mentionnés fonctionnent sur la base de l'idée d'utiliser des critères d'information pour choisir la meilleure prévision: vous ajustez un tas de modèles, puis sélectionnez le modèle avec le plus faible AIC, BIC, AICc, etc .... (généralement cela se fait au lieu d'une validation hors échantillon).

Il y a cependant une mise en garde majeure: toutes ces méthodes fonctionnent au sein d' une même famille de modèles. Ils choisissent le meilleur modèle possible parmi un ensemble de modèles ARIMA, ou le meilleur modèle possible parmi un ensemble de modèles de lissage exponentiel.

Il est beaucoup plus difficile de le faire si vous souhaitez choisir parmi différentes familles de modèles, par exemple si vous souhaitez choisir le meilleur modèle parmi ARIMA, le lissage exponentiel et la méthode Theta. En théorie, vous pouvez le faire de la même manière que vous le faites au sein d'une même famille de modèles, c'est-à-dire en utilisant des critères d'information. Cependant, dans la pratique, vous devez calculer l'AIC ou le BIC exactement de la même manière pour tous les modèles considérés, et c'est un défi important. Il serait peut-être préférable d'utiliser la validation croisée des séries chronologiques ou la validation hors échantillon au lieu des critères d'information, mais cela sera beaucoup plus exigeant en termes de calcul (et fastidieux à coder).

Le package Prophet de Facebook automatise également la génération de prévisions basée sur des modèles additifs généraux. Voir ici pour plus de détails . Cependant Prophet ne s'adapte qu'à un seul modèle, bien qu'il s'agisse d'un modèle très flexible avec de nombreux paramètres. L'hypothèse implicite du Prophète est qu'un GAM est "le seul modèle pour les gouverner tous", ce qui pourrait ne pas être théoriquement justifié mais est très pragmatique et utile pour des scénarios du monde réel.

Une autre mise en garde qui s'applique à toutes les méthodes mentionnées ci-dessus: vous voulez probablement faire des prévisions de séries chronologiques automatisées parce que vous voulez prévoir plusieurs séries chronologiques, trop nombreuses pour être analysées manuellement. Sinon, vous pourriez simplement faire vos propres expériences et trouver le meilleur modèle par vous-même. Vous devez garder à l'esprit qu'une approche de prévision automatisée ne trouvera jamais le meilleur modèle pour chaque série chronologique - elle donnera un modèle raisonnablement bon en moyenne sur toutes les séries chronologiques, mais il est toujours possible que certains de ces séries chronologiques auront de meilleurs modèles que ceux sélectionnés par la méthode automatisée. Voir cet articlepour un exemple de cela. Pour le dire simplement, si vous optez pour des prévisions automatisées - vous devrez tolérer des prévisions "assez bonnes" au lieu des meilleures prévisions possibles pour chaque série chronologique.

Skander H. - Réintégrer Monica
la source
Merci pour cette réponse si perspicace. Honnêtement, mon idée initiale en posant cette question était de pouvoir choisir parmi différentes familles de modèles.
StatsNewbie123
Et si l'algorithme devait être appliqué à un domaine plus spécifique, comme la prévision commerciale (pour la planification de la production et la gestion des stocks par exemple)? Pensez-vous qu'il pourrait obtenir de meilleurs résultats?
StatsNewbie123
2
@JoanaClaudino oui, ce serait plus facile - c'est l'essentiel de ce que font les packages de prévision de la demande commerciale. Mais c'est plus facile car, généralement, lorsque vous vous limitez à un domaine métier spécifique, vous pouvez vous limiter à une famille spécifique de modèles (les séries chronologiques provenant du même domaine métier auront des caractéristiques similaires en termes de saisonnalité, de densité de données, etc.). Il est donc prudent de supposer qu'une seule famille conviendra à toutes)
Skander H. - Rétablir Monica
D'accord, je comprends maintenant. Merci encore une fois pour votre aide précieuse.
StatsNewbie123
10

Mon approche suggérée englobe des modèles beaucoup plus généraux que ARIMA car ils incluent le potentiel de variables fictives saisonnières qui peuvent changer avec le temps, plusieurs niveaux, plusieurs tendances, des paramètres qui peuvent changer avec le temps et même des variances d'erreur qui peuvent changer avec le temps. Cette famille est plus précisément appelée modèles ARMAX, mais pour une transparence totale, elle exclut une variante (rare) qui a une structure multiplicative.

Vous avez demandé des conseils et je pense que cela pourrait être un bon point de départ.

Je vous suggère d'écrire du code pour suivre / émuler cet organigramme / flux de travail. Le "meilleur modèle" pourrait être trouvé en évaluant le critère que vous spécifiez ... ce pourrait être le MSE / AIC des données ajustées ou ce pourrait être le MAPE / SMAPE des données retenues ou n'importe quel critère de votre choix.

Soyez conscient que le détail de chacune de ces étapes peut être assez simple si vous n'êtes pas au courant de certaines des exigences / objectifs / contraintes spécifiques de l'analyse des séries chronologiques MAIS cela peut être (devrait être!) Plus complexe si vous avez une compréhension plus approfondie / apprentissage / appréciation des complexités / opportunités présentes dans l'analyse approfondie des séries chronologiques.

entrez la description de l'image ici

entrez la description de l'image ici

On m'a demandé de fournir des instructions supplémentaires sur la façon d'automatiser la modélisation des séries chronologiques (ou la modélisation en général) /stats//search?q=peeling+an+onion contient certaines de mes recommandations sur "éplucher les oignons" et tâches connexes.

AUTOBOX détaille et montre en fait les étapes intermédiaires car il forme un modèle utile et pourrait être un enseignant utile à cet égard. L'idée scientifique dans son ensemble consiste à "ajouter ce qui semble nécessaire" et "supprimer ce qui semble moins qu'utile". C'est le processus itératif suggéré par Box et Bacon dans les temps anciens.

Les modèles doivent être suffisamment complexes (assez sophistiqués) mais pas trop complexes (fantaisistes). Supposer que des méthodes simples fonctionnent avec des problèmes complexes n'est pas cohérent avec la méthode scientifique qui suit Roger Bacon et des tonnes d'adeptes de Bacon. Comme Roger Bacon l'a dit une fois et j'ai souvent paraphrasé: Faire de la science, c'est rechercher des schémas répétés. Détecter des anomalies, c'est identifier des valeurs qui ne suivent pas des schémas répétés. Car quiconque connaît les voies de la Nature remarquera plus facilement ses déviations et, d'autre part, celui qui connaît ses déviations décrira plus précisément ses voies. On apprend les règles en observant quand les règles actuelles échouent. Dans le spirt pf Bacon en identifiant quand le "meilleur modèle / théorie" actuellement identifié est inadeqaute on peut ensuite itérer "une meilleure représentation"

Dans mes mots "Tukey a proposé une analyse exploratoire des données (EDA) qui a suggéré des schémas de raffinement du modèle basés sur une insuffisance évidente du modèle suggérée par les données". C'est le cœur d'AUTOBOX et de la science. L'EDA vise à voir ce que les données peuvent nous dire au-delà de la tâche formelle de modélisation ou de test d'hypothèse.

Le test décisif d'un programme de modélisation automatique est assez simple. Est-ce qu'il sépare le signal et le bruit sans sur-ajustement? Des preuves empiriques suggèrent que cela peut et a été fait. La précision des prévisions est souvent trompeuse car l'avenir n'est pas responsable du passé et selon l'origine que vous choisissez, les résultats peuvent varier et varient.

IrishStat
la source
Merci beaucoup. Votre réponse est extrêmement utile!
StatsNewbie123
Merci, IrishStat. C'est perspicace. Sommes-nous jamais justifiés de conserver un paramètre plutôt que de "supprimer le paramètre", bien que le paramètre ne soit pas statistiquement significatif?
ColorStatistics
1
Oui. si cela vous donne une "réponse plus agréable". Un coefficient de pente qui n'est pas différent de 0,0 peut fournir une prévision plus réaliste (s'il n'est pas statistiquement significatif), sinon le transport de coefficients excédentaires est illogique et entraîne une incertitude accrue dans la prévision de la variance. Certains auteurs incapables de traiter aveuglément / naïvement les tests de nécessité et de suffisance supposent que l'identification du modèle est un processus en une étape tandis que Box et Jenkins (et tout le monde!) Sont soucieux de rendre le modèle aussi complexe que nécessaire mais pas trop complexe. Albert E., JW Tukey et al pour plus d'informations à ce sujet.
IrishStat
3
"Cette approche de prévision automatisée suggérée va trouver le meilleur modèle pour chaque série chronologique en adaptant la forme du modèle, c'est-à-dire en le personnalisant un peu comme un costume personnalisé." C'est une déclaration assez forte - si elle est exacte, cela signifie que cette approche gagnerait haut la main les compétitions M3, M4. A-t-il?
Skander H. - Rétablir Monica
1
@ joana-claudino Je suis particulièrement intéressé par votre projet ISEG car je suis également intéressé à développer une version Python de mes procédures suggérées. Bien sûr, ce serait hors site de SE.
IrishStat