Conférencier
|
Transcription
|
| |
Bonjour, merci d'avoir pris le temps de regarder ceci. Je m'appelle Jacob Rhyne. Je suis testeur de logiciels pour JMP. Aujourd'hui, je vais partager avec vous un complément que j'ai écrit pour vous aider à choisir entre un modèle ARIMA ou un modèle State Space Smoothing dans la plate-forme Time Series de JMP. |
| |
Je commence donc par un bref aperçu de l'ajustement des modèles ARIMA et State Space Smoothing dans la plate-forme Time Series. |
| |
Je vais introduire la nécessité d'un complément pour aider à choisir entre ces deux classes de modèles. Et donnez un aperçu de la validation croisée des séries temporelles, qui est l'outil principal du complément. Ensuite, je terminerai par la démo du complément utilisant JMP 16.1. |
| |
La plate-forme Time Series de JMP permet aux utilisateurs de s'adapter à de nombreux modèles de séries temporelles différents. Cette présentation se concentrera sur les modèles ARIMA et State Space Smoothing et je montrerai comment les ajuster à l'aide de cet exemple de données Steel Shipments. |
| |
L'échantillon de données sur les expéditions d'acier contient les totaux mensuels des expéditions d'acier aux États-Unis de 1984 à 1991. Et, je vais explorer cela avec la plate-forme Time Series dans le menu Modélisation spécialisée. |
| |
La colonne Steel Shipments est ma série chronologique. La colonne de date est mon ID de temps. Supposons que je m'intéresse à la prévision des deux prochaines années d'expéditions d'acier. Donc, comme il s'agit de données mensuelles, j'ai besoin de 24 périodes de prévision. Et je clique sur OK pour lancer mon rapport de séries chronologiques. |
| |
Vous pouvez voir que j'ai un tracé sur la série chronologique, quelques statistiques de base de la série, ainsi que des diagnostics de série chronologique de base. |
| |
J'aimerais adapter un modèle ARIMA à cette série, et lorsque j'adapte un modèle ARIMA, je dois décider, dois-je procéder à des transformations ou à des différenciations. Je vais donc utiliser l'option Différence dans le menu Séries temporelles pour explorer cela. |
| |
Je vais commencer par une différenciation non saisonnière de la commande un, puis cliquer sur estimation. |
| |
Maintenant, j'ai un tracé de la série des différences. Cela semble mieux en termes d'être plus stationnaire, mais j'ai toujours une certaine saisonnalité ici. Et, je peux le dire en regardant les diagnostics. Je descends au décalage numéro 12. |
| |
Je peux voir que la valeur de corrélation automatique est élevée et que la corrélation automatique partielle est également un peu élevée pour le décalage 12. Cela suggère donc que je devrais adapter un modèle ARIMA saisonnier avec une différenciation non saisonnière et saisonnière. |
| |
Je vais fermer ce rapport de différence juste pour garder mon rapport propre. Et, je vais explorer l'ajustement de différents modèles ARIMA, avec l'option de groupe de modèles ARIMA. |
| |
J'ai donc décidé d'adapter un modèle ARIMA saisonnier avec un ordre de différenciation non saisonnier de un et un ordre de différenciation saisonnier de un. Mais, pour les commandes autorégressives et moyennes mobiles, je vais les laisser être soit zéro, soit un. |
| |
Ainsi, lorsque je clique sur estimer, JMP va s'adapter à ces 16 modèles ARIMA saisonniers différents. Je peux faire défiler jusqu'à la fenêtre de comparaison des modèles et afficher ces modèles. Les modèles sont triés par ordre décroissant par AIC, je vais donc sélectionner le modèle qui minimise l'AIC. |
| |
Je peux faire défiler vers le bas pour jeter un œil au modèle et au rapport. Je peux voir qu'il est stable et inversible. Je pourrais regarder à travers le tableau des estimations de paramètres. Jetez un œil aux prévisions et aux intervalles de prévision. |
| |
Supposons que j'ai parcouru tous ces diagnostics et que je sois satisfait de ce modèle saisonnier ARIMA en tant que candidat à considérer pour la prévision. |
| |
Je vais donc supprimer ces autres modèles ARIMA saisonniers du rapport. |
| |
Et disons, je veux également envisager d'utiliser un modèle de lissage de l'espace d'état pour créer une prévision. Je peux le faire en utilisant l'option Lissage de l'espace d'état du menu des séries chronologiques. |
| |
Je dois dire que la période est de 12 car il s'agit de données mensuelles, et je vais juste adapter tous les modèles de lissage d'espace d'état recommandés pour cette série chronologique. |
| |
Je clique donc sur OK pour exécuter que si je fais défiler jusqu'au rapport de comparaison de modèle, je peux voir que JMP a adapté tous les modèles de lissage d'espace d'état recommandés. Ils sont à nouveau triés par ordre décroissant par AIC. |
| |
Ainsi, le modèle qui a minimisé l'AIC était un modèle d'erreur multiplicative sans tendance et sans saisonnalité multiplicative. Alors, je vais sélectionner ce modèle |
| |
dans l'aperçu de la comparaison du modèle et faites défiler vers le bas pour voir l'ajustement du modèle. |
| |
Je peux donc parcourir le résumé du modèle, je peux consulter le tableau des estimations des paramètres. |
| |
Vous pouvez afficher les prévisions et les intervalles de prévision. Disons que j'ai parcouru tous ces diagnostics et que je suis satisfait de ce modèle de lissage de l'espace d'état comme candidat à considérer pour la prévision. |
| |
Je vais donc supprimer l'autre State Space Smothing Model de mes modèles et de ma fenêtre de comparaison de modèles. |
| |
Alors maintenant, la question est de savoir comment choisir entre ce modèle ARIMA que j'envisage et le modèle State Space Smoothing que j'envisage pour la prévision. |
| |
Vous pouvez voir que j'ai cet avertissement de lecture de texte qui me dit que les critères basés sur la probabilité ne sont pas comparables entre les différentes classes de modèles. |
| |
Et cela signifie que je ne peux pas simplement faire défiler et afficher l'AIC et dire, puisque l'AIC est inférieur, pour le modèle ARIMA, je vais l'utiliser pour la prévision. |
| |
Ce n'est pas une décision valide. Alors qu'est-ce que je fais? Eh bien, une option est déjà disponible dans JMP. Si vos données sont assez longues. |
| |
pour définir une retenue, vous pouvez utiliser l'option de prévision sur retenue lors du lancement de la plateforme Time Series. |
| |
Et ce que cela ferait, c'est que cela s'adapterait à tous les modèles de séries chronologiques que vous avez utilisés pour l'ensemble de formation. Et, dans la fenêtre de comparaison des modèles au lieu de trier les modèles par AIC, |
| |
il triera les modèles en fonction de l'erreur quadratique moyenne ou RMSE de l'ensemble de retenue et vous choisirez le modèle qui minimise la RMSE de l'ensemble de retenue. |
| |
Cependant, si vos données ne sont pas assez longues pour utiliser un ensemble de retenue, nous ne pouvons pas utiliser l'option de prévision sur retenue, et nous avons besoin d'une autre méthode pour nous aider à choisir entre un modèle ARIMA ou un modèle de lissage de l'espace d'état. |
| |
Et pour faire ça. |
| |
C'est pourquoi j'ai fait le complément. Ainsi, le complément vous aide à choisir en utilisant ce qu'on appelle la validation croisée des séries temporelles. |
| |
La validation croisée des séries chronologiques divise essentiellement votre série chronologique en plusieurs ensembles d'entraînement et de test où tout groupe successif étend l'ensemble d'entraînement d'une ligne. |
| |
Je vais donner un exemple détaillé de validation croisée de séries temporelles momentanément, mais je tiens à préciser que je n'ai pas inventé cette méthode. Si vous souhaitez en savoir plus, |
| |
après avoir visionné cette conférence, il s'agit d'une ressource que je recommanderais sur les principes et la pratique de prévision par le Dr Rob Hyndman. |
| |
Mais regardons un exemple de validation croisée de séries temporelles. |
| |
Disons que j'ai des données pour les résultats du box-office nord-américain de janvier à juillet 2021 parce que je suis un fan de cinéma. |
| |
Et j'aimerais prévoir les six prochaines semaines au box-office en utilisant soit un modèle ARIMA, soit un modèle State Space Smoothing. Et, pour décider quelle prévision utiliser, j'aimerais utiliser la validation croisée des séries chronologiques. |
| |
Comme je l'ai mentionné, la validation croisée des séries chronologiques sous-ensembleera vos données en groupes d'ensembles d'entraînement et de test où vous étendez l'ensemble d'entraînement d'une ligne et de chaque groupe successif. |
| |
Je dois donc décider du nombre de lignes que je veux dans mon ensemble d'entraînement initial. |
| |
Par défaut, mon complément vous fera disposer de six groupes de validation croisée de séries temporelles. Cela vous donnera donc un nombre suggéré de lignes par défaut à utiliser dans votre ensemble d'entraînement initial, mais vous pouvez le modifier si vous le souhaitez. |
| |
Je vais conserver la valeur par défaut de 17 lignes initiales dans l'ensemble d'apprentissage pour cet exemple. |
| |
Lorsque vous lancez le complément de validation croisée de séries temporelles, vous obtiendrez un rapport de séries temporelles standard. Mais, il va également ajouter une zone de contour pour vos contrôles de validation croisée de séries temporelles au bas du rapport. |
| |
Ici, vous devez donc spécifier le nombre de lignes initiales, c'est-à-dire le nombre de lignes de votre premier ensemble d'entraînement, la durée de prévision qui vous intéresse et la période si vous souhaitez adapter des modèles saisonniers. |
| |
Je vais donc conserver la valeur par défaut de 17 lignes dans l'ensemble d'apprentissage, ce qui me permettra d'avoir six groupes de validation croisée de séries temporelles différents. |
| |
J'aurai une durée de prévision de six parce que je veux prévoir les six prochaines semaines au box-office. Et, ici, je vais garder la période égale à manquante car je ne vais pas ajuster les modèles saisonniers pour ces données particulières. |
| |
Examinons donc le premier groupe de validation croisée de séries temporelles. |
| |
Vous pouvez voir que j'ai 17 lignes dans mon premier jeu d'entraînement et que les six lignes suivantes sont mon jeu de test. |
| |
Ce que mon complément va faire, c'est qu'il s'adaptera à tous les modèles ARIMA que je lui ai demandés pour l'ensemble d'entraînement. Et cela va adapter les modèles de lissage d'espace d'état recommandés à l'ensemble d'apprentissage. |
| |
Il va sélectionner le meilleur modèle de chaque classe par AIC et prendre mes prévisions de modèles sélectionnés dans l'ensemble de test et évaluer l'erreur de prévision. |
| |
Le deuxième groupe de validation croisée de séries temporelles va étendre l'ensemble d'entraînement d'une ligne, donc maintenant mon ensemble d'entraînement est |
| |
composé des lignes 1 à 18 et les six lignes suivantes sont mon ensemble de test. Et puis je répète le processus que j'ai fait dans le premier groupe de validation croisée de séries temporelles. |
| |
J'adapte tous les modèles ARIMA demandés par l'utilisateur et j'adapte les modèles de lissage de l'espace d'état recommandés. Sélectionnez le meilleur modèle par la prévision AIC dans l'ensemble de test et stockez l'erreur de prévision. |
| |
Et je continue à le faire jusqu'à ce que j'aie utilisé toutes mes données. Ainsi, le dernier groupe de validation croisée de séries temporelles pour cet exemple utiliserait les lignes 1 à 22 pour l'ensemble d'apprentissage, puis utiliserait le reste des données, les six dernières lignes comme ensemble de test. |
| |
J'ai donc mentionné que je stockais l'erreur de prévision pour chaque groupe de validation croisée de séries temporelles. |
| |
Ce que le complément fait, c'est qu'il rapporte le RMSE, le MAE et le MAPE globaux pour les deux classes de modèle et il vous donne un tracé du RMSE pour chaque groupe de validation croisée de séries temporelles. |
| |
Et vous pouvez utiliser ce tableau et ce graphique pour vous aider à décider si vous devez adapter chaque modèle pour la prévision ou la prévision du modèle de lissage de l'espace d'état. |
| |
Jetons un coup d'œil au complément en action avec ces données. |
| |
Je vais donc ouvrir mes données de box-office que j'ai obtenues de box office mojo et je vais juste exécuter ce script qui lance simplement la plate-forme Time Series pour ces données, car je veux juste jeter un œil à la série temporelle. |
| |
Je fais des prévisions, le brut moyen au box-office par semaine et je peux voir qu'au fil des semaines, la variance et le brut moyen augmentent et j'aimerais donc effectuer une transformation de journal |
| |
au brut moyen. Je peux le faire en créant une colonne de formule de journal pour le brut moyen mais |
| |
ce n'est pas nécessaire, le complément vous donne la possibilité d'effectuer une transformation Box Cox, tout comme la plate-forme Time Series standard. Donc, je vais lancer mon add-in, cliquez après la clause de non-responsabilité. Je veux prévoir la moyenne de fermeture du box-office par semaine pour les six prochaines semaines. |
| |
et je veux prendre une transformation de journal au brut moyen, donc j'utiliserai une transformation Box Cox avec Lambda égal à zéro. |
| |
Et je vais cliquer sur OK. |
| |
Cela lance donc le rapport de série chronologique standard pour la réponse transformée de Box Cox. Je pouvais adapter n'importe quel type de modèles de séries temporelles, je voulais qu'ils soient disponibles dans JMP avec ce menu en triangle rouge. |
| |
Mais à la place, je vais descendre au bas du rapport et utiliser la validation croisée des séries chronologiques pour obtenir une recommandation quant à savoir si je dois m'adapter et un modèle ARIMA ou un modèle de lissage de l'espace d'état. |
| |
Je vais garder les lignes initiales à 17, car cela me donnera six groupes de validation croisée de séries temporelles que je viens de montrer dans l'exemple précédent. |
| |
Je vais garder une durée de prévision de six parce que je veux prévoir les six prochaines semaines au box-office et je vais garder la période égale à manquante pour cet exemple. |
| |
Je vais donc cliquer sur exécuter et maintenant je dois dire quels modèles ARIMA voudrais-je intégrer dans chaque groupe de validation croisée de séries temporelles. Donc, je décide que j'aimerais utiliser la différenciation non saisonnière d'un, mais je laisserai les ordres autorégressifs et les moyennes mobiles être soit zéro, soit un. |
| |
Ainsi, lorsque je clique sur estimer, ce qui va se passer, c'est que chaque groupe de validation croisée de séries temporelles s'adaptera à ces quatre modèles ARIMA et aux modèles de lissage d'espace d'état recommandés. |
| |
Je clique donc sur estimation, ce que le complément fait est d'étendre cet ensemble de données dans mes six groupes de validation croisée de séries chronologiques en adaptant les modèles demandés à l'ensemble d'apprentissage, en prévoyant dans l'ensemble de test et en stockant l'erreur de prévision. |
| |
Je vais donc faire défiler vers le bas et voir les résultats. Vous pouvez voir dans le tableau que dans l'ensemble, les modèles ARIMA ont produit des RMSE, MAE et MAPE inférieurs à ceux des modèles de lissage de l'espace d'état. Et, si je regarde l'intrigue |
| |
Je peux voir que les modèles ARIMA ont produit un RMSE inférieur pour chaque groupe de validation croisée de séries chronologiques. |
| |
Ce complément recommande donc d'utiliser un modèle ARIMA pour créer des prévisions pour ces données, au lieu d'un modèle de lissage de l'espace d'état. Je peux donc accéder au menu du triangle rouge et ajuster un modèle ARIMA avec l'option de groupe de modèles ARIMA. |
| |
Voyons un autre exemple du complément, et pour faire cet exemple suivant, je vais utiliser un sous-ensemble des données d'exemple MC3 Quarterly. |
| |
L'échantillon de données trimestriel MC3 contient des données pour un peu plus de 100 séries chronologiques différentes du concours de modélisation MC3. Les séries sont toutes trimestrielles. |
| |
Je pense que c'est un ensemble de données intéressant simplement parce qu'il contient tellement de séries chronologiques différentes. Cependant, juste pour des raisons de temps dans cette conférence, je viens de prendre un sous-ensemble aléatoire de trois des séries de la table. |
| |
Je vais donc lancer mon add-in. |
| |
Et configurer le lanceur ma colonne Y est ma série temporelle, le temps est l'ID de temps. Et, comme j'ai des données pour plusieurs séries, je dois utiliser l'option by pour la colonne de la série. Disons à nouveau que je veux faire des prévisions pour les deux prochaines années, je vais donc entrer huit périodes de prévision et cliquer sur OK. |
| |
Cela a fait apparaître le rapport sur les séries chronologiques pour chaque série différente de mon tableau, comme vous vous en doutez. Et j'ai également des contrôles de validation croisée de séries temporelles pour chaque série du tableau. |
| |
Je pourrais donc utiliser la validation croisée des séries chronologiques pour chacune de ces séries afin d'obtenir une recommandation sur l'utilisation d'un modèle ARIMA ou d'un modèle de lissage de l'espace d'état pour les prévisions. |
| |
Pour gagner du temps, je ne le ferai que pour la première série. Je vais utiliser une période de quatre car j'aimerais adapter des modèles saisonniers pour cette série. Je clique sur exécuter. |
| |
Je vais donc utiliser un ordre de différenciation non saisonnier de un, mais tous les autres ordres de moyenne mobile autorégressive et l'ordre de différenciation saisonnier que je laisserai vont de zéro à un. |
| |
Définissez la période d'observation sur quatre car, encore une fois, il s'agit de données trimestrielles. Donc, ce qui va se passer quand je clique sur estimation, c'est que ça va s'adapter à ces 32 modèles ARIMA |
| |
dans chacun des groupes de validation croisée de séries chronologiques. Le complément va donc là où la série est N 691. |
| |
Il l'étend à six groupes de validation croisée de séries chronologiques différents. Il adapte mes modèles ARIMA demandés à l'ensemble d'entraînement. Les modèles de lissage de l'espace d'état recommandés pour l'ensemble d'apprentissage. |
| |
Sélection du meilleur modèle par AIC. Prévision dans l'ensemble de test et stockage de l'erreur de prévision. |
| |
Je vais lui donner une seconde pour finir. |
| |
Nous y voilà. |
| |
Et je peux faire défiler et voir les résultats. Ainsi, comme vous pouvez le voir dans le tableau, les modèles ARIMA ont produit des RMSE, MAE et MAPE inférieurs à ceux des modèles de lissage de l'espace d'état. |
| |
Et d'après l'intrigue, je peux voir que dans tous les groupes de validation croisée de séries chronologiques sauf le dernier, les modèles ARIMA avaient un RMSE inférieur |
| |
qu'un modèle de lissage de l'espace d'état, et c'était à peu près la même chose dans le dernier groupe. |
| |
Donc, encore une fois, il s'agit d'une validation croisée de séries chronologiques et nous recommandons d'utiliser un modèle ARIMA pour créer des prévisions pour la série N 691. Et, vous pouvez aller aux autres séries différentes et répéter le processus et pour ceux-ci, il peut recommander un modèle de lissage de l'espace d'état. |
| |
Je terminerai donc la démo en montrant qu'une autre fonctionnalité du complément n'est en fait pas liée à la validation croisée des séries temporelles. |
| |
Je vous ai également donné la possibilité d'utiliser un ensemble de test pour évaluer les prévisions avec le complément, et je vais le montrer à nouveau en utilisant les données d'exemple Steel Shipments. Je vais donc lancer mon add-in. OK, je veux prévoir les expéditions d'acier par date. |
| |
Disons que je veux faire des prévisions pour les deux prochaines années, alors prenez 24 périodes de prévision et, comme je l'ai déjà mentionné, si votre série est suffisamment longue, pour un ensemble de retenue, vous pouvez utiliser l'option de prévision sur retenue |
| |
pour sélectionner des modèles. Donc, puisque je fais cela, je n'ai pas vraiment besoin d'utiliser la validation croisée des séries temporelles. Donc, je peux utiliser l'option d'ensemble de test d'entraînement |
| |
d'avoir un ensemble de tests indépendant pour évaluer le modèle que je choisis. Je vais décider que je veux que la durée de mon test soit de 12. |
| |
Et cela signifie que cela va prendre les 12 dernières lignes de mes données et les garder complètement hors de mon analyse, afin que je puisse les utiliser pour évaluer les performances de mes prévisions. Je vais donc cliquer sur OK. |
| |
Et vous pouvez voir que ce qui s'est passé, c'est que j'ai ajouté une autre colonne au tableau. C'est juste une colonne indicatrice pour l'ensemble de test où elle est égale à un si la ligne est incluse dans l'ensemble de test et à zéro si ce n'est pas le cas. |
| |
Et cela ne va adapter ces modèles de séries temporelles qu'aux lignes où l'ensemble de test est égal à zéro. Cela me permet de préserver l'indépendance de l'ensemble de test. |
| |
Ajustons donc quelques modèles ARIMA à ces données. J'utilise les mêmes commandes que celles que j'ai utilisées au début de cette conférence avec un ordre de différenciation saisonnier et non saisonnier de un, mais je laisse tous les autres ordres aller de zéro à un. |
| |
Je clique donc sur estimation pour exécuter ces 16 modèles ARIMA saisonniers différents et j'adapterai également les modèles de lissage d'espace d'états recommandés. |
| |
Donc, je vais faire défiler jusqu'à la fenêtre de comparaison de modèle, et je peux voir que le modèle qui minimise l'erreur quadratique moyenne dans l'ensemble de retenue était le modèle de lissage de l'espace d'état avec erreur additive sans tendance et saisonnalité additive. |
| |
Disons que je suis également intéressé par les performances du modèle ARIMA le plus performant dans l'ensemble de test. Je peux aussi le sélectionner. |
| |
Et je supprimerai les autres modèles que je n'envisage plus pour la prévision. |
| |
Donc, encore une fois, j'ai utilisé l'option de prévision sur retenue, donc je choisirais ce modèle de lissage de l'espace d'état à utiliser pour la prévision, mais je suis juste curieux de savoir comment le modèle ARIMA fonctionnerait dans l'ensemble de test. |
| |
Je peux donc faire défiler jusqu'à ma boîte d'analyse de l'ensemble de test. Et, ce que cela va faire, puisque j'ai utilisé l'option de prévision sur retenue, c'est que ces deux modèles sélectionnés seront réajustés aux données combinées d'entraînement et de retenue pour obtenir les paramètres mis à jour. |
| |
Et puis il va faire des prévisions dans l'ensemble de test et évaluer comment la prévision a fonctionné par rapport aux données réelles de l'ensemble de test. |
| |
Je clique donc sur Exécuter pour effectuer cette analyse. Et, je peux voir que j'ai un tableau de l'ensemble de test RMSE, MAE et MAPE, et un tracé de l'ensemble de test par rapport aux prévisions. |
| |
Je peux voir que non seulement le modèle de lissage de l'espace d'état a mieux fonctionné dans l'ensemble de retenue, mais également dans l'ensemble de test. Ainsi, cette option d'analyse d'ensemble de test vous donne simplement un outil pour évaluer les performances de votre modèle. |
| |
Donc, juste pour résumer. Le complément vous permet d'effectuer une validation croisée de séries temporelles. |
| |
Je pense que ce complément pourrait vous être utile si vous avez des données de séries chronologiques qui ne sont pas assez longues pour utiliser l'option de prévision de retenue qui est dans JMP mais que vous souhaitez toujours envisager d'utiliser différentes classes de modèle. |
| |
Le complément vous donne également la possibilité d'utiliser un ensemble de test pour évaluer les prévisions. Et, tout comme un avertissement, comme pour toutes les mesures de sélection de modèle pour les données de séries chronologiques, le complément ne garantit pas des prévisions plus précises. |
| |
Merci beaucoup pour votre temps. J'espère que vous essayez le complément et j'espère que vous apprécierez le reste de Discovery. Merci beaucoup. |