我有一个很大的数字列表,我想从这些数据中创建一个分布,绘制它,然后找到我列表中每个数字与分布有关的 p 值。
有可能在python中做到这一点吗?我在 matplotlib 文档中找不到它。我应该使用别的东西吗?
我有一个很大的数字列表,我想从这些数据中创建一个分布,绘制它,然后找到我列表中每个数字与分布有关的 p 值。
有可能在python中做到这一点吗?我在 matplotlib 文档中找不到它。我应该使用别的东西吗?
我建议查看;的stats
模块 scipy
它为这样的事情提供了许多统计功能。对于绘图,我仍然会使用matplotlib。
您可以使用 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,您可以使用我给您的代码片段