Comment traiter les problèmes qui surviennent dans les prévisions futures à l'aide du modèle SARIMA (modèle de moyenne mobile de la somme de retour automatique saisonnier)

Je n'avais jamais écrit d'article moi-même, mais je n'ai pas pu trouver de solution au problème que j'ai trouvé cette fois, donc je vais laisser cela comme une sagesse.

Le problème résidait dans la prédiction utilisant le modèle SARIMA utilisé dans l'analyse des séries chronologiques. (Comme il s'agit d'une explication de la pièce obstruée, veuillez étudier comment utiliser le modèle SARIMA ailleurs.)

Adaptez le modèle SARIMA à une série temporelle donnée de la manière suivante:

qiita.rb


SARIMA_2_1_3_011 = sm.tsa.SARIMAX(train.y, order=(2,1,3), seasonal_order=(0,1,1,20)).fit()

J'ai essayé de prédire l'avenir en utilisant ce modèle comme suit. (Autrement dit, l'indice de 169 à 206 est au-delà de la plage des données d'origine et je voulais le prédire)

qiita.rb


pred3 = SARIMA_2_1_3_011.predict(start=169,end=206)

KeyError: 'The `start` argument could not be matched to a location related to the index of the data.'

Ensuite, une telle erreur s'est produite. Comme je ne parle pas anglais, je ne peux que comprendre la signification, donc je ne suis pas sûr, mais le problème semble être que la plage d'index est dépassée. Cependant, le site auquel j'ai fait référence était capable de prédire l'avenir sans aucun problème.

À partir de là, j'ai apporté divers changements et copié des erreurs et j'ai sauté sur des sites de questions à l'étranger pour enquêter, mais je pense que j'ai eu du mal pendant plus de 30 minutes.

Ainsi, la prédiction à laquelle je suis arrivé en conséquence est que "l'apparence de la date, qui est l'index dans les données d'origine, est irrégulière, de sorte qu'il ne sera peut-être pas possible de déterminer l'indice pour la prédiction future". (Par exemple, si l'indice des données d'origine est 1/1, 1/2, 1/3, la prochaine prédiction sera 1/4, 1/5 ..., mais ce sera 1/1, 1/2, 1/4. Si tel est le cas, le prochain index (date) ne sera pas décidé)

Par conséquent, je pense qu'il existe deux solutions à ce problème.

① Ajustez en quelque sorte la régularité de l'indice (2) Combinez les données vides (mais avec index) avec les données originales pour préparer un futur index (bien sûr, la variable objectif reste vide)

En fait, la deuxième méthode a fonctionné, donc je pense que ce sont probablement les bonnes solutions.

Cela a peut-être été difficile à voir car j'écris un article pour la première fois, mais comprenez s'il vous plaît ... De plus, je pense qu'il y a de nombreux points qui ne peuvent être atteints en raison d'un manque de puissance, mais je serais reconnaissant à quiconque l'aurait remarqué de le signaler. J'espère que cela aidera quiconque est coincé avec ce problème.

Recommended Posts

Comment traiter les problèmes qui surviennent dans les prévisions futures à l'aide du modèle SARIMA (modèle de moyenne mobile de la somme de retour automatique saisonnier)
[VLC] Comment gérer le problème de ne pas être au premier plan pendant la lecture
Comment gérer le problème de déformation des caractères japonais lors de la sortie de journaux à l'aide du formateur de journaux JSON
Comment gérer les fuites de mémoire dans matplotlib.pyplot
Comment gérer les erreurs d'exécution dans subprocess.call
[systemd] Comment faire face au problème que fancontrol ne fonctionne pas après la suspension
Comment gérer l'échec de l'initialisation pyenv dans Fish 3.1.0
Comment utiliser le modèle appris dans Lobe en Python
Comment gérer l'exécution de la transaction: échec dans Anaconda
Comment gérer le phénomène que Python (notebook Jupyter) exécuté sur WSL devient abandonné
Comment gérer le problème de l'échec de la construction de pandas 1.1.0 ou version ultérieure sur Alpine Linux
Comment gérer l'erreur selon laquelle le conteneur MySQL de Docker ne démarre pas sur Docker Toolbox
Comment gérer l'entrée du terminal dans l'environnement pipenv sans autorisation lors de l'utilisation de pipenv avec vscode
Comment manipuler le DOM dans iframe avec Selenium
Comment générer une requête à l'aide de l'opérateur IN dans Django
[AWS] Comment gérer l'erreur "Point de code non valide" dans CloudSearch
Une histoire sur la façon de traiter le problème CORS
Pour les débutants, comment gérer les erreurs courantes dans les keras
Comment gérer le problème du déplacement du répertoire actuel lorsque Python est exécuté depuis Atom
Comment traiter l'erreur "Impossible de charger le module" canberra-gtk-module "qui apparaît lorsque vous exécutez OpenCV