Python compare si deux séries chronologiques sont graphiquement similaires

PHPz
Libérer: 2023-04-13 17:49:03
avant
1411 Les gens l'ont consulté

Pour comparer si deux séries chronologiques sont similaires graphiquement, vous pouvez procéder comme suit :

  1. Comparaison visuelle : tracez les deux séries chronologiques sur le même graphique et utilisez les mêmes étiquettes d'échelle et d'axe pour la comparaison. Leurs caractéristiques telles que les tendances, les pics et les creux peuvent être observées et comparées.
  2. Comparaison des pics et des creux : comparez en comparant les pics et les creux de deux séries chronologiques. Leurs amplitudes et positions peuvent être comparées.
  3. Analyse de corrélation : calculez le coefficient de corrélation entre deux séries chronologiques pour déterminer si elles ont une relation linéaire. Si leur coefficient de corrélation est proche de 1, ils ont des tendances similaires.
  4. Méthodes non linéaires : utilisez des méthodes non linéaires pour comparer deux séries temporelles, telles que la déformation temporelle dynamique, la transformation en ondelettes, etc. Ces méthodes peuvent aider à capturer les similitudes entre deux séries chronologiques.

Il est à noter que la similitude des graphiques ne représente pas complètement la similitude entre deux séries temporelles, car un même graphique peut correspondre à des séries temporelles différentes. Par conséquent, lors de la comparaison de séries chronologiques, plusieurs aspects de l’information doivent être pris en compte de manière globale.

1. Préparation

Avant de commencer, vous devez vous assurer que Python et pip ont été installés avec succès sur votre ordinateur. Sinon, vous pouvez consulter cet article : Guide d'installation super détaillé de Python pour l'installer.

(Facultatif 1) Si le but de l'utilisation de Python est l'analyse de données, vous pouvez installer directement Anaconda : Anaconda, une bonne aide pour l'analyse et l'exploration de données Python, a Python et pip intégrés.

(Facultatif 2) De plus , il est recommandé à tout le monde d'utiliser l'éditeur VSCode, qui présente de nombreux avantages : Le meilleur partenaire pour la programmation Python - Guide détaillé VSCode.

Veuillez choisir l'une des méthodes suivantes pour saisir les commandes permettant d'installer les dépendances : 1. Ouvrez Cmd (Démarrer-Exécuter-CMD) dans un environnement Windows. 2. Environnement MacOS Ouvrez le Terminal (commande+espace pour entrer dans le Terminal). 3. Si vous utilisez l'éditeur VSCode ou Pycharm, vous pouvez utiliser directement le terminal en bas de l'interface.

pip install matplotlib
pip install numpy
Copier après la connexion

2 Utilisez Matplotlib pour comparer visuellement deux séries chronologiques

import matplotlib.pyplot as plt

# 生成时间序列数据
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 17, 20]
y2 = [8, 12, 14, 18, 22]

# 绘制两个时间序列的折线图
plt.plot(x, y1, label='y1')
plt.plot(x, y2, label='y2')

# 设置图形属性
plt.xlabel('Time')
plt.ylabel('Value')
plt.title('Comparison of two time series')
plt.legend()

# 显示图形
plt.show()
Copier après la connexion

3. Calculez le coefficient de corrélation de deux séries chronologiques. :

import numpy as np

# 生成时间序列数据
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 17, 20]
y2 = [8, 12, 14, 18, 22]

# 计算相关系数
corr = np.corrcoef(y1, y2)[0, 1]

# 输出结果
print('Correlation coefficient:', corr)
Copier après la connexion

4. Utilisez Python pour implémenter l'algorithme de déformation temporelle dynamique (DTW) :

import numpy as np

# 生成时间序列数据
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 17, 20]
y2 = [8, 12, 14, 18, 22]

# 动态时间规整算法
def dtw_distance(ts_a, ts_b, d=lambda x, y: abs(x - y)):
DTW = {}

# 初始化边界条件
for i in range(len(ts_a)):
DTW[(i, -1)] = float('inf')
for i in range(len(ts_b)):
DTW[(-1, i)] = float('inf')
DTW[(-1, -1)] = 0

# 计算DTW矩阵
for i in range(len(ts_a)):
for j in range(len(ts_b)):
cost = d(ts_a[i], ts_b[j])
DTW[(i, j)] = cost + min(DTW[(i-1, j)], DTW[(i, j-1)], DTW[(i-1, j-1)])

# 返回DTW距离
return DTW[len(ts_a)-1, len(ts_b)-1]

# 计算两个时间序列之间的DTW距离
dtw_dist = dtw_distance(y1, y2)

# 输出结果
print('DTW distance:', dtw_dist)
Copier après la connexion


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!