蒙特卡洛模拟是什么?如何用它做概率与不确定性分析

更新时间

蒙特卡洛模拟是一种用大量随机抽样来估计结果分布的方法:你为每个不确定输入指定一个概率分布,让模型重复运行成千上万次,每次从分布中抽一组输入值,最后汇总输出的均值、分位数和区间。它适合输入不确定、模型非线性或难以解析求解的问题;如果输入是确定的、模型简单可解析,直接计算更省事。

核心思想:用抽样代替推导

很多实际问题中,输出是多个输入的函数,而输入本身带有不确定性。解析地推导输出的分布往往很困难,尤其当模型是非线性、含隐函数或多参数耦合时。

蒙特卡洛的做法是把“推导”换成“试验”:

  1. 为每个不确定输入设定概率分布(如正态、均匀、对数正态)。
  2. 从每个分布中随机抽一个值,组成一组输入。
  3. 把这组输入代入模型,得到一个输出。
  4. 重复成千上万次,得到输出的样本集合。
  5. 用这个样本集合估计输出的均值、标准差、分位数、超过某阈值的概率等。

样本量越大,估计越稳定。误差大致按 1/√N 缩小,所以样本量增加 100 倍,精度才提高约 10 倍。

适合与不适合的问题

场景 是否适合 原因
多个输入各有不确定性,想看输出范围 适合 天然处理不确定性传播
估计“超过阈值”的概率,如风险、合格率 适合 直接数样本比例
模型非线性、含隐函数、无法线性化 适合 不要求模型形式
输入确定、模型简单可解析 不适合 直接计算更快更准
需要极端尾部概率(如百万分之一) 谨慎 需要极大样本量或方差缩减技术

在曲线拟合与回归分析中,蒙特卡洛也常被用来评估参数估计的稳定性:对残差或参数施加随机扰动,重复拟合,观察参数分布。MTR Software 的 FitAll 是一款非线性(及多线性)回归分析与曲线拟合工具,其介绍强调可以直接拟合真正描述系统的模型,包括隐函数形式;这类工具配合蒙特卡洛思路,可用于检查拟合结果对数据扰动的敏感程度。

一次基本模拟的步骤

第一步:定义输入分布

对每个不确定输入,明确分布类型和参数。例如“测量误差服从均值 0、标准差 0.5 的正态分布”“需求在 80 到 120 之间均匀分布”。分布假设是模拟结果可信度的根基,不能随手填。

第二步:设定抽样次数

先跑 1000 次看结果是否稳定,再逐步增加到 10000 或更多。关注均值、标准差和关键分位数随样本量的变化,变化趋缓即可。

第三步:运行模型并记录输出

每次抽样代入模型,记录输出值。若模型本身是拟合得到的,注意把参数不确定性也纳入,而不只是输入变量的不确定性。

第四步:汇总统计量

至少报告:均值、标准差、最小值、最大值、5% 与 95% 分位数,以及关心的阈值概率。分位数比单一均值更能反映风险。

第五步:验证与收敛检查

换一个随机种子重跑,比较关键统计量是否接近;把样本量翻倍,看结果是否明显漂移。两者都稳定,结果才可复述。

一个简单例子:某零件尺寸 = 标称值 + 加工偏差 + 装配偏差,两个偏差都设为正态分布。模拟 10000 次后,若 95% 分位数超出公差上限,就说明当前工艺有约 5% 的超差风险,可据此决定是否收紧偏差或放宽公差。

结果怎么读

  • 均值:中心趋势,但对偏态分布代表性有限。
  • 分位数:5% 和 95% 分位数给出典型波动范围,比“均值±标准差”更适合非正态输出。
  • 阈值概率:如“亏损概率”“超差概率”,是决策最直接的依据。
  • 收敛性:统计量随样本量增加趋于平稳,才说明样本足够。

常见误区与排查

  • 输入分布假设不合理:结果再精确也只是假设的产物。排查方法是做敏感性分析,换一组合理分布看结论是否翻转。
  • 样本量不足:分位数和尾部概率抖动大。排查方法是翻倍样本量对比。
  • 随机种子未固定:结果无法复现。正式报告前固定种子并记录。
  • 忽略参数不确定性:只对输入抽样、不对拟合参数抽样,会低估总不确定性。
  • 把模拟当预测:模拟给出的是“在给定假设下的分布”,不是对未来的保证。

需要购买或了解 FitAll 的具体功能与价格,可访问 fitall.com 查看其产品与购买页面;页面提到 FitAll 购买价格已下调 67%,但具体金额与授权条件以网站当前信息为准。