我希望有人能帮助我回答为什么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
答案 0 :(得分:1)
感谢 Brian Borchers
的建议检查文档后,差异是由于ddof
的参数np.std()
(自由度增量)默认为0
,而1
在{ {1}}
修改如下,代码可以产生相同的结果:
np.corrcoef()
示例输出:
关联:-0.174042621953
内置相关性:-0.174042621953