Home  >  Article  >  Backend Development  >  Python compares two time series to see if they are graphically similar

Python compares two time series to see if they are graphically similar

PHPz
PHPzforward
2023-04-13 17:49:031295browse

To compare whether two time series are similar graphically, you can do the following:

  1. Visual comparison: Plot the two time series on the same graph and use the same scale and axes tags for comparison. Their characteristics such as trends, peaks and valleys can be observed and compared.
  2. Peak and valley comparison: Comparison is made by comparing the peaks and valleys in two time series. Their amplitudes and positions can be compared.
  3. Correlation analysis: Calculate the correlation coefficient between two time series to determine whether they have a linear relationship. If their correlation coefficient is close to 1, they have similar trends.
  4. Nonlinear method: Use nonlinear method to compare two time series, such as dynamic time warping, wavelet transform, etc. These methods can help capture the similarities between two time series.

It should be noted that the similarity in graphics does not completely represent the similarity between two time series, because the same graphic can correspond to different time series. Therefore, when comparing time series, multiple aspects of information need to be considered comprehensively.

1. Preparation

Before you start, you must ensure that Python and pip have been successfully installed on your computer. If not, you can visit this article: Super Detailed Python Installation Guide to install it.

(Optional 1) If you use Python for data analysis, you can install Anaconda directly: Anaconda, a good helper for Python data analysis and mining, has built-in Python and pip.

( Optional 2) In addition, it is recommended that you use the VSCode editor, which has many advantages: The best partner for Python programming—VSCode Detailed Guide.

Please choose any of the following methods to enter commands to install dependencies: 1. Windows environment Open Cmd (Start-Run-CMD). 2. MacOS environment Open Terminal (command space and enter Terminal). 3. If you are using VSCode editor or Pycharm, you can directly use the Terminal at the bottom of the interface.

pip install matplotlib
pip install numpy

2. Use Matplotlib to visually compare two time series

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()

3. Calculate two Correlation coefficient of time series:

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)

4. Use Python to implement dynamic time warping algorithm (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)


The above is the detailed content of Python compares two time series to see if they are graphically similar. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:51cto.com. If there is any infringement, please contact admin@php.cn delete