跳到主要内容
CalcMax

百分位数计算器

范围:0 – 100

结果

7.6000

该百分位对应的值

插值时下侧的观测值
7.0000
插值时上侧的观测值
9.0000
个数
8

百分位数回答的是「站在哪个位置」对应的值:第九十百分位就是有九成数据落在它以下(或正好等于它)的那个读数。它是把测量值翻译成结论的地方——生长曲线上的身高、统考成绩、服务等级协议里响应时间的第 95 百分位。把数字粘进来,这个百分位数计算器会给出你指定的那个百分位上的值,并把插值用的两个邻居一起印出来,这样不必重新排序就能对着原数据核对。分隔符规则在每种语言下都相同:数字按输入的原样读。

公式

位置 = (n − 1) × p(p 是百分位化成的小数);答案是该位置上的值,由相邻两个观测值按比例线性插值得到

xᵢ
数据集里的一个值。百分位数用的是位置而不是大小,所以一个极端读数只会把邻居挪动一点,不会像平均数那样被整个拽走
n
这组数有几个,本页最多 200 个。它决定了位置的上限:第 100 百分位的位置是 n − 1,正好是排序后的最后一个值
p
你要的那个百分位,化成小数:90 就是 0.9。它可以是 0 到 100 之间的任何数,带小数也行——第 97.5 百分位与第 50 百分位一样合法
位置
排序后的位置,从 0 开始数:(n − 1) × p。8 个数的第九十百分位落在位置 6.3,也就是从第 7 个数往第 8 个数走三成
Y₍ₖ₎ 与 Y₍ₖ₊₁₎
夹住那个位置的两个观测值。它们就是印在结果旁边的两个数,答案永远在这两个数之间——位置正好是整数时,答案就是其中之一

当问题问的是排位而不是大小时就该用百分位数:一个读数与整批数据相比处在什么水平。生长曲线、考试成绩、接口延迟预算、收入分组、临床参考范围,用的都是百分位数,而中位数不过是第 50 百分位。它也是那种需要讲清依据的阈值的合适工具——「超过正常流量的第 95 百分位就告警」是一条可以重算、可以复核的规则。两件事要分清。第一,百分位数不是百分比:处在第九十百分位不等于答对了九成,而是说九成的人在你之下(或与你相同)。第二,百分位排名与百分位数是相反的方向——这一页回答的是「第 p 百分位上是哪个值」,不是「这个值排在第几百分位」;只有当那个值本身正好是数据里的一个点时,两者才互为反函数。这里用的约定是 Hyndman–Fan type 7,也是 R 的 quantile 与 NumPy 的 quantile 的默认口径。约定不止一种:OpenStax 的教材用的是 i = k/100 × (n + 1),并明确写着换个人去查会查到好几个公式。所以同一组数据在不同软件里会给出略微不同的百分位数,两者都不算错。

算例

  1. 八个数的第九十百分位:7.6

    1. 排序:2、4、4、4、5、5、7、9——8 个数,所以 n − 1 = 7
    2. 位置:7 × 0.90 = 6.3,从 0 开始数
    3. 位置 6.3 夹在位置 6 的值 7 与位置 7 的值 9 之间
    4. 从 7 往 9 走三成:7 + 0.3 × (9 − 7) = 7.6

    7.6 不是那八个数里的任何一个,这在百分位数上是常态:它落在数据刻度上的某个位置,而不是数据里的某个成员。两个邻居印在答案旁边,是因为插值这一步最容易算错——看到 7 与 9,谁都能看出 7.6 是走了三成,而位置 6.3 说的正是这件事。

  2. 位置正好落在一个值上:1 到 5 的第二十五百分位

    1. 排序:1、2、3、4、5——5 个数,所以 n − 1 = 4
    2. 位置:4 × 0.25 = 1,是个整数
    3. 位置 1 上的值是 2,没有需要插值的部分
    4. 两个邻居都是 2,答案就是 2

    位置是整数时两个邻居合成一个,那两行会印出同一个数——这是面板在说「没有发生插值」。这一种情形下各家约定是一致的:流传的每一个公式在这里都给出 2,分歧全都藏在数据点之间。

  3. 只有一个数:任何百分位都是它

    1. 排序:42——1 个数,所以 n − 1 = 0
    2. 位置:0 × 0.90 = 0
    3. 唯一的值就在位置 0 上,所以 0 到 100 之间任何百分位都返回它
    4. 答案:42

    只有一个数时既没有可插值的邻居,也没有可供排位的分布,这一页照样返回那个数而不是拒绝作答。值得注意的是两个端点也不需要特殊处理:第 0 百分位是最小值、第 100 百分位是最大值,同一个位置公式自己就能算出来。

局限

百分位数不说明数据散得开不开,而且它的意义完全取决于背后那串数:只有十个数时,第九十百分位就是两个数之间插出来的,多几个数它就会挪动。答案还依赖约定,而约定不止一种——这一页用 Hyndman–Fan type 7(R 与 NumPy 的默认口径),别的教材用另一个位置公式,所以别处算出的百分位数与这里略有出入是正常的。这一页只做一个方向:把百分位变成值。反过来那个问题——某个值排在第几百分位——是另一套算法,这一页不提供,要做就得另开一页。另外百分位数不是百分比:处在第九十百分位说的是排位,不是在百分制里得了 90 分。列表上限 200 个数;像 1,500 这样的写法会被拒收而不是替读者猜,因为夹在数字中间的逗号在有些国家是小数点、在另一些国家是千分位。全部计算都按输入的原样进行,插值之前不做任何取整。

常见问题

百分位数怎么算?
先排序,再求位置 (n − 1) × p,其中 n 是数据个数、p 是百分位化成的小数。8 个数的第九十百分位,位置是 7 × 0.9 = 6.3,答案就在第 7 个数与第 8 个数之间走三成的位置上。位置正好是整数时它就落在某个值上,没有需要插值的部分。面板上把个数、两个邻居与结果都印了出来,整个算法一遍就能核对完。
第九十百分位到底是什么意思?
意思是九成的数据在它以下(或正好等于它),大约一成在它以上。它说的是排位,不是答对的比例:考试成绩处在第九十百分位,不等于你答对了九成的题。这个误解相当普遍,OpenStax 的统计教材专门点了一句——考试分数的第九十百分位,指的是九成的分数与你相同或更低。
为什么别的计算器算出的百分位数和这里不一样?
因为流传的公式不止一个,而它们的差别只在数据点之间——落在数据点上时各家一致。这一页用 Hyndman–Fan type 7,也就是 R 的 quantile 与 NumPy 的 quantile 的默认口径:位置取 (n − 1) × p,再按比例线性插值。OpenStax 的教材用的是 i = k/100 × (n + 1),而且明说去查一下会查到好几个公式。两者都不算错:百分位数是一个约定,所以这一页把插值用的两个邻居印出来,看的是哪一对一目了然。
结果下面多出来的两个数是什么?
是插值所依据的两个观测值——紧挨着你要求的那个位置下方与上方的值。有它们在屏幕上,结果就不是黑箱:7.6 摆在 7 与 9 旁边,一眼就能看出它走了三成。当你的百分位正好落在一个数据点上时,位置是整数,没有插值发生,那两行会印出同一个值。
第 0 与第 100 百分位是多少?
分别是数据里的最小值与最大值,而且不需要特殊处理:把 p = 0 代进位置公式得到 0,就是第一个值;p = 100 代入得到 n − 1,就是最后一个值。小于 0 或大于 100 的输入超出这个字段的允许范围,会被拒收而不是截断,所以把 90 误写成 900 会得到提示,而不是悄悄按最大值作答。
反过来,能算某个值排在第几百分位吗?
这一页不能——它只做一个方向,把百分位变成值。反过来那个问题(给定一个值,问它的百分位排名)是另一套算法,把两个方向塞进同一个工具意味着结果区要有条件地显示其中一个,而结果面板是刻意不做这件事的。需要排名的话,把你的值与排序后的列表比一比;四个最常用的切点可以直接用四分位数那一页。

参考资料

相关计算器