将单个时间序列与大量时间序列关联起来

2024-04-23 23:50:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大量的时间序列(M),每个都有N时间点,存储在MxN矩阵中。然后我还有一个单独的时间序列,其中有N个时间点,我想把它与矩阵中的所有时间序列关联起来。在

一个简单的解决方案是逐行遍历矩阵并运行numpy.corrcoef。然而,我想知道有没有一种更快或更简洁的方法来完成这项工作?在


Tags: 方法numpy时间序列矩阵解决方案mxncorrcoef
1条回答
网友
1楼 · 发布于 2024-04-23 23:50:35

让我们使用这个correlation公式:

enter image description here

您可以将X实现为M x N数组,Y作为N元素的另一个单独的时间序列数组,用X作为correlated。因此,假设X和{}分别为A和{},那么一个矢量化的实现将如下所示-

import numpy as np

# Rowwise mean of input arrays & subtract from input arrays themeselves
A_mA = A - A.mean(1)[:,None]
B_mB = B - B.mean()

# Sum of squares across rows
ssA = (A_mA**2).sum(1)
ssB = (B_mB**2).sum()

# Finally get corr coeff
out = np.dot(A_mA,B_mB.T).ravel()/np.sqrt(ssA*ssB)
# OR out = np.einsum('ij,j->i',A_mA,B_mB)/np.sqrt(ssA*ssB)

验证结果-

^{pr2}$

相关问题 更多 >