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₁(理论要求)
  • 这种情况通常由数值误差引起
  • 建议检查数据质量和采样充分性