[PYTHON] Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques

Aidemy 2020/10/29

introduction

Bonjour, c'est Yope! Je suis une école littéraire croustillante, mais j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. Je suis très heureux que de nombreuses personnes aient lu l'article de synthèse précédent. Merci! Ceci est le troisième article de l'analyse des séries chronologiques. Ravi de vous rencontrer.

Quoi apprendre cette fois ・ Gérez les données de séries chronologiques avec des pandas ・ Comment rendre les données de séries chronologiques stationnaires

Gérez les données de séries chronologiques avec les pandas

Chargement et affichage des données

-Bien que le but ultime soit d'analyser les données chronologiques avec SARIMA, il est nécessaire d'effectuer un prétraitement sur les données transmises à ce moment. -Si les données de séries chronologiques sont données sous forme de fichier CSV, la lecture Utilisez __pd.read_csv ("chemin du fichier") __.

Convertir les informations de temps en index

-Lors de l'analyse des données de séries chronologiques, convertissez les informations de temps (heure, mois, etc.) en un index pour faciliter leur manipulation. -La procédure de conversion est la suivante. (1) Définissez les informations d'index avec __pd.date_range ("start", "end", freq = "interval") __. (2) Remplacez les informations définies par l'index des données d'origine. ③ Supprimez les informations temporelles des données d'origine.

-Vous pouvez vérifier le début et la fin des données originales saisies en (1) et l'intervalle avec __df.head () __ et __df.tail () __. -Comme pour l'intervalle, si les données sont composées en secondes, passez "S", pour les minutes "min", pour les heures "H", pour les jours "D", et pour les mois "M".

・ Code![Capture d'écran 2020-10-29 14.00.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/8846bc71-71c3-998c- 537b-cd65c3c57872.png)

・ Résultat![Capture d'écran 2020-10-29 14.00.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/efb179c4-e69c-3c49- 6315-bde299bfbfc4.png)

Causes lorsque les données ne sont pas stationnaires

-Les causes lorsque les données de la série chronologique n'ont pas de constance sont __ "tendance" __ et "__ variation saisonnière" __. ・ Lorsqu'il y a stabilité, la valeur attendue doit être constante, mais s'il y a une tendance __ positive, cela signifie que la valeur attendue est sur une tendance à la hausse __, donc on ne peut pas dire qu'il y a stabilité. ・ De même, le coefficient d'autocorrélation doit être constant en cas de stabilité, mais le coefficient d'autocorrélation est constant pour les données avec fluctuations saisonnières, c'est-à-dire les données dans lesquelles la valeur augmente ou diminue soudainement uniquement pour une période de l'année. On ne peut pas dire cela.

-Dans un tel cas, il est possible d'obtenir des données constantes en effectuant __trend et conversion __ qui supprime les fluctuations saisonnières. ・ Après avoir créé un modèle avec ces données stables, la tendance et les fluctuations saisonnières sont à nouveau combinées pour créer un modèle de la série originale.

Rendre les données de séries chronologiques stationnaires

Élimination des tendances et des fluctuations saisonnières

・ Les quatre méthodes suivantes peuvent être utilisées pour éliminer les tendances et les fluctuations saisonnières et maintenir la stabilité. Les détails seront décrits plus tard. ・ Distribution uniforme des fluctuations avec conversion __log __ ・ Prenez __moyenne mobile __ pour estimer la tendance et la supprimer ・ Conversion en série __staff __ (général) ・ Effectuer __ ajustement saisonnier __

Conversion de journal

-Comme vu dans "Time Series Analysis 1", le changement de la valeur des données peut être modéré en effectuant la conversion __log __. -En utilisant cela, il est possible de rendre l'auto-covariance uniforme pour les données avec des changements soudains de valeurs tels que les fluctuations saisonnières. Autrement dit, __ les fluctuations saisonnières peuvent être supprimées __. -Cependant, __trend ne peut pas être supprimé par cette méthode __, il est donc nécessaire d'effectuer un traitement pour supprimer la tendance en plus de la conversion logarithmique. -La conversion logarithmique peut être effectuée avec __np.log (données) __.

・ Code![Capture d'écran 2020-10-29 14.03.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/f3df871c-656e-8524- 0451-329add719538.png)

・ Résultat![Capture d'écran 2020-10-29 14.03.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/447705c8-b9fd-4df5- 94c1-c04840f6dc45.png)

moyenne mobile

-__ Moyenne de mouvement __ signifie prendre la moyenne d'une certaine section tout en déplaçant la section. -La moyenne mobile permet de lisser les données tout en conservant les caractéristiques des données d'origine. Cela permet de supprimer __les fluctuations saisonnières et d'extraire les tendances __. -À titre d'exemple, lorsque les données mensuelles ont des fluctuations saisonnières, les fluctuations saisonnières peuvent être supprimées en prenant 12 moyennes mobiles. En outre, les tendances extraites peuvent également être supprimées par "(série originale) - (moyenne mobile)".

・ La moyenne mobile peut être calculée comme suit. __Data .rolling (window = nombre de moyennes mobiles) .mean () __

-Code (données de concentration de CO2, prenez une moyenne mobile toutes les 51 semaines (1 an))![Screenshot 2020-10-29 14.08.16.png](https: //qiita-image-store.s3.ap) -northeast-1.amazonaws.com/0/698700/3acdfc2c-6d10-a226-0f5c-740246fdfd67.png)

・ Résultat![Capture d'écran 2020-10-29 14.08.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/b1662775-9436-06d6- 173b-78733ceaf6c2.png)

Série de différence de plancher

-Comme vu dans "Analyse des séries chronologiques 1", la gestion des données en prenant la différence de la valeur précédente est appelée scale difference series. ・ Les tendances et les fluctuations saisonnières peuvent être éliminées en utilisant une série de différences. C'est facile à faire, c'est donc le moyen le plus courant d'être constant. -Pour trouver la série de différences, vous pouvez la trouver avec __data.diff () __. ・ Celle pour laquelle la série de différences de premier ordre est obtenue est appelée série de différences primaire, et celle pour laquelle la série de différences pour la série de différences primaire est obtenue est appelée série de différences secondaires.

・ Code![Capture d'écran 2020-10-29 14.09.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/bc547a8a-ee6f-aaf6- 01e1-53a367ecadf3.png)

・ Résultat![Capture d'écran 2020-10-29 14.09.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/9f8ed0bc-d3a3-543f- b80f-8b0a7a17d56f.png)

Ajustement saisonnier

-Comme vu dans "Time Series Analysis 1", en faisant la série désaisonnalisée, les tendances et les fluctuations saisonnières peuvent être supprimées de la série originale. -En tant que mécanisme de suppression, la série originale peut être décomposée en "série originale = tendance + variation saisonnière + résiduelle", mais si elle est convertie en "résidu = série originale- (tendance + variation saisonnière)" Le résidu correspond à la série originale moins les tendances et les fluctuations saisonnières. J'utilise ceci. -Pour créer une série désaisonnalisée, exécutez __sm.tsa.seasonal_decompose (data, freq = spécification de l'intervalle) __.

・ Code![Capture d'écran 2020-10-29 14.19.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/d35cd55e-e896-dd35- fe13-c71155db3fd6.png)

・ Résultat![Capture d'écran 2020-10-29 14.19.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/dc2f14cd-6f70-f0d2- 4092-60ba30444634.png)

Sommaire

-Avant d'effectuer une analyse de séries chronologiques, indexez les informations temporelles des données de séries chronologiques. -Étant donné que les données à transmettre au modèle de série chronologique doivent être stables, il est nécessaire d'effectuer un prétraitement tel que faire une série de différence pour les données sans stabilité.

Cette fois, c'est fini. Merci d'avoir lu jusqu'à la fin.

Recommended Posts

Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
Différenciation des données de séries chronologiques (discrètes)
Analyse des séries chronologiques 4 Construction du modèle SARIMA
Python: analyse des séries chronologiques
Analyse des séries chronologiques RNN_LSTM1
Analyse des séries chronologiques 1 Principes de base
Pré-traitement des données préfectorales
Acquisition de données chronologiques (quotidiennes) des cours des actions
Lissage des séries temporelles et des données de forme d'onde 3 méthodes (lissage)
Voir les détails des données de séries chronologiques dans Remotte
Puissance des méthodes de prédiction dans l'analyse de données chronologiques Semi-optimisation (SARIMA) [Memo]
Analyse des séries chronologiques partie 4 VAR
Analyse de séries chronologiques Partie 3 Prévisions
[Python] Tracer des données de séries chronologiques
Analyse de séries chronologiques Partie 1 Autocorrélation
Détection d'anomalies des données de séries chronologiques par LSTM (Keras)
Calcul de la fidélité des clients dans les séries chronologiques
Analyse des séries chronologiques
À propos des données de séries chronologiques et du surentraînement
Une histoire de regroupement de données de séries chronologiques d'échange
Recommandation d'analyse des données à l'aide de MessagePack
Traitement des données 2 Analyse de divers formats de données
"Analyse des séries chronologiques de mesure des données économiques et financières" Résolution du problème de fin de chapitre avec Python
Ce que vous ne devriez pas faire dans le processus d'analyse des données de séries chronologiques (y compris la réflexion)
Comment extraire des fonctionnalités de données de séries chronologiques avec les bases de PySpark
Comparaison de la prédiction des données de séries chronologiques entre le modèle SARIMA et le modèle Prophet
Prédiction des données de séries chronologiques par projection simplex
Analyse des séries chronologiques 2 Stabilité, modèle ARMA / ARIMA
Prédire les données de séries chronologiques avec un réseau neuronal
J'ai essayé l'analyse de séries chronologiques! (Modèle AR)
Analyse des séries chronologiques Partie 2 AR / MA / ARMA
[Python] Accélère le chargement du fichier CSV de séries chronologiques
Détection d'anomalies de données chronologiques pour les débutants
Conversion des données de temps en notation 25 heures
Comment gérer les données de séries chronologiques (mise en œuvre)
Prétraitement dans l'apprentissage automatique 1 Processus d'analyse des données
Lecture des données de séries chronologiques OpenFOAM et des ensembles de données
Analyse des séries chronologiques n ° 6 Faux retour et partie républicaine
[Pour les débutants] Script dans les 10 lignes (5. Rééchantillonnage des données de séries chronologiques à l'aide de pandas)
mesure du temps
Analyse des données Titanic 2
Analyse de données python
Décomposition des séries temporelles
Analyse des données Titanic 1
Tracer CSV de données de séries temporelles avec une valeur unixtime en Python (matplotlib)
Analyse des données Titanic 3
[Kaggle] J'ai essayé l'ingénierie de quantité de caractéristiques de données de séries chronologiques multidimensionnelles à l'aide de tsfresh
Python: analyse des séries temporelles: création d'un modèle SARIMA
Obtenez des données de séries chronologiques de k-db.com avec Python
Analyse de la variation temporelle des trous noirs en utilisant Python
Raccourcir le temps d'analyse d'Openpose à l'aide du son
Résumé de la méthode Kaggle's Kernel [Table time series data]
[Python] Analyse de données, pratique du machine learning (Kaggle) -Prétraitement des données-
Comment lire les données de séries chronologiques dans PyTorch
Analyse émotionnelle des données de tweet à grande échelle par NLTK
Nettoyage des données 3 Utilisation d'OpenCV et prétraitement des données d'image
Environnement enregistré pour l'analyse des données avec Python
Analyse des données à l'aide de xarray