Morris 法筛选仿真器 返回
不确定性定量化 (UQ)

Morris 法(基本效应)筛选仿真器

全局灵敏度分析最经济高效的方法「Morris 基本效应(Elementary Effects)法」的网络工具。通过调整因子数、轨道数、网格级别,可同时获得 μ*(重要度)和 σ(非线性·相互作用),在进行 Sobol 分析前直观地判断哪些输入因子应该保留。

参数设置
因子数 k
筛选对象的输入因子数量(模型维度)
轨道数 r
OAT 轨道的数量。直接关系到 μ*·σ 的估计精度
网格级别 p
输入空间的离散化(偶数,Δ = p/(2(p−1)))
测试函数
作为筛选对象的代理模型
G* 函数系数 a
值越小因子影响越大(a→0 时支配因子)
计算结果
因子数 k
样本数 r·(k+1)
步长 Δ
最重要因子 μ*
重要因子数(μ* > 平均)
相互作用显著的因子数
OAT 轨道采样(μ-σ 平面)

各因子在 μ*(横轴)和 σ(纵轴)上的散布。越接近右上角表示「既重要又具有非线性·相互作用」的因子。轨道动态显示 r 条 OAT 路径的采样过程。

因子重要度排序 μ*
μ-σ 散布图(非线性·相互作用检测)
理论·主要公式

$$EE_i = \frac{y(x+\Delta e_i) - y(x)}{\Delta},\quad \mu_i^* = \frac{1}{r}\sum_{j=1}^{r}|EE_i^{(j)}|,\quad \sigma_i = \mathrm{std}(EE_i)$$

μ* 大的因子是重要因子,σ 相对于 μ* 大的因子表示非线性·相互作用较强。Δ = p/(2(p−1)),样本数 = r·(k+1)。

$$g(x)=\prod_{i=1}^{k}\frac{|4x_i-2|+a_i}{1+a_i},\qquad a_i = 0.5\,i$$

Sobol-g 函数(标准基准)。系数 a_i 越小,该因子对输出的贡献越大。

Morris 法(基本效应)筛选介绍

🙋
听说过「灵敏度分析」,但 Morris 法有什么特别的?它和 Sobol 法的区别是什么?我还是有点模糊……
🎓
好问题。简单地说,Morris 法是「廉价的筛选」,Sobol 法是「高精度的定量化」。要用 Sobol 法严格计算全因子的灵敏度指标,一般需要 N·(2k+2) 次模型运行。比如 N=1000、k=20,就需要 42,000 次。如果 CAE 每次需要 1 小时,现实上不可行。Morris 法只需 r·(k+1) 次,比如 10·21=210 次,就能粗略判断「哪些因子看起来很重要」。
🙋
明白了,先用 Morris 筛选,再用 Sobol 详细分析。但你们写「OAT」是什么意思?我记得大学里学过「OAT 是坏方法的代表」……
🎓
你记性不错(笑)。确实,传统的 OAT(一次只改变一个因子,其他固定)只能看输入空间的一个点周围,不能得到全局灵敏度。Morris 的巧妙之处在于,它把 OAT 视为一条「轨道」,然后 随机分散 r 条 轨道。每条轨道经过 (k+1) 个点,这样全部 r·(k+1) 个点就分散在整个输入空间中。这样汇集「不同位置的 1 阶差分」,求平均值就能得到全局灵敏度了。
🙋
右边那个 μ-σ 平面很有意思啊。点越往右上去好像发生了什么。这是什么意思?
🎓
纵轴 σ 大的因子表示「效应随其他因子的值而改变」,也就是相互作用或非线性很强。横轴 μ* 大表示「总体来说是重要因子」。所以右上角的点是 「既重要,又不是简单线性,需要警惕」 的因子。左下角是「不起作用,可以删除」的因子。Morris 的优势就在于用这一张图把因子分成 4 象限。
🙋
那右上角的相互作用强的因子,就是要送给 Sobol 详细研究的因子吗?
🎓
完全同意。重要且 σ 也大的因子,用 Sobol 的「全次效应 S_T」和「一次效应 S_1」的差值,就能看出它和哪些因子组合产生效应。实务中,比如「轴承摩擦系数和润滑温度」,单独看都很弱,但乘在一起就很强。Morris 筛出右上角的因子后,进 Sobol 前还要重新检视网格划分和建模策略。

常见问题

Morris 法是廉价的「筛选」方法,Sobol 法是精确的「定量化」方法。Morris 法约需 r·(k+1) 次模型评估就能得到 μ* 和 σ,适合用于重要因子的甄别和非线性性检验。而 Sobol 法通过方差分解可以严格求得一次和全次灵敏度指标,但需要 N·(2k+2) 次评估(典型 N=1000 级),比 Morris 法多一个数量级。实务中的标准工作流程是:先用 Morris 法在高成本 CAE 模型上进行筛选,将「有实际意义的因子」缩小到 5~10 个,再对这些因子用 Sobol 法进行详细指标计算。
μ* 是基本效应 EE 绝对值的平均值,表示该因子对输出的「综合影响力(重要度)」。σ 是 EE 的标准差,表示因子的效应有多大程度受其他因子的值或输入位置影响,即「非线性性 + 相互作用」的强度。典型的四种解读方式如下:(1) μ* 小、σ 小:无效因子,可删除。(2) μ* 大、σ 小:单独线性作用的重要因子。(3) μ* 大、σ 大:重要但存在强相互作用或非线性,需要警惕。(4) μ* 小、σ 大:单独效应微弱,但与其他因子组合产生效应。
实用的经验值为 r = 10~20,p = 4 或 6(偶数,Δ = p/(2(p−1)))。增加 r 会使 μ* 和 σ 的估计误差大约按 1/√r 降低,但计算成本与 r 呈线性关系增加。增大 p 能更细致地采样输入空间,但 Δ 变小,差分容易淹没在数值噪声中。如果用 Campolongo(2007)的最大化扩散轨道或 Saltelli 的径向设计代替随机 OAT,相同的 r 下空间覆盖范围更好,估计会更稳定。
有三种情况:(1) 输出为不连续或阈值型的模型:差分 EE 波动很大,σ 失去意义。需要对输出进行平滑预处理,或直接用 Sobol 法计算灵敏度指标。(2) 存在强相互作用的情况:μ 和 μ* 的差异会很大,符号信息丢失,因此必须使用 Campolongo 改进版(采用 μ*)。(3) 因子数极大(k>100):r·(k+1) 仍需数千次评估。标准做法是先用分组 Morris(将因子作为组处理)进行粗筛,再对重要组内部进行逐个 Morris 详细分析。

实际应用案例

汽车碰撞 CAE 模型校准:撞车 FEM 仿真中,屈服应力、硬化指数、壳厚度、接触摩擦、阻尼系数等不确定参数数十个。单次分析需要 6~12 小时,直接用 Sobol 会耗时数周。实务中采用 r=10、k=30 级别的 Morris,一晚上就能完成预计算,筛出前 5~7 个重要因子送给 Sobol。只对重要因子通过实车试验重新测量,降低校准成本。

气候·水文模型的稀疏观测:地表热收支和土壤水分模型中,观测稀少地区的参数范围很宽泛。用 Morris 法划分「即使没有观测也不影响预报」的因子和「观测精度对预报影响很大」的因子,让有限的观测预算有的放矢。Saltelli 等气候科学家推荐用 Morris 做初步筛选。

药物动学/药效学(PK/PD)模型:群体药物动态模型加入个体差异后变成数十个变量,贝叶斯推断计算量大。先用 Morris 从清除率·分布容积·吸收速度等中筛出需要建模的个体差异参数,其余参数取中值固定,MCMC 计算加速。这套做法已出现在 FDA 认可资料中。

控制系统·稳健设计:对控制回路的增益、时间常数、延迟、传感器噪声等灵敏度用 Morris 初步筛选,重要因子用蒙特卡洛评估稳健性,非重要因子用中值固定以减少仿真次数。与 Six Sigma DOE 结合,用作「实验计划前期筛选」。

常见误区与注意事项

最大的坑是「因为 μ 小就判定因子无效」。Morris 原论文用 μ(有符号的平均值),但当因子效应的符号随位置反转时,μ 的正负值相互抵消,结果接近零。实际上该因子作用很强,却被误判为「无效」。Campolongo 等人提出的 μ*(绝对值平均) 解决了这个问题。本工具主要指标就采用 μ*。现代灵敏度分析库(SALib、UQLab 等)标准都返回 μ*,但某些老的实现仍用 μ,需要特别注意。

其次是「增加轨道数 r 就能无限提高精度」的误解。估计误差确实按 1/√r 减少,但 r=4 到 r=10 的改善很明显,r=20 到 r=50 的改善已经不大。成本却是 k+1 倍增加,所以 r=50·k=20 就要 1050 次评估了。实务中的经验是 r=10~20,或者「前 3 个因子的排序即使增加 r 也不变」就够了。用 Campolongo 的「最大化扩散轨道」取代随机 OAT,相同 r 下精度会更好。SALib 的 morris.sample(num_levels=p, optimal_trajectories=r) 即开即用。

最后,「把 Morris 指标和 Sobol 指标混为一谈」很危险。μ* 本质是「平均斜率的大小」,和 Sobol 的方差分解指标在数学上完全不同。论文中出现「灵敏度 30%」这样的贡献度百分比,必须用 Sobol(或多项式混沌展开 PCE)重新计算。Morris 结果的用途是 因子排序和有无显著性的判断,不能用于绝对数值解释。另外,对于不连续输出(有/无、超阈值/未超),Morris 并不适合,应该用决策树的 SHAP 等方法。

使用指南

  1. 设置因子数(k)。例如化学反应器的温度、压力、催化剂浓度等 3~8 个因子
  2. 输入轨道数(r)和网格级别(p)。标准配置是 r=10 条轨道,p=4 级(0.25 步长)
  3. 运行仿真后,在二维散布图(μ*-σ)上分类因子。μ* 大的因子为重要因子,推进到 Sobol 分析

具体计算例子

注塑成型模具冷却分析,因子数 k=5(冷却水温度、流量、模具热导率、浇口直径、成型温度),r=20 条轨道,p=5 级。结果:冷却水流量 μ*=0.89、浇口直径 μ*=0.67、其他因子平均 0.23。冷却水流量 σ=0.34、成型温度 σ=0.42(表示强非线性·相互作用)

实务中的注意