解释 NumPy 中百分位数计算的不同方法

问题描述 投票:0回答:1

我试图创建一些我拥有的数据的箱线图。我首先使用 Excel 绘制它们,但想继续使用 Python 以便能够对它们进行个性化。然而,我惊讶地发现这两个软件包中的箱线图给出的四分位数 Q1 和 Q3 的位置存在差异。

我注意到 Excel 默认使用“独占中位数”计算来显示四分位数。我想知道NumPy中计算百分位数的方法中是否有类似的东西,如果有人知道,这些是如何计算的?我无法在每种方法中找到好的信息。

提前谢谢您,

我尝试使用 NumPy 中的所有分位数计算方法,但无法获得 Excel Exclusive 中位数方法给出的值。

excel numpy percentile
1个回答
0
投票

给定一个长度为

a
的已排序数组
n
,我们有:

  • 独家分位数:
    i / (n + 1)
  • 包含分位数:
    (i - 1) / (n - 1)

a = [0, 1, 2, 3, 4]
的示例:

独家

np.arange(1, len(a)+1) / (len(a)+1)
给予
array([0.16666667, 0.33333333, 0.5       , 0.66666667, 0.83333333])

即 25% 百分位位于第一个元素和第二个元素之间 (=
0.5
)

包容性

np.arange(len(a)) / (len(a)-1)
给予
array([0.  , 0.25, 0.5 , 0.75, 1.  ])

即 25% 百分位数是第二个元素 (=
1
)

没有 numpy 函数来获取唯一的百分位数,但你可以使用

import statistics

statistics.quantiles(a, method='exclusive')
# [0.5, 2.0, 3.5]
© www.soinside.com 2019 - 2024. All rights reserved.