两个时间序列之间的相似性
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
的位置停止。
我有两个带有加速器读数的文件,我想获得一些度量/测量值以获得这两个文件之间的相似性。 我试过 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
的位置停止。