Python 3.x 如何解释此numpy corrcoef输出

Python 3.x 如何解释此numpy corrcoef输出,python-3.x,numpy,correlation,Python 3.x,Numpy,Correlation,我试图计算两个时间序列之间的相关性。我尝试了下面的代码 time1 = np.arange(0,1000,1).reshape((-1,1)) slope1 = 15 slope2 = 3 amp=1000 line1 = time1*slope1+amp line2=time1*(0.5)+amp/10 corr=np.corrcoef(x=line1,y=line2,rowvar = False) 输出是 corr = [[1. 1.][1. 1.]] 我原以为相关性会比1小得多,因

我试图计算两个时间序列之间的相关性。我尝试了下面的代码

time1 = np.arange(0,1000,1).reshape((-1,1))
slope1 = 15
slope2 = 3
amp=1000

line1 = time1*slope1+amp
line2=time1*(0.5)+amp/10

corr=np.corrcoef(x=line1,y=line2,rowvar = False)
输出是

corr = [[1. 1.][1. 1.]]

我原以为相关性会比1小得多,因为这两条线的斜率不同。为什么相关性显示为1?

尽管斜率非常不同,但您可以将相关性视为忽略比例并寻找行驶方向的东西。当一个变量按数量增加
x1
时,另一个变量按数量增加
x1*k
,其中
k
是一个常数,因此它们是完全相关的(它们之间的行为总是相同的).

尽管斜率非常不同,但你可以将相关性视为忽略比例并寻找行进方向的东西。当你的一个变量增加了一个数量
x1
时,另一个变量增加了一个数量
x1*k
,其中
k
是一个常数,因此它们是完全相关的(它们在相互关系中的行为总是相同的)。

如果你是指Excel的R^2中的相关性,你可以使用类似这样的东西(已经为我的工作做好了):

为了可读性,我删除了它们,但您可以使用各种预防措施和错误消息来围绕它们,例如,当两个阵列的大小不相同或不包含NAN时

编辑:使用的公式来自维基百科上的决定系数文章。

如果您指的是Excel的R^2中的相关性,您可以使用类似的内容(已经为我的工作制作了):

为了可读性,我删除了它们,但您可以使用各种预防措施和错误消息来围绕它们,例如,当两个阵列的大小不相同或不包含NAN时

编辑:使用的公式来自维基百科上的决定系数文章。

def correlation(Measure, Fit):
    """Calculates the correlation coefficient R^2 between the two sets
       of Y data provided. Logically, in order for the result to have a sense
       you want both Y arrays to have been created from the same X array."""

    Mean = np.mean(Measure)
    s1 = 0
    s2 = 0
    Size = np.size(Measure) # identical to np.size(Fit)

    for i in range(0, Size):
        s1 += (Measure[i] - Fit[i]) ** 2
        s2 += (Measure[i] - Mean) ** 2
    Rsquare = 1 - s1/s2
    return Rsquare