2

我有一个很大的数字列表,我想从这些数据中创建一个分布,绘制它,然后找到我列表中每个数字与分布有关的 p 值。

有可能在python中做到这一点吗?我在 matplotlib 文档中找不到它。我应该使用别的东西吗?

4

2 回答 2

3

我建议查看;的stats模块 scipy它为这样的事情提供了许多统计功能。对于绘图,我仍然会使用matplotlib

于 2012-11-20T13:46:21.187 回答
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])

好吧,事实上,如果你想要原始数字的 pvalues,你根本不需要任何特殊函数:pvalues 只是排序数据集中的顺序除以它的长度。如果您需要相对于原始值的新值的 pvalue,您可以使用我给您的代码片段

于 2012-11-20T14:49:37.487 回答