我有一个很大的数字列表,我想创建一个这个数据的分布,绘制它,然后找到我的列表中关于分布的每个数字的p值。
可以在python中执行此操作吗?我在matplotlib文档中找不到它。我应该使用其他东西吗?
答案 0 :(得分:3)
我建议您查看scipy
的{{3}}模块;它为这样的事情提供了许多统计功能。对于绘图,我仍然会使用stats
。
答案 1 :(得分:0)
您可以使用numpy模块中的searchsorted函数,该函数将为您提供有序数组中一组值的顺序。然后,只需将其重新规范化为原始数组的维度,即可将其转换为pvalue:
data = sorted(rand(10))
new_data = rand(5)
pvals = searchsorted(data,new_data)*1./len(data)
print pvals
#array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
嗯,事实上,如果你想要原始数字的p值,你根本不需要任何特殊功能:pvalues只是排序数据集中的顺序除以它的长度。 如果您需要与原始值相关的新值的pvalues,您可以使用我给你的代码段