python - 如何处理Python中Spearman测试中的nan_policy错误

标签 python numpy correlation

我想处理 Spearman 测试中的 nan 结果。看起来像 nan_policy parameter is broken 。我该如何解决这个问题?

from scipy import stats
pvalue=stats.spearmanr([10,100],[1,100])[1]
print(pvalue)

返回nan

pvalue=stats.spearmanr([10,100],[1,100],nan_policy='omit')[1]
print(pvalue)

返回nan

link to相关问题无法解决此问题。 link to如何在Python中检查nan。

最佳答案

我不确定您的示例是否演示了 nan_policy 参数中的错误,该参数引用的是输入而不是输出并且没有nans 在您的输入中。

您得到 nan 是因为您的样本太短,无法进行有意义的统计。从技术上讲,您可能是对的,p 值应该始终是有限的,因此这是一个错误。

也就是说,如果我没有完全误解 Spearman 的等级 cc 是什么,该函数确实会返回错误的 p 值,例如

>>> stats.spearmanr(np.arange(4.),np.arange(4.))
SpearmanrResult(correlation=1.0, pvalue=0.0)

拥有相同排名顺序的四个样本确实不太可能。

编辑:上面的内容对我来说就像是他们使用了一个近似公式来分配 cc 的等级,这对于小的 n 来说效果不太好。所以,你可以做什么?如果您的n很小,请不要使用此函数(抱歉,我无法更具建设性;您可以通过强力计算等级cc的分布,然后计算p-重视自己);如果您的实际样本很大,您可能没问题,但我会根据其他一些统计软件交叉检查一些示例。

关于python - 如何处理Python中Spearman测试中的nan_policy错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41976373/

相关文章:

python - Selenium,使用 Python,如何简化脚本以便我可以从其他 python 脚本运行它们?

python - 我不明白为什么 for 循环不起作用

python - 如何在没有循环的情况下将负元素转换为零?

python - 如何用 Python 计算网络的 Eb(k)?

python - 将 PANDAS 数据框从每月转换为每天

python - 多个重复的 `in` 关键字

python - np.reshape(x, (-1,1)) vs x[ :, np.newaxis]

python - 使用 Numpy 求一组点的平均距离

r 相关矩阵长格式

r - 如何解释相关系数