np.percentile 不等于四分位数
np.percentile not equal to quartiles
我正在尝试使用 numpy
.
计算 python 中一组值的四分位数
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])
但这是不正确的,因为第一和第三四分位数应分别为 2 和 8.5。
可以表示为:
Q1 = np.median(X[:len(X)/2])
Q3 = np.median(X[len(X):])
Q1, Q3
# (2.0, 8.5)
我无法理解 np.percentile
正在做什么以给出不同的答案。如有任何线索,我将不胜感激。
没有对错之分,只是计算百分位数的方法不同 百分位数在连续情况下是一个定义明确的概念,对于离散样本则不然:不同的方法不会对大量样本产生影响观察结果(与重复次数相比),但实际上对于小样本可能很重要,您需要根据具体情况找出更有意义的方法。
要获得所需的输出,您应该在百分位函数中指定插值 = 'midpoint':
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
我正在尝试使用 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])
但这是不正确的,因为第一和第三四分位数应分别为 2 和 8.5。
可以表示为:
Q1 = np.median(X[:len(X)/2])
Q3 = np.median(X[len(X):])
Q1, Q3
# (2.0, 8.5)
我无法理解 np.percentile
正在做什么以给出不同的答案。如有任何线索,我将不胜感激。
没有对错之分,只是计算百分位数的方法不同 百分位数在连续情况下是一个定义明确的概念,对于离散样本则不然:不同的方法不会对大量样本产生影响观察结果(与重复次数相比),但实际上对于小样本可能很重要,您需要根据具体情况找出更有意义的方法。
要获得所需的输出,您应该在百分位函数中指定插值 = 'midpoint':
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