跳到主要内容

多因素敏感性分析

一、直观理解:多颗旋钮一起拧​

多因素敏感性分析允许若干参数同时变化,以捕捉交互效应:有时单看每个参数影响都不大,但组合起来却让结论翻转。常用手段包括全因子/部分因子网格、蒙特卡洛随机抽样、以及方差分解(Sobol 指数)等。

二、适用场景与优缺点​

类型说明
适用场景参数多且可能耦合;需要概率式稳健结论;输入不确定可用分布描述。
核心优点能发现交互;可估计输出分布与分位数;比 OAT 更接近真实不确定。
局限与缺点计算更贵;设计与解释更复杂;分布假设影响结果。

三、核心原理​

1. 网格扫描​

对 (θ1,θ2)(\theta_1,\theta_2) 取网格,画等高线/热图看 y(θ)y(\theta)。

2. 蒙特卡洛​

从参数联合分布抽样 θ(r)\theta^{(r)},计算 y(r)=f(θ(r))y^{(r)}=f(\theta^{(r)}),得到

E[y], Var(y), P(y>ycrit)\mathbb{E}[y],\ \mathrm{Var}(y),\ \mathrm{P}(y>y_{\mathrm{crit}})

3. 方差分解思想(Sobol)​

Si=Var(E[y∣θi])/Var(y)S_i=\mathrm{Var}(\mathbb{E}[y|\theta_i])/\mathrm{Var}(y) 衡量主效应;总效应指数含交互。实现可用盐elli 抽样等(进阶)。

四、实践要点​

  • 先 OAT 筛变量,再对重要子集做多因素;
  • 明确独立/相关抽样;
  • 报告输出直方图与情景分位;
  • 记录使结论翻转的参数区域。

五、MATLAB 示例​

%% 两参数网格 + 蒙特卡洛
% 模型: 利润 = (p-c)*min(Q,D) - h*max(Q-D,0) 的期望,D~正态
% 看价格 p 与订货量 Q 的联合影响(示意)

rng(7);
c=4; h=1; mu=100; sig=15;
p_list = linspace(6, 12, 25);
Q_list = linspace(70, 130, 25);
[PP, QQ] = meshgrid(p_list, Q_list);
EPi = zeros(size(PP));
Dsim = max(mu + sig*randn(5000,1), 0);

for i=1:numel(PP)
p = PP(i); Q = QQ(i);
sales = min(Dsim, Q);
left = max(Q - Dsim, 0);
EPi(i) = mean( (p-c)*sales - h*left );
end

figure;
contourf(p_list, Q_list, EPi, 20, "LineStyle", "none");
colorbar; xlabel("价格 p"); ylabel("订货量 Q");
title("两因素网格:期望利润热图");

%% 蒙特卡洛:成本参数同时不确定
N = 3000;
K = 80 * (1 + 0.2*randn(N,1)); % ± 波动
h = 2 * (1 + 0.15*randn(N,1));
D = 10000 * (1 + 0.1*randn(N,1));
K=max(K,1); h=max(h,0.1); D=max(D,1);
EOQ = sqrt(2*K.*D./h);

figure;
histogram(EOQ, 40);
xlabel("EOQ"); ylabel("频数");
title("多参数不确定下 EOQ 的分布"); grid on;
fprintf("EOQ 中位数=%.1f, 90%%区间=[%.1f, %.1f]\n", ...
median(EOQ), quantile(EOQ,0.05), quantile(EOQ,0.95));

简单交互检测(OAT vs 联合):

f = @(a,b) a + b + 1.5*a.*b; % 有交互
a0=1;b0=1; base=f(a0,b0);
dOAT = (f(1.2,1)-base) + (f(1,1.2)-base);
dJoint = f(1.2,1.2)-base;
fprintf("OAT 叠加变化=%.3f, 联合变化=%.3f(交互导致差异)\n", dOAT, dJoint);

六、如何解释结果​

描述抽样/网格设计、输入分布、输出分布特征、最坏/最好情景,以及交互是否改变政策建议。若 90% 情景下排序不变,可称结论稳健。

七、常见误区​

1. 参数乱相关或默认全独立​

2. 样本太少就画分布​

3. 只报均值不报尾部风险​

4. 网格维度灾难却强行全因子​

应筛选变量或用拉丁超立方。

附:建模流程中的落地清单(多因素敏感性)​

要把方法真正写进论文,建议补齐以下模块,而不是只贴一个最终数字。

1. 问题对齐与假设​

说明题目中的输入/输出如何映射到本方法,并显式列出关键假设。假设越清楚,后面的敏感性分析越有对象。

2. 关键关系​

网格或蒙特卡洛让参数同时变,估计输出分布与交互。

3. 补充实现片段​

N=2000; a=1+0.1*randn(N,1); b=2+0.1*randn(N,1); y=a.^2+b+0.5*a.*b; histogram(y);

4. 报告要素​

设计/分布、输出分位、情景、交互结论。

5. 不适用情形​

样本太少;默认全独立却无说明。

6. 与验证章节的衔接​

至少做一项:参数扰动、与基线方法对照、极限情形检查。把“方法正文”和“全局方法论(第15门类)”连起来,结论才站得住。

附:结果解读示例与常见审稿问题​

结果解读示例​

假设已经得到主要数值输出。写作时应把数字翻译回题目语言,例如:

  • “在基准参数下指标为 A;当关键参数变化 ±10% 时,指标波动约 B%,方案排序未变。”
  • “算法在 R 次独立重复中有 S 次收敛到同一结构解,说明结论对初始化不敏感。”
  • “与简化基线相比,本方法在验证集误差降低 Δ,但计算时间增加,权衡后仍采用。”

如果只有表格没有句子,评委很难判断你是否真正理解结果。

参数与数据的最小敏感性​

即使篇幅有限,也建议给出一个小表:选取 1–3 个最关键参数,各取偏低/基准/偏高三档,报告输出变化。这比大段空泛的“模型具有较强鲁棒性”更有说服力。

可复现信息​

在附录或正文脚注中记录:软件版本、随机种子、关键容差、数据截取时间范围。另一人按文档应能得到同量级结果。

审稿式自问​

  1. 方法假设在题目数据上是否可检查?
  2. 若最敏感参数估计错误 20%,结论是否翻盘?
  3. 是否存在更简单方法达到相近效果?
  4. 图表是否都能用一句话概括?
  5. 局限是否写得具体,而不是套话?

把上述自问的答案写进论文,方法章节会明显更“像完成了建模”,而不是“像完成了公式摘录”。

八、小结​

多因素敏感性分析在参数同时不确定时评估输出的波动与交互,是 OAT 的自然升级。网格适合低维可视化,蒙特卡洛适合给“结论在多少比例情景下成立”的概率式表述。