包含指定百分比值的间隔

时间:2014-12-03 04:42:59

标签: python numpy statistics

使用numpy或scipy,是否有任何现有方法将返回包含1D数组中指定百分比值的间隔的端点?我意识到这对我自己来说很简单,但它似乎可能是内置的东西,虽然我无法找到它。

E.g:

>>> import numpy as np
>>> x = np.random.randn(100000)
>>> print(np.bounding_interval(x, 0.68))

会给approximately (-1, 1)

2 个答案:

答案 0 :(得分:3)

您可以使用np.percentile

In [29]: x = np.random.randn(100000)

In [30]: p = 0.68

In [31]: lo = 50*(1 - p)

In [32]: hi = 50*(1 + p)

In [33]: np.percentile(x, [lo, hi])
Out[33]: array([-0.99206523,  1.0006089 ])

还有scipy.stats.scoreatpercentile

In [34]: scoreatpercentile(x, [lo, hi])
Out[34]: array([-0.99206523,  1.0006089 ])

答案 1 :(得分:0)

我不知道有这样做的内置函数,但您可以使用数学包编写一个来指定这样的近似索引:

from __future__ import division
import math
import numpy as np

def bound_interval(arr_in, interval):
    lhs = (1 - interval) / 2  # Specify left-hand side chunk to exclude
    rhs = 1 - lhs  # and the right-hand side
    sorted = np.sort(arr_in)
    lower = sorted[math.floor(lhs * len(arr_in))]  # use floor to get index
    upper = sorted[math.floor(rhs * len(arr_in))]
    return (lower, upper)

在指定的数组上,我得到了间隔(-0.99072237819851039, 0.98691691784955549)。非常接近(-1, 1)