You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python根据正态分布的均值和标准差确定给定点的四分位数

正态分布中确定数值所属四分位数的Python实现

要搞定这个问题,核心是利用正态分布的累积分布函数(CDF)——它能算出给定数值在分布中的累积概率,也就是有多少比例的数据小于等于这个值。然后根据累积概率落在哪个区间,就能对应到0-3的四分位数:

  • 累积概率 ≤ 25% → 返回0(第1四分位组)
  • 25% < 累积概率 ≤ 50% → 返回1(第2四分位组)
  • 50% < 累积概率 ≤ 75% → 返回2(第3四分位组)
  • 累积概率 > 75% → 返回3(第4四分位组)

实现代码

我们可以直接用scipy.stats里的norm.cdf函数来计算CDF,代码如下:

from scipy.stats import norm

def get_quantile_group(m, s, val):
    # 计算给定值的累积概率
    cdf_prob = norm.cdf(val, loc=m, scale=s)
    # 判断所属四分位数组
    if cdf_prob <= 0.25:
        return 0
    elif cdf_prob <= 0.5:
        return 1
    elif cdf_prob <= 0.75:
        return 2
    else:
        return 3

示例测试

拿题目里的例子验证:mu=0.7,sigma=0.1,数值0.75。标准化后这个值对应的Z分数是(0.75-0.7)/0.1=0.5,计算得到累积概率约为69.15%,落在50%-75%区间,所以调用get_quantile_group(0.7, 0.1, 0.75)会返回2。

补充说明

如果没法用scipy,也可以自己用误差函数math.erf实现CDF计算,公式是:

import math

def norm_cdf(x, mu, sigma):
    return 0.5 * (1 + math.erf((x - mu) / (sigma * math.sqrt(2))))

把这个替换掉上面代码里的norm.cdf就行,结果完全一致。

内容的提问来源于stack exchange,提问作者Leon Derczynski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 07:48:14