Sobol敏感性分析计算说明
提示:本指南只针对Sobol敏感性分析方法特有的内容进行描述,关于软件的通用操作流程(如文件上传、参数设置、结果下载等),请查看:通用计算说明
1. 方法概述
Sobol敏感性分析是一种基于方差的全局敏感性分析方法,用于量化输入变量对模型输出不确定性的贡献。该方法能够计算一阶敏感性指数、全阶敏感性指数和二阶交互敏感性指数。
主要特点:
- 全局敏感性:考虑整个输入空间的变化
- 方差分解:将输出方差分解为各输入变量的贡献
- 交互效应:能够识别变量间的交互作用
敏感性指数含义:
- 一阶敏感性指数(S₁):单个变量独立作用对输出方差的贡献
- 全阶敏感性指数(Sₜ):变量及其所有交互效应对输出方差的总贡献
- 二阶敏感性指数(S₂):两个变量交互作用对输出方差的贡献
2. 计算方法选择
本平台提供两种Sobol敏感性分析计算方法:
2.1 公式计算方法
适用场景:
- 有明确的数学模型或公式
- 需要自动生成采样数据
- 探索性分析和参数研究
优势:
- 无需准备采样数据
- 可控制采样数量和精度
- 支持复杂数学公式
2.2 数据计算方法
适用场景:
- 已有采样数据和计算结果
- 基于实验数据或仿真结果
- 黑盒模型分析
优势:
- 直接使用现有数据
- 适用于复杂仿真模型
- 无需公式表达
3. 公式计算方法
3.1 数据文件格式
公式计算需要上传变量配置文件,包含以下信息:
<div style=“text-align: center;”> <img src=“/guide/figures/sobol/sobol公式-变量配置.png” width=“700” alt=“Sobol变量配置格式”> </div>
文件格式要求:
- 计算变量:用于公式计算的变量名(如:x1, x2, x3)
- 绘图变量:用于图表显示的变量名(支持LaTeX格式,如:x_1会显示为$x_1$,x_2会显示为$x_2$)
- 最小值:变量取值范围的下限
- 最大值:变量取值范围的上限
3.2 参数设置
<div style=“text-align: center;”> <img src=“/guide/figures/sobol/sobol公式-参数设置.png” width=“800” alt=“Sobol变量配置格式”> </div>
3.2.1 计算公式
输入包含变量的数学公式,支持Python语法:
基本运算:
- 加法:
x1 + x2 - 减法:
x1 - x2 - 乘法:
x1 * x2 - 除法:
x1 / x2 - 幂运算:
x1 ** 2(x1的平方)
数学函数:
- 三角函数:
math.sin(x1),math.cos(x1),math.tan(x1) - 对数函数:
math.log(x1)(自然对数) - 指数函数:
math.exp(x1) - 常数:
math.pi,math.e
复杂公式示例:
2 * x1 + 3 * x2 + x3
x1 ** 2 + math.sin(x2) + math.exp(x3)
x1 * x2 + (x1 + x2) ** 2
注意:公式中的变量名必须与变量配置文件中的计算变量一致,且不需要写
y=xx,只写等号后面的内容即可。
3.2.2 采样数量
软件会基于每个变量的取值范围进行Saltelli采样,采样数量越大,结果越准确,但计算时间越长
3.2.3 小数点保留位数
计算结果的保留位数
3.3.4 一阶、全阶灵敏度颜色
用于绘制一阶、全阶灵敏度柱状图,可修改对应柱的颜色
3.3 计算结果
公式计算的结果文件包含:
3.3.1 敏感性分析结果
<div style=“text-align: center;”> <img src=“/guide/figures/sobol/灵敏度结果.png” width=“1200” alt=“灵敏度结果”> </div>
- 一阶、全阶灵敏度表:各变量的敏感性指数
- 二阶灵敏度矩阵:变量间交互效应
<div style=“text-align: center;”> <img src=“/guide/figures/sobol/一阶全阶柱状图.png” width=“600” alt=“一阶全阶柱状图”> </div>
- 一阶、全阶柱状图:直观显示敏感性大小
<div style=“text-align: center;”> <img src=“/guide/figures/sobol/二阶灵敏度热力图.png” width=“600” alt=“二阶灵敏度热力图”> </div>
- 二阶灵敏度热力图:交互效应可视化
3.3.2 采样数据
<div style=“text-align: center;”> <img src=“/guide/figures/sobol/采样数据.png” width=“600” alt=“采样数据”> </div>
- 采样数据和计算结果:生成的样本点和对应的模型输出
4. 数据计算方法
4.1 数据文件格式
数据计算需要上传包含采样数据和计算结果的Excel文件:
<div style=“text-align: center;”> <img src=“/guide/figures/sobol/sobol数据格式.png” width=“400” alt=“Sobol数据格式”> </div>
数据组织要求:
- 前几列为输入变量的采样值
- 最后一列为模型的计算结果
- 列名不限,变量列推荐使用字母,方便绘图
4.2 数据要求
4.2.1 数据行数要求
- Saltelli采样要求,数据行数必须是
(2 × 变量数 + 2)的整数倍 - 例如:3个变量时,行数应为8的倍数(8, 16, 24, …)
- 系统会自动检查并调整不符合要求的数据
4.2.2 数据质量要求
- 所有数据必须为数值型
- 不能包含空值或文本
- 建议每个变量至少500个基本样本点以保证精度
4.3 参数设置
4.3.1 小数点保留位数
计算结果的保留位数
4.3.2 一阶、全阶灵敏度颜色
用于绘制一阶、全阶灵敏度柱状图,可修改对应柱的颜色
4.4 计算结果
数据计算的结果文件包含:
- 原始数据:上传的采样数据
- 一阶、全阶灵敏度:敏感性分析结果
- 二阶灵敏度:交互效应分析
- 一阶、全阶柱状图:直观显示敏感性大小
- 二阶灵敏度热力图:交互效应可视化
效果与公式计算方法相同,详见 3.3 计算结果。
<!-- ## 5. 结果解读
5.1 敏感性指数解读
5.1.1 一阶敏感性指数(S₁)
- 取值范围:0 ≤ S₁ ≤ 1
- 含义:变量单独作用对输出方差的贡献比例
- 解读:
- S₁ > 0.1:该变量有显著影响
- S₁ > 0.5:该变量是主要影响因素
- S₁接近0:该变量影响很小
5.1.2 全阶敏感性指数(Sₜ)
- 取值范围:S₁ ≤ Sₜ ≤ 1
- 含义:变量及其所有交互效应的总贡献
- 解读:
- Sₜ - S₁:交互效应的贡献
- Sₜ >> S₁:该变量主要通过交互作用影响输出
- Sₜ ≈ S₁:该变量主要独立作用,交互效应小
5.1.3 二阶敏感性指数(S₂)
- 含义:两个变量交互作用的贡献
- 解读:
- S₂ > 0.05:存在显著交互效应
- 对角线元素为0(变量与自身无交互)
- 矩阵对称(S₂ᵢⱼ = S₂ⱼᵢ)
5.2 敏感性等级划分
根据敏感性指数大小,可以划分影响等级:
- 高敏感性:S₁ ≥ 0.3 或 Sₜ ≥ 0.4
- 中等敏感性:0.1 ≤ S₁ < 0.3 或 0.2 ≤ Sₜ < 0.4
- 低敏感性:0.05 ≤ S₁ < 0.1 或 0.1 ≤ Sₜ < 0.2
- 不敏感:S₁ < 0.05 且 Sₜ < 0.1 -->
5. 常见问题
5.1 公式计算相关
问:如何编写复杂的数学公式?
答:公式支持Python语法,常用写法:
- 幂运算使用
**:x1**2表示x1的平方 - 开方使用分数指数:
x1**(1/2)表示x1的平方根 - 三角函数需要
math.前缀:math.sin(x1) - 可以使用括号控制运算顺序:
(x1 + x2) * x3
5.2 结果解读相关
问:一阶敏感性为负值正常吗?
答:系统会自动处理负值:
- 负的一阶敏感性会被设为0
- 这通常由采样不足或数值误差引起
- 建议增加采样数量重新计算
问:全阶敏感性小于一阶敏感性怎么办?
答:系统会自动调整:
- 确保 Sₜ ≥ S₁(理论要求)
- 这种情况通常由数值误差引起
- 建议检查数据质量和采样充分性