跳到主要内容

单因素敏感性分析

一、直观理解:一次只拧一颗旋钮​

单因素敏感性分析(One-at-a-Time, OAT)在基准参数组合下,每次只改变一个参数,其余固定,观察模型输出(最优值、预测、指标)如何响应。它像检修仪器时一次只拧一颗旋钮,便于定位“最敏感的那几个量”。

结果常用折线图、蜘蛛图或龙卷风图展示:条越长,说明该参数在考察范围内对输出影响越大。

二、适用场景与优缺点​

类型说明
适用场景参数不多;需要可解释的重要性排序;论文验证章节;优化/评价/预测模型的稳健性说明。
核心优点实现简单;图示直观;沟通成本低。
局限与缺点忽略参数交互;非线性强时可能误导;依赖基准点选择。

三、核心原理​

设模型输出 y=f(θ1,…,θp)y=f(\theta_1,\ldots,\theta_p),基准 θ0\theta^0。对参数 ii,在集合 {θi(k)}\{\theta_i^{(k)}\} 上计算

yi(k)=f(θ10,…,θi(k),…,θp0)y_i^{(k)}=f(\theta_1^0,\ldots,\theta_i^{(k)},\ldots,\theta_p^0)

敏感性度量示例:

  • 极差 Ri=max⁡kyi(k)−min⁡kyi(k)R_i=\max_k y_i^{(k)}-\min_k y_i^{(k)};
  • 弹性 ∂y∂θi⋅θiy\frac{\partial y}{\partial \theta_i}\cdot\frac{\theta_i}{y}(可用中心差商);
  • 归一化重要性 Ri/∑jRjR_i/\sum_j R_j。

扰动方式:相对 ±10%,±20%\pm10\%,\pm20\% 或按实际可行区间扫描。

四、实践要点​

  1. 明确输出指标(可多个);
  2. 参数扰动范围写清来源;
  3. 同时看相对变化百分比;
  4. 对最敏感参数做更细扫描或多因素跟进;
  5. 优化问题可看最优解 x∗x^* 是否结构变化。

五、MATLAB 示例​

%% 单因素敏感性:对 f = a*x^b + c 的“预测输出”在 x0 处
% 更贴近建模:库存 EOQ 对 D,K,h 的敏感性
EOQ = @(D,K,h) sqrt(2*K*D./h);
D0=10000; K0=80; h0=2;
base = EOQ(D0,K0,h0);

pct = [-0.2 -0.1 0 0.1 0.2];
% 对 D
yD = EOQ(D0*(1+pct), K0, h0);
% 对 K
yK = EOQ(D0, K0*(1+pct), h0);
% 对 h
yh = EOQ(D0, K0, h0*(1+pct));

figure;
plot(pct*100, yD/base, "-o", "LineWidth", 1.2); hold on;
plot(pct*100, yK/base, "-s", "LineWidth", 1.2);
plot(pct*100, yh/base, "-d", "LineWidth", 1.2);
yline(1, "--k");
xlabel("参数相对变化 (%)"); ylabel("EOQ / 基准 EOQ");
legend("D","K","h","Location","best");
title("单因素敏感性(蜘蛛图)"); grid on;

% 龙卷风图:±20% 极差
rangeD = max(yD)-min(yD);
rangeK = max(yK)-min(yK);
rangeh = max(yh)-min(yh);
figure;
barh([rangeh rangeK rangeD]);
yticklabels(["h","K","D"]);
xlabel("EOQ 极差(参数在 ±20% 内)");
title("龙卷风图:影响幅度排序"); grid on;

fprintf("基准 EOQ=%.2f\n", base);
fprintf("极差 D/K/h = %.2f / %.2f / %.2f\n", rangeD, rangeK, rangeh);

评价模型输出敏感性示例:

% TOPSIS 得分对权重的单因素扰动(示意)
score = @(w) (w(:)' * [0.8; 0.5; 0.2]) / sum(w); % 简化
w0 = [0.5 0.3 0.2];
s0 = score(w0);
for i=1:3
w = w0; w(i)=w(i)*1.2; w=w/sum(w);
fprintf("权重%d +20%% 并重归一后, 得分变化 = %.4f\n", i, score(w)-s0);
end

六、如何解释结果​

说明基准情景、扰动方案、输出定义,列出参数重要性排序,并讨论:最敏感参数是否估计可靠;若不可靠,结论需更谨慎或需补充数据。

七、常见误区​

1. 只扰动 ±1% 就宣称不敏感​

范围太小可能看不出。

2. 不重归一权重却扰动权重​

评价问题中权重和常为 1。

3. 忽略输出的定性翻转​

数值变 5% 与“最优方案换人”意义不同。

4. 用 OAT 代替一切全局敏感性​

有交互时应升级多因素方法。

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

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

1. 问题对齐与假设​

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

2. 关键关系​

每次只动一个参数,用极差/弹性排序;蜘蛛图与龙卷风图展示。

3. 补充实现片段​

f=@(a,b)a.^2+b; a0=1;b0=2; da=abs(f(1.2,b0)-f(0.8,b0)); db=abs(f(a0,2.4)-f(a0,1.6)); disp([da db]);

4. 报告要素​

基准、扰动范围、输出定义、重要性排序。

5. 不适用情形​

范围过小;忽略交互;权重扰动不重归一。

6. 与验证章节的衔接​

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

八、小结​

单因素敏感性分析通过“一次一个参数”定位关键驱动因素,是建模验证的标准动作。它简单清晰,但要注意基准依赖与交互缺失;把蜘蛛图/龙卷风图与文字解释写进论文,能显著提升结论可信度。