Python: analyse des séries chronologiques

Présentation de l'analyse des séries chronologiques

Données par ordre chronologique

L'analyse des séries chronologiques traite des données des séries chronologiques. Données de séries chronologiques Des données qui changent avec le temps.

En particulier

Etc. peut être considéré comme des données de séries chronologiques.

L'analyse des séries chronologiques prévoit les ventes de l'entreprise et les ventes de produits De plus, il s'agit d'une technologie d'analyse très importante en entreprise, comme la prévision du nombre de visiteurs.

Apprenez à analyser les données de séries chronologiques à l'aide des StatsModels de Python. Enfin, nous traiterons du modèle SARIMA.

Le but ultime est comme ça.

import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
from pandas import datetime
import numpy as np

#Chargement et organisation des données
sales_sparkling = pd.read_csv("./5060_tsa_data/monthly-australian-wine-sales-th-sparkling.csv")
index = pd.date_range("1980-01-31","1995-07-31",freq="M")
sales_sparkling.index=index
del sales_sparkling["Month"]

#Coupe du modèle
SARIMA_sparkring_sales = sm.tsa.statespace.SARIMAX(sales_sparkling,order=(0,0, 0),seasonal_order=(0, 1, 1, 12)).fit()

#Substituer les données de prédiction pour pred
pred = SARIMA_sparkring_sales.predict("1994-7-31","1997-12-31")

#Visualisation des données pread et des données de séries chronologiques originales
plt.plot(sales_sparkling)
plt.plot(pred,color="r")
plt.show()

Comment représenter des données de séries chronologiques

La première étape de l'analyse des séries chronologiques consiste à visualiser les données des séries chronologiques. Vous pouvez voir différentes choses en visualisant les données.

Utilisation de matplotlib de Python J'ai essayé de montrer la concentration de dioxyde de carbone de l'observatoire du Mauna Loa à Hawaï avec un graphique en ligne brisée.

import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm

#Lire les données(Utiliser les données de test StatsModels)
co2_tsdata = sm.datasets.co2.load_pandas().data
#Gestion des valeurs manquantes
co2_tsdata2 = co2_tsdata.fillna(method="ffill")

#Déterminez le titre du graphique
plt.title("Mauna Loa Weekly Atmospheric CO2 Data")
#Nommer l'axe des x et l'axe des y du graphique
plt.xlabel("date")
plt.ylabel("CO2 Concentration ppmv")
#La période de l'axe des x va de 1995 à 2000, et l'axe des y est la valeur de 355 à 375, et les données sont représentées par un graphique en traits pointillés.
plt.plot(co2_tsdata2)
plt.xlim("1995", "2000")
plt.ylim(355, 375)
plt.show()

Principes de base des données de séries chronologiques

Pour les données de séries chronologiques

Il existe trois modèles: (1) tendance, (2) fluctuation périodique et (3) fluctuation irrégulière.

tendance

Les tendances représentent les tendances à long terme des données. On dit que les données chronologiques dans lesquelles la valeur des données augmente ou diminue avec le temps ont une «tendance». Si la valeur augmente, il y a une tendance positive, si elle diminue, il y a une tendance négative.

Fluctuation périodique

Pour les données avec des fluctuations périodiques, la valeur des données se répète en hausse et en baisse avec le temps. En particulier, les fluctuations périodiques sur une année sont appelées fluctuations saisonnières.

Fluctuation irrégulière

Une fluctuation irrégulière signifie que la valeur des données fluctue indépendamment du passage du temps.

Modélisation des données de séries chronologiques

Qu'est-ce que la modélisation de données chronologiques? Il fait référence à la formulation de données chronologiques sous une forme ou une autre.

Être en mesure d'expliquer les différentes caractéristiques des données chronologiques Construisez un modèle et faites diverses prédictions basées sur ce modèle de série chronologique Le but de cette analyse de séries chronologiques est d'analyser les relations mutuelles.

En observant les données de séries chronologiques réelles, nous pouvons voir que ces trois modèles sont combinés.

Types de données de séries chronologiques

Conversion des données de séries chronologiques

Les données de la série chronologique elles-mêmes qui ne font rien

Cela s'appelle la série originale.

Le but de l'analyse des séries chronologiques est d'explorer la nature de cette série originale. Nous construirons un modèle en clarifiant diverses caractéristiques de la série originale. Ensuite, sur la base de ce modèle, nous prédisons les données et clarifions les relations entre les données de la série chronologique.

Cependant, l'analyse des séries chronologiques traite rarement de la série originale elle-même. En fait, nous traitons les données des séries chronologiques en une nouvelle série et les analysons pour créer un modèle.

à partir de maintenant

Je vais le faire en traitant les données.

Série de journaux

De nombreuses données de séries chronologiques présentent de grandes fluctuations de valeur. C'est la transformation logarithmique qui atténue ces fluctuations dans les données.

Effectuons en fait une conversion logarithmique des données. Ici pour la conversion logarithmique

Numpy np.log()Est utilisé.
np.log()Comment utiliser np.log(Type de trame de données Pandas)Etc
Spécifiez un argument et utilisez-le.
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm

import numpy as np

#Lire les données(Utiliser les données de test StatsModels)
macrodata = sm.datasets.macrodata.load_pandas().data
macrodata.index = pd.Index(sm.tsa.datetools.dates_from_range("1959q1","2009q3"))

#La valeur du PIB réel des États-Unis avant la conversion logarithmique est affichée à partir des données lues.
print(macrodata.realgdp.head())

#Convertissez la colonne prototype en série logarithmique.
macrodata_realgdp_log = np.log(macrodata.realgdp)

#La valeur après la conversion logarithmique est affichée.
print(macrodata_realgdp_log.head())

Série de différence de plancher

Lors de l'analyse des données de séries chronologiques, nous traitons souvent la différence de valeur par rapport à la fois précédente.

Prendre la différence par rapport à la valeur précédente de cette manière s'appelle prendre la différence. La série après avoir pris la différence de cette manière s'appelle la série de différences.

En effectuant cette conversion, la tendance de la série originale peut être supprimée. (Qu'est-ce qu'une tendance? S'agit-il d'une tendance à la hausse dans une perspective large? At-il tendance à se stabiliser? Est-ce une tendance à la baisse? )

J'expliquerai la série originale plus tard en supprimant la tendance Processus constant (propriété selon laquelle la valeur de la série chronologique ne change pas dans le temps dans son ensemble) Cela peut être une conversion importante.

import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
import numpy as np

#Lire les données(Utiliser les données de test StatsModels)
co2_tsdata = sm.datasets.co2.load_pandas().data

#Gestion des valeurs manquantes
co2_tsdata2 = co2_tsdata.fillna(method="ffill")

#Faites la différence dans les données
co2_tsdata2_diff = co2_tsdata2.diff()


plt.subplot(2,1,1)
plt.title("Mauna Loa Weekly Atmospheric CO2 Data")
plt.xlabel("date")
plt.ylabel("CO2 Concentration ppmv")
plt.plot(co2_tsdata2)

plt.subplot(2,1,2)
plt.title("Mauna Loa Weekly Atmospheric CO2 Data DIFF")
plt.xlabel("date")
plt.ylabel("CO2 Concentration ppmv DIFF")
plt.plot(co2_tsdata2_diff)

plt.subplots_adjust(wspace=0, hspace=1.0)

plt.show()

Série désaisonnalisée

Jetons un coup d'œil aux données sur les changements de concentration de dioxyde de carbone à l'observatoire du Mauna Loa.

De cette façon, il est possible de faire des fluctuations périodiques dans un cycle d'un an.

J'ai dit que c'était saisonnier.

Cependant, dans ce graphique linéaire, ce modèle de variation saisonnière fait obstacle. La tendance des données de séries chronologiques est difficile à comprendre.

Rechercher des tendances dans les données non saisonnières à partir de ces données saisonnières Les fluctuations saisonnières sont souvent supprimées de la série originale et les données dont les fluctuations saisonnières ont été supprimées sont

C'est ce qu'on appelle une série désaisonnalisée.
Modèles de statistiques
tsa.seasonal_decompose()En utilisant
Tendances de la série originale, fluctuations saisonnières, fluctuations irrégulières(Erreur résiduelle)Il peut être divisé en.

Du résultat
Ovserved(Premier)Est la série originale
Trend   (Seconde)Est un composant de tendance
Seasonal(Le troisième)Est saisonnier
Residual(Quatrième)Est le résidu
Représente.
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
from numpy import nan as na
import numpy as np

#Lire les données(Utiliser les données de test StatsModels)
co2_tsdata = sm.datasets.co2.load_pandas().data
co2_tsdata2 = co2_tsdata.fillna(method="ffill")
#Ajuster et produire la série originale de façon saisonnière en la divisant en tendances, fluctuations saisonnières et résidus.
fig = sm.tsa.seasonal_decompose(co2_tsdata2, freq=52).plot()
plt.show()

image.png

Statistiques dans les données de séries chronologiques

Valeur attendue (moyenne)

De là, j'utiliserai un peu de mathématiques. Concentrons-nous sur ce que chaque valeur signifie.

Les données sont également décrites à l'aide de statistiques de base dans l'analyse de séries chronologiques.

image.png

Supposons que de telles données soient observées. À ce moment, par exemple, les données du troisième jour

image.png Il est exprimé comme.

La statistique la plus élémentaire est ce que l'on appelle la moyenne attendue.

image.png

Il est exprimé sous forme de et montre la valeur moyenne de la valeur des données de la série chronologique. Au fait

Qu'est-ce que E?(Valeur attendue)Est une abréviation pour.

Trouvons la valeur moyenne des données.

La valeur moyenne est np.mean()Vous pouvez le trouver sur.
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
import numpy as np

#Lire les données(Utiliser les données de test StatsModels)
co2_tsdata = sm.datasets.co2.load_pandas().data
#Gestion des valeurs manquantes
co2_tsdata2 = co2_tsdata.fillna(method="ffill")
#Trouvez la valeur moyenne des données
np.mean(co2_tsdata2)

Dispersion / écart type

L'une des statistiques qui montre à quel point les données de la série chronologique varient de la valeur attendue Il est distribué. La dispersion utilise les valeurs attendues

image.png

Il est exprimé comme.

Et la racine carrée de la variance s'appelle l'écart type.

image.png

Il est représenté par. Aussi, en particulier en finance, cet écart type Cela s'appelle la volatilité. L'écart type est une mesure importante du risque en finance.

Coefficient d'auto-covariance / d'autocorrélation

Ensuite, je présenterai les statistiques et l'auto-covariance propres aux données de séries chronologiques. L'auto-co-distribution est la co-distribution entre différents points temporels dans les mêmes données chronologiques. L'auto-covariance séparée par k points dans le temps est appelée auto-covariation d'ordre k.

image.png

Il est exprimé comme. De plus, ce que nous voyons en fonction de k est cette auto-covariance. C'est ce qu'on appelle une fonction d'auto-co-distribution.

Il est possible de comparer cette auto-covariance entre différentes valeurs. Il s’appelle le coefficient d’autocorrélation.

image.png

Il est exprimé comme. Semblable à l'auto-covariance, ce coefficient d'autocorrélation est considéré comme une fonction de k. C'est ce qu'on appelle une fonction d'autocorrélation. Et un graphique de cette fonction d'autocorrélation

Cela s'appelle un cholérogramme.
Le coefficient d'autocorrélation est simplement une valeur qui montre à quel point il est similaire aux valeurs passées.

Sortie du coefficient d'autocorrélation

Nous afficherons et visualiserons le coefficient d'autocorrélation introduit.

Coefficient d'autocorrélation(ACF:Autocorrelation Function)Est

sm.tsa.stattools.acf()
Le premier argument est la donnée
Le deuxième argument est nlags(Par défaut 40, facultatif)Demandé
Le graphique est

sm.graphics.tsa.plot_acf()
Le premier argument est la donnée
Le deuxième argument est les décalages, ce qui vous permet de calculer et de créer des graphiques.

Dans le cas des données quotidiennes, le décalage peut être décalé de un et l'autocorrélation peut être confirmée. Vous pouvez voir comment la valeur d'il y a un jour affecte aujourd'hui.

Le nombre d'étapes des données décalées est appelé décalage. Le décalage du coefficient d'autocorrélation 0 est toujours égal à 1. Le décalage 0 ne décale pas les données En effet, il existe une corrélation entre les mêmes valeurs. Ceci est une ligne directrice pour la force et la faiblesse du coefficient (d'auto) corrélation.

image.png

À titre d'exemple, le coefficient d'autocorrélation des données de concentration de dioxyde de carbone du Mauna Loa est

import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
import numpy as np

#Lire les données(Utiliser les données de test StatsModels)
co2_tsdata = sm.datasets.co2.load_pandas().data

#Gestion des valeurs manquantes
co2_tsdata2 = co2_tsdata.fillna(method="ffill")

#Trouvez le coefficient d'autocorrélation des données
co2_tsdata2_acf = sm.tsa.stattools.acf(co2_tsdata2, nlags=40)
print(co2_tsdata2_acf)

#Coefficient d'autocorrélation(ACF)Créer un graphique de
sm.graphics.tsa.plot_acf(co2_tsdata2,lags=40)
plt.show()

image.png

Recommended Posts

Python: analyse des séries chronologiques
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
Question sur la série chronologique Python
Analyse des séries chronologiques RNN_LSTM1
Analyse des séries chronologiques 1 Principes de base
Python: analyse des séries temporelles: création d'un modèle SARIMA
Python: Analyse des séries temporelles: Constantity, modèle ARMA / ARIMA
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
Python 3.4 Créer un environnement Windows7-64bit (pour l'analyse des séries chronologiques financières)
Analyse des séries chronologiques
L'intrigue de séries temporelles a commencé ~ édition python ~
Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques
Premier Python
Analyse de données python
Décomposition des séries temporelles
mesure du temps python
Premier Python
Analyse des séries chronologiques 2 Stabilité, modèle ARMA / ARIMA
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
Analyse des séries chronologiques 4 Construction du modèle SARIMA
Analyse des séries chronologiques n ° 6 Faux retour et partie républicaine
Obtenez des données de séries chronologiques de k-db.com avec Python
Analyse de données avec python 2
Analyse de la variation temporelle des trous noirs en utilisant Python
Temps d'exécution de la fonction (Python)
Présentation de l'analyse de données python
Analyse vocale par python
Analyse de survie apprise avec Python 2 - Estimation Kaplan-Meier
Sortie du temps d'exécution de python
Fonction de plancher de temps (Python)
Modèle d'analyse de données Python
Analyse d'association en Python
Analyse vocale par python
python Obtenir l'heure actuelle
Analyse de données avec Python
Afficher les séries chronologiques TOPIX
Diagramme de séries chronologiques / Matplotlib
Analyse de régression avec Python
Introduction à l'analyse des séries temporelles ~ Modèle d'ajustement saisonnier ~ Implémenté en R et Python
[Série chronologique avec plotly] Visualisation dynamique avec plotly [python, cours boursier]
Mon conteneur d'analyse de données python
[Python] Analyse morphologique avec MeCab
Application Python: Pandas Partie 2: Série
Série Python 2 et série 3 (édition Anaconda)
Mémo de mesure du temps d'exécution Python
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Python pour l'analyse des données Chapitre 4
Python: texte japonais: analyse morphologique
[Introduction à la décomposition des éléments] Organisons les méthodes d'analyse des séries chronologiques en R et python ♬
Techniques statistiques Python-Analyse statistique contre Python-
Analyse des émotions par Python (word2vec)