百分位数计算方法

前言

空气质量污染物序列中一般会涉及第多少百分位数,如臭氧浓度的第90百分位数浓度。本文介绍百分位数的计算方法。

计算方法

污染物浓度序列第 p \boldsymbol{p} p百分位数的计算步骤:

  1. 将污染物浓度序列按数值大小从小到大排序,不妨设为 { X \boldsymbol\{{X} {X i _{i} i , i = 1 , 2 ,   ⋅   ⋅   ⋅   n \boldsymbol{,i=1,2,~·~·~·~n} i=1,2,    n } \boldsymbol{\}} }
  2. 计算第 p \boldsymbol{p} p百分位数 m \boldsymbol{m} m p _{p} p的位置索引 k \boldsymbol{k} k(从1开始),公式为
    k = 1 + ( n − 1 ) × p % \boldsymbol{k=1+(n-1)×p\%} k=1+(n1)×p%
    式中:
    k — p % 位 置 索 引 \boldsymbol{k—p\%位置索引} kp%
    n — 污 染 物 浓 度 序 列 中 的 数 值 个 数 \boldsymbol{n—污染物浓度序列中的数值个数} n
  3. p \boldsymbol{p} p百分位数 m \boldsymbol{m} m p _{p} p计算公式为
    m \boldsymbol{m} m p _{p} p = X \boldsymbol{=X} =X ( s ) _{(s)} (s) + ( X \boldsymbol{+(X} +(X ( s + 1 ) _{(s+1)} (s+1) − X \boldsymbol{-X} X ( s ) _{(s)} (s) ) × ( k − s ) \boldsymbol{)×(k-s)} )×(ks)
    式中:
    s — k 的 整 数 部 分 , 当 k 为 整 数 时 , s 与 k 相 等 。 \boldsymbol{s—k的整数部分,当k为整数时,s与k相等。} skksk

计算示例

举一个计算的例子:
计 算 序 列 { 3 , 4 , 8 , 2 , 5 , 4 } 的 第 90 百 分 位 数 。 \boldsymbol{计算序列\{3,4,8,2,5,4\}的第90百分位数。} {3,4,8,2,5,4}90
计算过程:

  1. 从小到大排序
    排序后的序列为 { 2 , 3 , 4 , 4 , 5 , 8 } \boldsymbol{\{2,3,4,4,5,8\}} {2,3,4,4,5,8}
  2. 计算索引 k \boldsymbol{k} k
    k = 1 + ( 6 − 1 ) × 90 % = 5.5 \boldsymbol{k=1+(6-1)×90\%=5.5} k=1+(61)×90%=5.5
  3. 计算 m \boldsymbol{m} m p _{p} p
    m \boldsymbol{m} m p _{p} p = 5 + ( 8 − 5 ) × ( 5.5 − 5 ) = 6.5 \boldsymbol{=5+(8-5)×(5.5-5)=6.5} =5+(85)×(5.55)=6.5

即该序列的 90 \boldsymbol{90} 90百分位数位6.5。

Python代码实现

def percent_number_cal(data_list: List[float], p: int) -> float:
    """
    计算序列指定百分位数
    :param data_list: 序列
    :param p: 需计算的百分位数
    :return: 第p百分位数
    """
    sorted_data = sorted(data_list, reverse=False)
    k = 1 + (len(sorted_data) - 1) * p / 100
    return sorted_data[int(k) - 1] + (sorted_data[int(k)] - sorted_data[int(k) - 1]) * (k - int(k))

以下是本人独自运营的微信公众号,用于分享个人学习及工作生活趣事,大家可以关注一波。

优良率

你可能感兴趣的:(其他,经验分享,python)