3

我有一些离散的数据值,它们一起形成某种分布。这是其中之一,但它们不同,峰值位于所有可能的位置,从 0 到结束。 在此处输入图像描述

所以,我想在 Python 中使用它的分位数(百分位数)。我想我可以编写某种函数,它将所有值从零开始,直到达到所需的百分比。但可能有更好的解决方案?例如,要在 SciPy 中创建某种经验分布,然后使用 SciPy 计算百分位数的方法?

最后,我需要左百分位数和右百分位数的 x 坐标。可以使用 20% 和 80% 的百分位数作为示例,稍后我将不得不为我的案例找到最佳数字。

先感谢您!

编辑: 几乎我想要的一些示例代码。

import numpy as np
np.random.seed(0)
distribution = np.random.normal(0, 1, 1000)
left, right = np.percentile(distribution, [20, 80])
print left, right

这会返回百分位数,我需要以某种方式获取它们的 x 坐标。对于正态分布,显然这是可能的,但我有一个未知形状的分布,所以如果百分位数不等于其中一个值(显然这是最常见的事情),它会变得更加复杂。

4

2 回答 2

2

如果您正在寻找经验 CDF,那么您可以使用 statsmodels ECDF。对于百分位数/分位数,您可以使用 numpy percentile

于 2013-12-24T20:10:55.063 回答
0

好的,现在我已经编写了以下函数,现在使用它:

def percentile(distribution, percent):
    percent = 1.0*percent/100
    cum_percent = 0
    i=0
    while cum_percent <= percent:        
        cum_percent = cum_percent + distribution[i]
        i = i+1
    return i

这有点粗糙,因为返回所需值左侧最接近值的索引。就我的目的而言,它是一个临时解决方案,但我希望看到一个用于精确百分位 x 坐标确定的工作解决方案。

于 2013-12-24T21:48:19.997 回答