Sobol 敏感性分析工具

方法概述

Sobol 敏感性分析是一种基于方差的全局敏感性分析方法,用于量化每个输入变量对模型输出方差的贡献。它不依赖于线性假设,适用于任意复杂的函数关系,是工程、经济和环境科学等领域最常用的全局敏感性分析工具。

本工具实现标准 Sobol 方差分解的核心步骤:

  1. 读取各输入变量的取值范围,生成两组相互独立的随机样本 A、B(在取值范围内均匀采样);
  2. 构造 Saltelli 设计矩阵:在 A、B 基础上,将 B 的某一列替换为 A 对应列,形成交叉样本 ABⁱ(i=1,…,k);勾选二阶计算时再构造 C^{ij}(保留 i、j 两列为 A、其余取 B),用于估计二阶指数;
  3. 将各样本代入用户给定的计算公式,得到输出值;
  4. 由 A、B 及交叉样本的输出估计总方差 V、一阶指数 S1 与全阶指数 ST;
  5. 通过 Bootstrap 重采样给出 S1、ST 的置信区间;
  6. 计算二阶指数 S2 并输出对称的灵敏度矩阵。

输入数据

1. 变量配置文件(CSV / Excel / TXT)

文件至少包含 4 列,列顺序固定:

含义 说明
第一列 计算变量名 用于在计算公式中引用的变量名(如 x1、x2)
第二列 绘图变量名 用于结果图表展示的名称
第三列 最小值 变量取值范围下限
第四列 最大值 变量取值范围上限
  • 变量取值在 [最小值, 最大值] 内按均匀分布采样;
  • 建议变量数量 2-20 个;
  • 单个文件不超过 5MB。

2. 计算公式

在界面中填写输出变量与输入变量之间的函数关系,变量名需与配置文件”计算变量”列一致。支持常见数学运算与函数,例如:

x1 * x2 + sin(x3)
x1^2 + 2*x2 - log(x3 + 1)

支持函数:sin、cos、tan、asin、acos、atan、exp、log、log10、sqrt、abs、min、max、sum、mean、round、ceiling、floor 等,以及算术、比较、逻辑运算符。

算法流程

1. 生成样本

生成两组相互独立的样本矩阵 A、B(行数 = 采样数量,列数 = 变量数),各列在对应变量取值范围内均匀取值。A、B 相互独立是 Sobol 指数估计正确的必要条件。

2. 构造 Saltelli 设计矩阵

设共有 k 个变量:

  • A:基础样本矩阵;
  • B:独立样本矩阵;
  • ABⁱ:将 B 的第 i 列替换为 A 的第 i 列,其余列保持 B,共 k 个块,用于一阶与全阶指数;
  • C^{ij}:保留 A 的第 i、j 两列,其余列取 B,共 C(k,2) 个块,用于二阶指数。

3. 估计总方差与各阶指数

记输出均值为 f0,总方差为 V:

f0 = (mean(fA) + mean(fB)) / 2
V  = var(全部 A、B 输出)

一阶指数(第 i 个变量对输出的单独贡献):

Vi = mean(fB × (fABi − fA))
S1_i = Vi / V

全阶指数(第 i 个变量自身及其与所有其他变量的交互贡献之和):

  • Sobol2002(Saltelli):

    ST_i = V − (mean(fA × fABi) − f0²) ) / V
  • Sobol2007 / Jansen:

    ST_i = mean((fA − fABi)²) / (2V)

二阶指数(变量 i、j 的成对交互贡献,需勾选”计算二阶灵敏度”):

S2_ij = mean(fA × fCij) − f0² − Vi − Vj

所有指数取值近似在 [0,1]:S1_i 反映变量 i 的单独影响,ST_i 反映变量 i 的总体影响,ST_i ≥ S1_i;ST_i − S1_i 越大,说明变量 i 与其它变量的交互作用越强。

4. 置信区间

通过 Bootstrap 重采样(默认 100 次)对 A、B 及交叉样本的输出进行有放回抽样,重复估计 S1、ST,得到其 95% 置信区间(百分位法)。二阶指数仅给出点估计。

5. 特殊情形

  • 单变量:此时 S1 = ST = 1(精确成立);
  • 输出方差为零或过小(如常量公式):无法定义指数,程序报错提示;
  • 二阶指数估计噪声较大,建议采样数量不低于 5000。

参数设置

参数 说明 默认值
计算公式 输出变量与输入变量的函数关系
采样数量 蒙特卡洛采样规模(100-50000) 5000
结果保留小数位 结果输出保留的小数位数 4
Bootstrap 重采样次数 用于置信区间的重采样次数(10-1000) 100
Sobol 方法 全阶指数估计方法:Sobol2002(Saltelli)/ Sobol2007(Jansen)/ Jansen Sobol2007(Jansen)
计算二阶灵敏度 是否计算二阶成对交互指数
一阶 / 全阶灵敏度颜色 图表中两类指数的颜色 蓝 / 橙

结果说明

输出 内容
一阶灵敏度指数 各变量 S1、95% 置信区间及按重要性排序
全阶灵敏度指数 各变量 ST、95% 置信区间及按重要性排序
二阶灵敏度矩阵 成对变量的二阶交互指数(对称矩阵,对角线为 0)
采样数据 A 样本各变量取值及对应输出结果
可视化 一阶与全阶指数柱状图、二阶热力图、指数对比图

可下载 Excel 报告(含汇总、一阶/全阶/二阶指数、变量配置与采样数据)、采样数据 CSV图表 PDF

AI 辅助分析

工具支持调用大语言模型对分析结果进行专业解读(每日限 3 次),需配置 API 密钥(环境变量)。

边界与说明

  • 采样数量越大,指数估计越稳定,尤其对二阶指数与交互作用明显的模型;建议至少 5000;
  • 一阶、全阶指数通常已足够判断变量重要性;二阶指数噪声较大,仅作参考;
  • ST 与 S1 差距大表示交互作用显著,此时应关注变量组合的影响;
  • 单变量情形 S1 = ST = 1;输出为常量时无法计算;
  • 公式仅在受控安全环境中求值,仅支持数学运算,不执行系统操作。

平台界面

官方地址:https://superr.online

Sobol敏感性分析工具界面

平台界面包含:变量配置上传区、公式与参数设置区、分析结果展示、可视化图表和 AI 分析模块