我想处理 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
最佳答案
我不确定您的示例是否演示了 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/