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

基于5%与95%分位数的对数正态分布极端分位数求解及Scipy实现

对数正态分布分位数求解与Scipy实现

首先直接回应你的问题:

  • 0%分位数:对数正态分布的随机变量取值范围是严格大于0的,所以理论上0%分位数是0,但这个值永远不会被实际观测到——因为对数正态变量不可能等于0,只会无限趋近于0。
  • 99.999%分位数:完全可以通过已知的5%和95%分位数拟合出对数正态分布的参数,再计算这个极端分位数,下面会一步步讲清楚实现方法。

1. 拟合对数正态分布的核心原理

对数正态分布的本质是:如果随机变量 ( X \sim \text{LogNormal}(\mu, \sigma^2) ),那么取对数后的 ( Y = \ln(X) ) 服从正态分布 ( \text{Normal}(\mu, \sigma^2) )。我们可以利用这个转换,把已知分位数映射到正态分布空间求解参数:

  • 已知 ( X ) 的5%分位数是10,即 ( P(X \leq 10) = 0.05 ),转换为对数空间就是 ( P(Y \leq \ln(10)) = 0.05 )
  • 已知 ( X ) 的95%分位数是100,即 ( P(X \leq 100) = 0.95 ),转换为对数空间就是 ( P(Y \leq \ln(100)) = 0.95 )

结合正态分布的分位数公式,我们可以联立方程解出 ( \mu ) 和 ( \sigma ):
( \ln(10) = \mu + \sigma \cdot z_{0.05} )
( \ln(100) = \mu + \sigma \cdot z_{0.95} )
其中 ( z_{\alpha} ) 是标准正态分布的 ( \alpha ) 分位数,利用正态分布的对称性 ( z_{0.05} = -z_{0.95} ),可以简化计算得到 ( \mu ) 和 ( \sigma )。

2. Scipy代码实现步骤

步骤1:拟合对数正态分布参数

这里提供两种方法,原理一致,你可以根据习惯选择:

方法一:手动计算参数(更直观)

import numpy as np
from scipy.stats import norm

# 已知分位数数据
q5 = 10
q95 = 100

# 转换到对数空间
y5 = np.log(q5)
y95 = np.log(q95)

# 获取标准正态分布的分位数
z05 = norm.ppf(0.05)
z95 = norm.ppf(0.95)

# 计算正态分布的均值μ和标准差σ
sigma = (y95 - y5) / (z95 - z05)
mu = (y5 + y95) / 2

print(f"拟合得到的μ: {mu:.4f}, σ: {sigma:.4f}")

方法二:用Scipy内置拟合函数(更便捷)

注意Scipy的lognorm类参数定义:形状参数是 ( \sigma ),位置参数loc固定为0(因为对数正态分布从0开始),尺度参数是 ( \exp(\mu) )。

from scipy.stats import lognorm

# 分位数点和对应的概率
quantiles = [q5, q95]
probabilities = [0.05, 0.95]

# 拟合分布,固定loc=0(符合对数正态分布的定义)
sigma_fit, loc_fit, scale_fit = lognorm.fit(quantiles, floc=0)
mu_fit = np.log(scale_fit)

print(f"拟合得到的μ: {mu_fit:.4f}, σ: {sigma_fit:.4f}")

两种方法得到的参数几乎完全一致,因为底层逻辑相同。

步骤2:求解极端分位数(如99.999%分位数)

有了拟合好的参数,直接用分位数函数(ppf,Percent Point Function)计算即可:

# 用拟合得到的参数计算99.999%分位数
extreme_q = lognorm.ppf(0.99999, s=sigma_fit, loc=loc_fit, scale=scale_fit)
print(f"99.999%分位数: {extreme_q:.2f}")

如果你想用手动计算的参数验证,也可以转换回正态空间计算:

z_extreme = norm.ppf(0.99999)
y_extreme = mu + sigma * z_extreme
x_extreme = np.exp(y_extreme)
print(f"99.999%分位数(手动验证): {x_extreme:.2f}")

补充说明

  • 关于0%分位数:对数正态分布的累积分布函数在x=0处的极限是0,但实际中X永远不会等于0,所以这个分位数只是理论上的下限。
  • 极端分位数的可靠性:结果完全依赖于“X服从对数正态分布”这个假设,如果实际数据的尾部特性和对数正态分布不符,计算结果会有偏差,但在给定假设下,这个方法是严谨有效的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:57:40