两个时间序列之间的相似性

Similarity between two time series

我有两个带有加速器读数的文件,我想获得一些度量/测量值以获得这两个文件之间的相似性。 我试过 Pearson 的 R 系数,dtw 距离,dtw 分数。 如果文件相同,Pearson 的 r 给出 returns 值 1,如果文件相同,则 dtw 分数和路径为 0。

但是如果文件和图中的一样,我需要一个解决方案,类似,有一点时间延迟。它们是来自连接到同一来源的两个不同加速器的读数。采样频率和幅度不一样。甚至读数的数量也不相同。时间戳可能不同。

如何衡量这些文件之间的相似性?我可以使用 Python 获得一些指标或度量吗?因为 dtw score 和 dtw distance 确实提供了一些输出,但是我无法说这些文件使用这些值是相似的。

您可以使用 pandas 阅读它们并在连续滞后后获得相关性,例如如果你有如下:

import pandas as pd
df = pd.DataFrame({'val1': range(10),
                   'val2': [0]*5 + list(range(5))})
df
  val1 val2
0   0   0
1   1   0
2   2   0
3   3   0
4   4   0
5   5   0
6   6   1
7   7   2
8   8   3
9   9   4

你可以做到

max([df.val1.corr(df.val2.shift(-delay)) for delay in range(1, len(df))])
>>> 1.0

这将始终导致 1.0,因为两者在某些延迟下是相同的,因为在每次合并每个延迟后它都会获得相关性。您可以根据您的数据对延迟范围进行创意,以避免循环遍历所有数据,或者修改为带有条件 break 的 for 循环,以在您发现它实际位于 1.0 的位置停止。