NP.百分位数不等于四分位数



我正在尝试使用 python 中计算值数组的四分位数 numpy .

X = [1, 1, 1, 3, 4, 5, 5, 7, 8, 9, 10, 1000]

我会做以下几点:

quartiles = np.percentile(X, range(0, 100, 25))
quartiles
# array([1.  ,  2.5 ,  5.  ,  8.25])

但这是不正确的,因为第 1 和第 3 个四分位数应分别为 2 和 8.5。

这可以显示如下:

Q1 = np.median(X[:len(X)/2])
Q3 = np.median(X[len(X):])
Q1, Q3
# (2.0, 8.5)

我无法弄清楚np.percentile在做什么来给出不同的答案。对此有任何了解,我将不胜感激。

没有对错之分,只是计算百分位数的不同方法 百分位数在连续情况下是一个定义明确的概念,对于离散样本来说则不然:不同的方法对于非常大的观察结果(与重复的数量相比(不会产生影响,但实际上对于小样本很重要,您需要逐案找出更有意义的方法。

要获得所需的输出,您应该在百分位数函数中指定插值 = "中点":

quartiles = np.percentile(X, range(0, 100, 25), interpolation = 'midpoint')
quartiles    # array([ 1. ,  2. ,  5. ,  8.5])

我建议您查看文档 http://docs.scipy.org/doc/numpy/reference/generated/numpy.percentile.html

相关内容

  • 没有找到相关文章

最新更新