Sobol 敏感性分析工具
方法概述
Sobol 敏感性分析是一种基于方差的全局敏感性分析方法,用于量化每个输入变量对模型输出方差的贡献。它不依赖于线性假设,适用于任意复杂的函数关系,是工程、经济和环境科学等领域最常用的全局敏感性分析工具。
本工具实现标准 Sobol 方差分解的核心步骤:
- 读取各输入变量的取值范围,生成两组相互独立的随机样本 A、B(在取值范围内均匀采样);
- 构造 Saltelli 设计矩阵:在 A、B 基础上,将 B 的某一列替换为 A 对应列,形成交叉样本 ABⁱ(i=1,…,k);勾选二阶计算时再构造 C^{ij}(保留 i、j 两列为 A、其余取 B),用于估计二阶指数;
- 将各样本代入用户给定的计算公式,得到输出值;
- 由 A、B 及交叉样本的输出估计总方差 V、一阶指数 S1 与全阶指数 ST;
- 通过 Bootstrap 重采样给出 S1、ST 的置信区间;
- 计算二阶指数 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²) ) / VSobol2007 / 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;输出为常量时无法计算;
- 公式仅在受控安全环境中求值,仅支持数学运算,不执行系统操作。
平台界面

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