scipy.stats.spearmanr: 警告:遇到零除错误

2 投票
1 回答
1126 浏览
提问于 2025-04-16 23:28

我使用了 scipy.stats.spearmanr(a,b),结果是:

Warning: divide by zero encountered in divide

这个操作完成得很好,但却显示了一个警告。ab 都是“正常”的数据(没有什么“全是零”的向量之类的)。有人知道这是什么原因,或者怎么能让这个警告不显示吗?

编辑:

这是 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的元素

撰写回答