0

I have the following two time series :

enter image description here

The x-axis is over 10000 values. Now, if I break them up into sliding windows, then I don't get a correlation since well, individually they aren't correlating. However, you can see that in the larger picture, they do correlate. I need to show this correlation. Can anyone please give me pointers on how to do this?

I am working in Matlab & Python, but I mainly need an overview really. Thanks!

4

2 回答 2

1

我建议在Matlab中显示两件事来显示整体相关性。让x1,x2向量表示您的数据。

  • 计算c = corrcoef(x1,x2)和观察c(2,1)。这是整个向量的相关系数。它测量在 -1 和 1 之间归一化的相关性。
  • plot(x1,x2,'.','markersize',3). 这绘制了一组点,您可以从中直观地评估相关性。对于相关x1x2,这些点倾向于沿直线形成或多或少的薄云(参见示例形状及其相关的相关系数

如果您的向量包含NaN's,则应首先删除它们:

ind = ~(isnan(x1)|isnan(x2));
x1 = x1(ind);
x2 = x2(ind);

例如:以下两个示例向量给出c=0.91,而云的形状表明存在显着相关性:

信号

云

于 2013-10-09T15:00:15.520 回答
0

这是 Python 中的相关示例,numpy.corrcoef使用以下公式:

在此处输入图像描述

其中 Cij 是变量 xi 和 xj 的协方差(它们都是随机变量)。Pij 变量告诉我们 xi 和 xj 的相似程度,如果两个信号相似,它们接近 1 或 -1,如果它们不相关,它们将接近 0。

>>> import numpy as np
>>> n = 100
>>> x = np.linspace(0, 10, n)
>>> y1 = np.sin(x) + np.random.randn(n) * 0.3 + 2
>>> y2 = np.sin(x) + np.random.randn(n) * 0.5
>>> np.corrcoef(y1,y2)
 [[ 1.          0.79680839]
  [ 0.79680839  1.        ]]

顺便说一句,我们已经关联了两个信号

>>> import matplotlib.pyplot as plt
>>> plt.plot(x,y1, x, y2)
>>> plt.show()

在此处输入图像描述

于 2013-10-09T15:35:37.447 回答