corrcoef가 행렬을 반환하는 이유는 무엇입니까?


81

np.corrcoef가 행렬을 반환하는 것이 이상하게 보입니다.

 correlation1 = corrcoef(Strategy1Returns,Strategy2Returns)

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

왜 이것이 사실이며 고전적인 의미에서 하나의 값만 반환 할 수 있는지 아는 사람이 있습니까?


28
아래에서 가장 좋은 답변을 존경으로 선택할 수 있습니까?
Yank

답변:


157

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)의 상관 계수를 한 번에 얻을 수 있습니다. 2- 데이터 세트 케이스는 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 (150, 8) 모양으로 hstack 된 것처럼 x와 y를 연결 한 결과. 그런 다음 각 조합에 대해 1 corrcoef. 공식은 동일합니다 (стандартная).
sherdim

6

상관 행렬은 임의의 유한 변수 사이의 상관 관계를 표현하는 표준 방법입니다. N 데이터 벡터 의 상관 행렬은 단일 대각선을 갖는 대칭 N × N 행렬입니다. 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

Correlate of numpy 함수는 상관시키려는 2 개의 1D 배열과 함께 작동하고 하나의 상관 값을 반환합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.