为什么corrcoef返回矩阵?


81

对我来说,np.corrcoef返回一个矩阵似乎很奇怪。

 correlation1 = corrcoef(Strategy1Returns,Strategy2Returns)

[[ 1.         -0.99598935]
 [-0.99598935  1.        ]]

有谁知道为什么会这样,以及是否有可能仅返回经典意义上的一个值?


28
您能否从下面打勾最佳答案?
2015年

Answers:


156

它允许您计算> 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数据集类的一个特例。最好保持相同的返回类型。由于“一个值”可以简单地通过

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

没有特殊理由创建特殊情况。


1
出色的例子,清楚地说明了CORRCOEF的基本功能(除了回答原始问题外)
Hiro

如果我同时传递x和y,则公式是什么?
Evgeni Nabokov

53

corrcoef 返回归一化协方差矩阵。

协方差矩阵是矩阵

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 ]


corrcoef(x,y,rowvar = False)的公式是什么,其中x和y的形状为(150,4)?结果是矩阵8x8(为什么?)。
Evgeni Nabokov

1
@EvgeniNabokov级联x和y的结果,就像它们以(150,8)形状堆叠一样。然后每个组合1个corrcoef。公式是相同的(стандартная)。
sherdim

6

相关矩阵是表达任意有限数量的变量之间的相关性的标准方法。N个数据向量的相关矩阵是对称的N × N矩阵,对角线为1。仅在N = 2的情况下,此矩阵才有一个自由参数。


2

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

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]

1

考虑使用matplotlib.cbook片段

例如:

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

由于cbook已被弃用,因此需要更新。
Van Peer

1

numpy的Correlate函数与要关联的2个1D数组一起使用,并返回一个关联值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.