3. 蒙特卡洛传播分析的核心思想与基本流程

不确定性传播要回答的问题可以概括为一句话:当输入量带有不确定性时,输出量的分布是什么样。解析方法(如线性误差传播、一阶二阶矩法)通过泰勒展开把输入方差映射为输出方差,速度快但依赖近似;蒙特卡洛方法则换了一条路——不推导输出分布的解析表达式,而是用大量随机样本"模拟"输入的不确定性,再让模型自己把不确定性传递到输出端,最后用样本统计量逼近输出分布。它的代价是计算量,换来的是对非线性、强耦合、非正态输入的普遍适用性。

抽样映射:从输入分布到输出样本

设模型为 Y = g(X1, X2, …, Xn),其中每个输入 Xi 都用一个概率分布描述其不确定性(正态、均匀、对数正态、经验分布等),并考虑输入之间的相关性。蒙特卡洛传播的执行逻辑是:从联合分布中抽取一组输入样本 x(k),代入模型得到一次输出实现 y(k) = g(x(k)),重复 N 次,得到输出样本集 {y(1), …, y(N)}。这个样本集就是输出分布的"经验替身":它的直方图近似输出概率密度,它的分位数近似输出分位数,它的均值与标准差近似输出的期望与不确定度。关键在于,映射过程只用到模型本身,不需要对 g 做任何线性化或正态性假设,非线性、阈值、饱和等效应会原样体现在输出样本的形态里。

输入不确定性(联合分布) X₁ ~ N(μ₁, σ₁²) X₂ ~ U(a, b) X₃ ~ LN(μ, σ²) 含相关性 ρ₁₂、ρ₁₃ 随机抽样 N 组样本 模型 g(X) 非线性 / 阈值 / 耦合 逐样本代入计算 y⁽ᵏ⁾ = g(x⁽ᵏ⁾) 无需线性化假设 N 次映射 输出经验分布 P5 P95 均值 输出样本直方图 ≈ 输出概率密度 统计量: 均值 ŷ = (1/N)Σy⁽ᵏ⁾ 标准差 s = √[Σ(y⁽ᵏ⁾−ŷ)²/(N−1)] 分位数 [P5, P95] 超限概率 P(Y>Y₀)

大数定律与中心极限定理的支撑作用

为什么"用样本统计量代替真实分布"是合理的?大数定律给出了第一层保证:当 N → ∞ 时,样本均值依概率收敛到真实期望,样本分位数收敛到真实分位数。也就是说,只要样本量足够,直方图会稳定地逼近真实输出密度,蒙特卡洛估计是相合估计。中心极限定理给出第二层保证:样本均值本身近似服从正态分布,其标准误为 σ/√N。这直接决定了收敛速度——误差按 1/√N 衰减,样本量增大 100 倍,标准误才缩小 10 倍。实践中这意味着:把输出均值的不确定度从 1% 压到 0.1%,需要约一万倍的样本量,因此必须结合精度目标反推 N,而不是盲目堆样本。同时,中心极限定理也提示我们:当 N 较小时,样本均值本身的波动不可忽略,报告结果时应同时给出标准误或置信区间。

误差与收敛性:怎么判断"算够了"

蒙特卡洛结果有两类误差需要区分。统计误差来自有限样本,表现为估计量的随机波动,可用标准误 s/√N 或分位数的自助法置信区间量化;模型误差来自输入分布设定是否准确、模型本身是否可信,这部分不会因增大 N 而减小。收敛性判断的实用做法是:把 N 分成若干批(如 10 批),分别计算每批的输出均值与目标分位数,观察批间波动是否随 N 增大而收窄;或绘制均值随 N 变化的运行曲线,当曲线进入稳定带且带宽小于允许误差时停止。对于尾部概率(如失效概率 Pf 很小),普通蒙特卡洛的相对误差约为 1/√(N·Pf),需要 N ≫ 1/Pf 才能获得稳定估计,此时应考虑重要性抽样等方差缩减技术。

算法伪代码

输入:模型 g(·),输入分布 F₁…Fₙ 及相关结构,样本量 N,随机种子 seed
输出:输出样本 {y⁽ᵏ⁾},统计量(均值、标准差、分位数、超限概率)

1  set.seed(seed)                      # 保证可复现
2  for k = 1 to N:
3      u ← 生成 n 维独立均匀随机数
4      x⁽ᵏ⁾ ← 逆变换/条件抽样,得到符合联合分布的输入样本
5      y⁽ᵏ⁾ ← g(x⁽ᵏ⁾)                  # 逐样本映射
6  end for
7  ŷ ← mean(y);s ← sd(y)
8  q ← quantile(y, c(0.05, 0.5, 0.95))
9  Pf ← mean(y > Y₀)                   # 超限概率
10 计算标准误 se ← s / sqrt(N),输出结果与收敛诊断

简单手算示例

设模型为 Y = X1 · X2,其中 X1 ~ U(1, 3),X2 ~ U(2, 4),相互独立。取 N = 4 组样本演示映射过程(示例数据,仅用于说明算法,不代表收敛结果):

样本 kX₁X₂Y = X₁·X₂
11.202.503.00
22.803.6010.08
31.902.103.99
42.303.908.97

由这 4 个样本得 ŷ = 6.51,s ≈ 3.55,标准误约 1.78。样本太少,这个结果只能说明计算流程,不能作为结论。若把 N 增至 10⁴,输出均值会稳定在理论值 E[X1]·E[X2] = 2 × 3 = 6 附近,标准误降至约 0.036,此时报告"输出均值约 6.0,95% 区间约 [3.2, 9.0]"才有工程意义。这个对比恰好说明:蒙特卡洛的可信度来自样本量与收敛诊断,而不是单次计算结果本身。

实施要点:固定随机种子保证可复现;输入相关性要通过 copula 或条件抽样正确引入,否则会低估输出方差;报告结果时同时给出样本量、标准误和收敛诊断,避免只给一个"漂亮"的均值。