Python 为什么corrcoef返回一个矩阵?

Python 为什么corrcoef返回一个矩阵?,python,math,numpy,Python,Math,Numpy,我觉得很奇怪,np.corrcoef返回一个矩阵 correlation1 = corrcoef(Strategy1Returns,Strategy2Returns) [[ 1. -0.99598935] [-0.99598935 1. ]] 有人知道为什么会这样吗?在经典意义上是否可能只返回一个值?返回归一化协方差矩阵 协方差矩阵就是矩阵 Cov( X, X ) Cov( X, Y ) Cov( Y, X ) Cov( Y, Y ) 归一

我觉得很奇怪,np.corrcoef返回一个矩阵

 correlation1 = corrcoef(Strategy1Returns,Strategy2Returns)

[[ 1.         -0.99598935]
 [-0.99598935  1.        ]]
有人知道为什么会这样吗?在经典意义上是否可能只返回一个值?

返回归一化协方差矩阵

协方差矩阵就是矩阵

Cov( X, X )    Cov( X, Y )

Cov( Y, X )    Cov( Y, Y )
归一化后,将生成矩阵:

Corr( X, X )    Corr( X, Y )

Corr( Y, X )    Corr( Y, Y )

correlation1[0,0]
Strategy1Returns
与自身之间的相关性,必须为1。您只需要
correlation1[0,1]

相关矩阵是表示任意有限个变量之间相关性的标准方法。N个数据向量的相关矩阵是具有单位对角的对称N×N矩阵。只有在N=2的情况下,该矩阵才有一个自由参数。

它允许您计算>2个数据集的相关系数,例如

>>> from numpy import *
>>> a = array([1,2,3,4,6,7,8,9])
>>> b = array([2,4,6,8,10,12,13,15])
>>> c = array([-1,-2,-2,-3,-4,-6,-7,-8])
>>> corrcoef([a,b,c])
array([[ 1.        ,  0.99535001, -0.9805214 ],
       [ 0.99535001,  1.        , -0.97172394],
       [-0.9805214 , -0.97172394,  1.        ]])
这里我们可以同时得到a,b(0.995),a,c(-0.981)和b,c(-0.972)的相关系数。两个数据集的情况只是N-data-set类的一个特例。也许最好保持相同的返回类型。因为“一个值”可以通过简单的

>>> corrcoef(a,b)[1,0]
0.99535001355530017

创建这种特殊情况没有太大的理由。

考虑使用matplotlib.cbook片段

例如:

import matplotlib.cbook as cbook
segments = cbook.pieces(np.arange(20), 3)
for s in segments:
     print s

numpy的Correlate函数适用于要关联的2个1D数组,并返回一个相关值。

您可以使用以下函数仅返回相关系数:

def pearson_r(x, y):
"""Compute Pearson correlation coefficient between two arrays."""

   # Compute correlation matrix
   corr_mat = np.corrcoef(x, y)

   # Return entry [0,1]
   return corr_mat[0,1]

你能从下面选出最好的答案作为尊重吗?很好的例子,它清楚地说明了CORRCOEF的基本功能(在回答原始问题的基础上)如果我通过x和y,公式是什么?cbook已被弃用,需要更新。CORRCOEF的公式是什么(x,y,rowvar=False),其中x和y的形状是什么(150,4)?结果是矩阵8x8(为什么?。@EvgeniNabokov将串联的x和y的结果视为(150,8)形状。然后每个组合1个corrcoef。公式是相同的(аааааааааааа)。