为什么nump.cov()和np.std()计算的相关性与np.corrcoef()计算的结果不同

时间:2018-08-20 03:34:57

标签: python numpy

我希望有人能帮助我回答为什么numpy.cov()np.std()计算的相关结果与np.corrcoef()直接计算的结果不同。

以下代码显示了不同之处

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

X = np.random.rand(50)
Y = np.random.rand(50)

plt.scatter(X,Y)
plt.xlabel('X Value')
plt.ylabel('Y Value')

# taking the relevant value from the matrix returned by np.cov
print 'Correlation: ' + str(np.cov(X,Y)[0,1]/(np.std(X)*np.std(Y)))
# Let's also use the builtin correlation function
print 'Built-in Correlation: ' + str(np.corrcoef(X, Y)[0, 1])

一个示例输出:

  

关联:-0.0972430699897

     

内置相关性:-0.0952982085899

1 个答案:

答案 0 :(得分:1)

感谢 Brian Borchers

的建议

检查文档后,差异是由于ddof的参数np.std()(自由度增量)默认为0,而1在{ {1}}

修改如下,代码可以产生相同的结果:

np.corrcoef()

示例输出:

  

关联:-0.174042621953

     

内置相关性:-0.174042621953