2010-08-06 64 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維數組。

相關問題