近期在进行的项目涉及百分位数计算,查找资料时发现现有资料内容过于臃肿复杂,故对其进行简单介绍。
一、百分位数简介
百分位数是统计学中用于描述一组数据分布位置的指标,它表示一个值在数据集中的位置。具体地说,百分位数是指某个值在所有数据中占比的百分比位置。例如,第90百分位数表示有90%的数据点小于或等于这个值。
二、百分位数的定义
对于一个数据集,P百分位数是一个值,使得P%的数据点在它之下,其余(100-P)%的数据点在它之上。
三、百分位数的计算
计算百分位数的方法有多种,以下是最常见一种的步骤:
- ① 排序:将数据从小到大排序。
- ② 计算位置:确定百分位数所在的位置。对于一个包含N个数据点的已排序数据集,第P百分位数的位置可以用公式计算:
位置 K = P 100 ∗ ( N + 1 ) 位置K = \dfrac{P}{100} * (N+1) 位置K=100P∗(N+1)
计算得到K后,又有以下两种情况:
- K是整数:那么第K个数就是这组数据的P百分位数.
例如一个已排列好数据集M为:
M = [3,5,7,8,12,13,14,18,21]
,计算第90百分位数的位置:
位置 K = 90 100 ∗ ( 9 + 1 ) = 9 位置K = \dfrac{90}{100} * (9+1)= 9 位置K=10090∗(9+1)=9
则该数据的的90百分位为数据集的第9个数据,即: Percentile_90 = M9 = 21
注意:使用上公式时,数据集的首个数据位置下标为1(即M1 ),而非0。因此写C等类型程序时要注意处理。比如上方数据集,首个元素3处于位置1,即M1 = 3,第二个元素5处于位置2,即M2 = 5
- K是小数:那么百分位数使用线性插值进行计算:假设数据集M的90百分位为K = a.b,其中a为整数部分,b为小数部分。那么 Percentile_90 =Ma + b* (Ma+1 - Ma)。
例如一个已排列好数据集M为:
M = [4,7,9,10,11]
,计算第40百分位数: 位置 K = 40 100 ∗ ( 5 + 1 ) = 2.4 位置K = \dfrac{40}{100} * (5+1)= 2.4 位置K=10040∗(5+1)=2.4
则 Percentile_40 = M2 + 0.4 * (M3 - M2) = 7 + 0.4 * (9 - 7) = 7.8
值得注意的是,也有一种方式是直接向上取整(实际应用中选用此方法的人更多),使用该方式时上例的百分位数为: Percentile_40 = M3 = 9