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

如何将拟合的lognorm分布s、loc、scale转换为SIMIO所需正态参数

移位对数正态参数转Simio格式方法

参数定义差异

先明确两个工具的对数正态分布参数化逻辑:

  • Scipy/Fitter的lognorm:是带移位的对数正态,公式为:
    X = loc + scale × exp(Z)
    
    其中Z服从均值为0、标准差为s的正态分布;loc是移位偏移量,scale是缩放因子。
  • Simio的Lognormal(normalMean, normalStdDev):是无移位对数正态,公式为:
    Y = exp(W)
    
    其中W服从均值为normalMean、标准差为normalStdDev的正态分布。

转换步骤

基于你的拟合结果:

{'lognorm': {'s': 0.8612498618921953, 'loc': 0.3175483462045392, 'scale': 0.30617261628597686}}

1. 核心参数转换

针对Scipy中scale × exp(Z)的无移位部分,取对数后可得:

ln(Y) = ln(scale) + Z

由于Z~N(0, s²),因此ln(Y)服从均值为ln(scale)、标准差为s的正态分布,对应Simio的参数:

  • normalMean = ln(0.3061726) ≈ -1.182
  • normalStdDev = 0.86125

2. 处理移位项

Simio原生不支持移位参数,若你的分布必须保留loc(拟合值≠0),需在Simio中手动调整:生成Lognormal(-1.182, 0.86125)的样本后,再加上0.3175即可还原原始拟合分布。

验证代码

可通过反向生成样本验证转换正确性:

import numpy as np
from scipy import stats

# 拟合得到的参数
s, loc, scale = 0.8612498618921953, 0.3175483462045392, 0.30617261628597686
# 生成移位对数正态样本
sample = loc + scale * np.exp(stats.norm.rvs(0, s, size=1000))
# 拟合无移位lognorm
shape, _, fit_scale = stats.lognorm.fit(sample, floc=0)
# 转换为Simio参数
simio_mean = np.log(fit_scale)
simio_std = shape

print(f"Simio normalMean: {simio_mean:.4f}, normalStdDev: {simio_std:.4f}")

运行结果会与手动计算值一致,证明转换有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:12:39