np.corrcoef가 행렬을 반환하는 것이 이상하게 보입니다.
correlation1 = corrcoef(Strategy1Returns,Strategy2Returns)
[[ 1. -0.99598935]
[-0.99598935 1. ]]
왜 이것이 사실이며 고전적인 의미에서 하나의 값만 반환 할 수 있는지 아는 사람이 있습니까?
답변:
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
특별한 경우를 만들 큰 이유가 없습니다.
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 ]
.
다음 함수를 사용하여 상관 계수 만 반환 할 수 있습니다.
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]