39 0 876KB
Chapitre : Processus non stationnaires Cours : How we can use the ARIMA model in Python Semaine 12 Avril 2020- 16 Avril 2020 Enseignante : Mme Chaouche #Stayhome La base de données Cet base de données décrit le nombre mensuel de ventes de shampooing Venus sur une période de 3 ans. Les unités sont un chiffre d'affaires et il y a 36 observations. L'ensemble de données d'origine est attribué à Makridakis, Wheelwright et Hyndman (1998)
Mois
Ventes
"Month","Sales" "1-01",266.0 "1-02",145.9 "1-03",183.1 "1-04",119.3 "1-05",180.3 "1-06",168.5 "1-07",231.8 "1-08",224.5 "1-09",192.8 "1-10",122.9 "1-11",336.5 "1-12",185.9 "2-01",194.3 "2-02",149.5 "2-03",210.1 "2-04",273.3 "2-05",191.4 "2-06",287.0 "2-07",226.0 "2-08",303.6 "2-09",289.9 "2-10",421.6 "2-11",264.5 "2-12",342.3 "3-01",339.7 "3-02",440.4 "3-03",315.9 "3-04",439.3 "3-05",401.3 "3-06",437.4 "3-07",575.5 "3-08",407.6 "3-09",682.0 "3-10",475.3 "3-11",581.3 "3-12",646.9
Etape 1 : Téléchargez les données et placez-le dans votre répertoire de travail actuel avec le nom de fichier "shampoo-sales.csv". Vous trouverez ci-dessous un exemple de chargement de l'ensemble de données Shampoo Sales avec Pandas avec une fonction personnalisée pour analyser le champ date-heure. L'ensemble de données est référencé dans une année arbitraire, dans ce cas 1900.
L'exécution de l'exemple imprime les 5 premières lignes de l'ensemble de données
Les données sont également représentées sous forme de série chronologique avec le mois le long de l'axe des x et les chiffres des ventes sur l'axe des y.
Nous pouvons voir que l'ensemble de données Shampoo Sales a une tendance claire.
Cela suggère que la série chronologique n'est pas stationnaire et nécessitera une différenciation pour la rendre stationnaire, au moins un ordre de différence de 1. Jetons également un coup d'œil à un tracé d'autocorrélation de la série chronologique. Ceci est également intégré aux Pandas. L'exemple ci-dessous trace l'autocorrélation pour un grand nombre de retards dans la série chronologique.
En exécutant l'exemple, nous pouvons voir qu'il existe une corrélation positive avec les 10 premiers à 12 retards qui est peut-être significative pour les 5 premiers retards. Un bon point de départ pour le paramètre AR du modèle peut être 5.
Etape 2 : ARIMA avec Python La bibliothèque de modèles de statistiques offre la possibilité de s'adapter à un modèle ARIMA. Un modèle ARIMA peut être créé à l'aide de la bibliothèque de modèles de statistiques comme suit: Définissez le modèle en appelant ARIMA () et en passant les paramètres p, d et q. Le modèle est préparé sur les données d'entraînement en appelant la fonction fit (). Les prédictions peuvent être faites en appelant la fonction Predict () et en spécifiant l'indice du ou des temps à prédire. Commençons par quelque chose de simple. Nous adapterons un modèle ARIMA à l'ensemble de données Shampoo Sales et examinerons les erreurs résiduelles.
Premièrement, nous adaptons un modèle ARIMA (5,1,0). Cela définit la valeur de décalage à 5 pour l'autorégression, utilisez un ordre de différence de 1 pour rendre les séries chronologiques stationnaires et utilise un modèle de moyenne mobile de 0. Lors de l'ajustement du modèle, de nombreuses informations de débogage sont fournies sur l'ajustement du modèle de régression linéaire. Nous pouvons désactiver cela en définissant l'argument disp sur 0.
L'exécution de l'exemple imprime un résumé du modèle ajusté. Ceci résume les valeurs de coefficient utilisées ainsi que la compétence de l'ajustement sur les observations dans l'échantillon.
Premièrement, nous obtenons un graphique linéaire des erreurs résiduelles, suggérant qu'il peut encore y avoir des informations sur les tendances non capturées par le modèle.
Ensuite, nous obtenons un tracé de densité des valeurs d'erreur résiduelles, suggérant que les erreurs sont gaussiennes, mais peuvent ne pas être centrées sur zéro.
La répartition des erreurs résiduelles s'affiche. Les résultats montrent qu'il y a effectivement un biais dans la prédiction (une moyenne non nulle dans les résidus)
Notez que, bien que ci-dessus, nous ayons utilisé l'ensemble de données pour l'analyse de séries chronologiques, idéalement, nous effectuerions cette analyse uniquement sur l'ensemble de données d'apprentissage lors du développement d'un modèle prédictif.
Voyons ensuite comment utiliser le modèle ARIMA pour faire des prévisions.
Etape 3 : Prévisions d’un Modèle ARIMA Le modèle ARIMA peut être utilisé pour prévoir les futurs pas de temps. Nous pouvons utiliser la fonction Predict () sur l'objet ARIMAResults pour faire des prédictions. Il accepte l'index des pas de temps pour faire des prédictions comme arguments. Ces indices sont relatifs au début de l'ensemble de données d'apprentissage utilisé pour faire des prédictions. Si nous avons utilisé 100 observations dans l'ensemble de données d'apprentissage pour ajuster le modèle, alors l'indice du prochain pas de temps pour faire une prédiction serait spécifié pour la fonction de prédiction comme start = 101, end = 101. Cela retournerait un tableau avec un élément contenant la prédiction. Nous préférerions également que les valeurs prévues soient dans l'échelle d'origine, au cas où nous aurions effectué une différenciation (d> 0 lors de la configuration du modèle). Cela peut être spécifié en définissant l'argument typ sur la valeur «niveaux»: typ = «niveaux». Alternativement, nous pouvons éviter toutes ces spécifications en utilisant la fonction Forecast (), qui effectue une prévision en une étape à l'aide du modèle. Nous pouvons diviser l'ensemble de données d'apprentissage en trains et ensembles de tests, utiliser l'ensemble de trains pour s'adapter au modèle et générer une prédiction pour chaque élément de l'ensemble de tests. Une prévision glissante est nécessaire compte tenu de la dépendance des observations des pas de temps antérieurs pour la différenciation et le modèle AR. Une façon grossière d'effectuer cette prévision continue consiste à recréer le modèle ARIMA après la réception de chaque nouvelle observation. Nous gardons manuellement une trace de toutes les observations dans une liste appelée historique qui est ensemencée avec les données d'apprentissage et à laquelle de nouvelles observations sont ajoutées à chaque itération. Pour mettre tout cela ensemble, voici un exemple d'une prévision glissante avec le modèle ARIMA en Python.
L'exécution de l'exemple imprime la prédiction et la valeur attendue à chaque itération. Nous pouvons également calculer un score d'erreur quadratique moyen final (MSE) pour les prédictions, fournissant un point de comparaison pour d'autres configurations ARIMA.
Un tracé de ligne est créé montrant les valeurs attendues (bleu) par rapport aux prévisions de prévisions glissantes (rouge). Nous pouvons voir que les valeurs montrent une certaine tendance et sont à la bonne échelle.
Configuration d'un modèle ARIMA L'approche classique pour ajuster un modèle ARIMA est de suivre la méthodologie de BoxJenkins. Il s'agit d'un processus qui utilise l'analyse et le diagnostic de séries chronologiques pour découvrir de bons paramètres pour le modèle ARIMA.
En résumé, les étapes de ce processus sont les suivantes: Identification du modèle. Utilisez des graphiques et des statistiques récapitulatives pour identifier les tendances, la saisonnalité et les éléments d'autorégression afin d'avoir une idée de la quantité de différenciation et de la taille du décalage qui seront nécessaires. Estimation des paramètres. Utilisez une procédure d'ajustement pour trouver les coefficients du modèle de régression. Vérification du modèle. Utilisez des graphiques et des tests statistiques des erreurs résiduelles pour déterminer la quantité et le type de structure temporelle non capturés par le modèle. Le processus est répété jusqu'à ce qu'un niveau d'ajustement souhaitable soit atteint sur les observations dans l'échantillon ou hors échantillon (par exemple, les ensembles de données d'apprentissage ou de test).
Résumé Dans ce TP , vous avez découvert comment développer un modèle ARIMA pour la prévision de séries chronologiques en Python. Plus précisément, vous avez appris: À propos du modèle ARIMA, comment il peut être configuré et hypothèses émises par le modèle. Comment effectuer une analyse rapide de séries chronologiques à l'aide du modèle ARIMA. Comment utiliser un modèle ARIMA pour prévoir à partir d'échantillons de prédictions. Avez-vous des questions sur ARIMA ou sur ce tutoriel? A vous de jouer j’attends vos applications sur ma boite e.mail : [email protected] avant le mois de ramadhan