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?
time-series
forecasting
python
StatsNewbie123
la source
la source
Réponses:
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.
la source
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.
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.
la source