2010-08-06 26 views
27

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

correlation1 = corrcoef(Strategy1Returns,Strategy2Returns) 

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

有谁知道为什么是这样的话,是否可以在传统意义上只返回一个值?

+6

你能从下面选择最好的答案吗? – Yank 2015-05-23 12:58:29

回答

25

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 ]

5

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

59

它允许您计算> 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.  ]]) 

在这里,我们可以得到的相关系数,B(0.995),A,C(-0.981)和B,C(-0.972)在一次。双数据集案例只是N数据集类的特例。可能最好保持相同的返回类型。由于“单值”可以简单地用

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

没有什么大的理由去创建特例。

+0

非常好的例子,它清楚地说明了CORRCOEF的基本功能(除了回答最初的问题之外) – Hiro 2017-06-14 19:48:24

1

考虑使用matplotlib.cbook件

例如:

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

numpy的的相关成分的功能与工作要关联,并返回一个相关值2维数组。

相关问题