scipy.stats.spearmanr: 警告:遇到零除错误
我使用了 scipy.stats.spearmanr(a,b)
,结果是:
Warning: divide by zero encountered in divide
这个操作完成得很好,但却显示了一个警告。a
和 b
都是“正常”的数据(没有什么“全是零”的向量之类的)。有人知道这是什么原因,或者怎么能让这个警告不显示吗?
编辑:
这是 spearmanr
中出问题的那一行:
/usr/lib/python2.7/dist-packages/scipy/stats/stats.pyc in spearmanr(a, b, axis)
2226 rs = np.corrcoef(ar,br,rowvar=axisout)
2227
-> 2228 t = rs * np.sqrt((n-2) / ((rs+1.0)*(1.0-rs)))
2229 prob = distributions.t.sf(np.abs(t),n-2)*2
2230
1 个回答
4
除以零是故意设计成这样的,主对角线上的值是1。这种情况在任何值下都会发生。
不过,在scipy 0.9版本中,这个错误在spearmanr函数内部被“静音”了。相关的代码行是:
np.seterr(divide='ignore') # rs可以有等于1的元素