对我来说,np.corrcoef返回一个矩阵似乎很奇怪。
correlation1 = corrcoef(Strategy1Returns,Strategy2Returns)
[[ 1. -0.99598935]
[-0.99598935 1. ]]
有谁知道为什么会这样,是否有可能只返回一个经典意义上的值?
答案 0 :(得分:118)
它允许您计算> 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)的相关系数。两个数据集的情况只是N数据集类的一个特例。并且可能保持相同的返回类型更好。由于“一个值”可以通过
简单地获得>>> corrcoef(a,b)[1,0]
0.99535001355530017
创建特殊情况没有什么大的理由。
答案 1 :(得分:44)
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 ]
。
答案 2 :(得分:7)
相关矩阵是表达任意有限数量的变量之间的相关性的标准方式。 N 数据向量的相关矩阵是具有单位对角线的对称 N × N 矩阵。只有在 N = 2的情况下,此矩阵才有一个自由参数。
答案 3 :(得分:1)
考虑使用matplotlib.cbook作品
例如:
import matplotlib.cbook as cbook
segments = cbook.pieces(np.arange(20), 3)
for s in segments:
print s
答案 4 :(得分:1)
numpy的Correlate函数与你要关联的2个1D数组一起工作,并返回一个相关值。
答案 5 :(得分:0)
您可以使用以下函数仅返回相关系数:
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]