2010-08-06 38 views
27

Có vẻ lạ với tôi rằng np.corrcoef trả về ma trận.Tại sao corrcoef trả về ma trận?

correlation1 = corrcoef(Strategy1Returns,Strategy2Returns) 

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

Có ai biết tại sao đây là trường hợp và liệu có thể trả lại một giá trị theo nghĩa cổ điển không?

+6

bạn có thể đánh dấu câu trả lời hay nhất từ ​​dưới đây để tôn trọng không? – Yank

Trả lời

25

corrcoef trả về ma trận hiệp phương sai chuẩn hóa.

Ma trận hiệp phương sai là ma trận

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

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

Bình thường, điều này sẽ mang lại ma trận:

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

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

correlation1[0, 0 ] là mối tương quan giữa Strategy1Returns và chính nó, mà cần phải có 1. Bạn chỉ muốn correlation1[ 0, 1 ] .

5

Ma trận tương quan là cách chuẩn để biểu thị mối tương quan giữa số lượng hữu hạn tùy ý của các biến. Ma trận tương quan của N vectơ dữ liệu là đối xứng N × N ma trận có đường chéo thống nhất. Chỉ trong trường hợp N = 2 ma trận này có một tham số miễn phí hay không.

59

Nó cho phép bạn tính toán hệ số tương quan của> 2 tập dữ liệu, ví dụ:

>>> 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.  ]]) 

Ở đây chúng ta có thể có hệ số tương quan a, b (0,995), a, c (-0,981) và b, c (-0,972) cùng một lúc. Trường hợp hai tập dữ liệu chỉ là một trường hợp đặc biệt của lớp N-data-set. Và có lẽ tốt hơn là giữ cùng kiểu trả về. Vì chỉ có thể lấy "một giá trị" với

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

không có lý do gì để tạo trường hợp đặc biệt.

+0

Ví dụ tuyệt vời, minh họa rõ ràng chức năng cơ bản của CORRCOEF (hơn và cao hơn trả lời câu hỏi gốc) – Hiro

1

Xem xét sử dụng mảnh matplotlib.cbook

ví dụ:

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

Chức năng Tương quan giữa các NumPy làm việc với mảng 2 1D mà bạn muốn tương quan và trả về một giá trị tương quan.

Các vấn đề liên quan