敏感性分析—Sobol
最近在搞敏感性分析方法中的Sobol方法,看了一些国内的论文,发现一个通病,就是公式一挂就可以得出结果了,对于我这种数学渣渣真的很不适合。直到我在维基百科上面找到了这种方法的详细解释https://en.wikipedia.org/wiki/Variance-based_sensitivity_analysis,包括分析的步骤都写的很清楚,当然还有蛮多东西自己还不是太了解(越来越发觉,数学真的太重要了,师弟师妹们大学别光玩了,至少工科数学还是要学好的。)。本篇博客就不对概念性的东西再做阐述,主要自己目前也是半吊子,就不在这误导大家了。
分析的步骤刚才的网页已经有详细的描述,今天我们就根据网页上的步骤用一个例子来走一遍。
假设现在有一个函数 ,从公式中可以看到有x1、x2、x3三个自变量对应变量Y有影响。然后一般会给这三个参数一个取值范围,这里假设三个自变量的取值范围都设为[0,1]。敏感性分析的目的就是求取这三个参数对于Y值得贡献。当然我们这边可能有人一下子就可以分析出那个参数对于Y值影响最大,但是在解决实际问题时,这个函数一般都是未知,我们只能将其视作一个黑盒子,只有输入和输出,这时我们对其进行敏感性分析就很有必要了。经过敏感性分析我们就能找出对结果影响较大的参数。这样对于调整结果是很有帮助的。
接着上面的例子,首先我们得根据三个自变量的范围进行采样,这边采样的方法一般都是蒙特卡洛采样以及一系列基于蒙特卡洛采样的变种,这个例子中我们采用了 Sobol sequence,具体的采样原理在这就不说了,大家可以自行谷歌。为了方便讲解例子我们设置采样的样本数为4(N = 4),自变量数目为3(D = 3)。我们按照上述网页的步骤。
1、 生成N * 2D(即4行6列)的样本矩阵。这个就是我们Sobol sequence做的事情。这边我们生成的矩阵为:
2、 将矩阵的前D列设置为矩阵A,后D列设置为B列,在我们的例子中就是矩阵m的前3列设置为矩阵A,后3列设置为矩阵B。
构造N*D的矩阵ABi(i = 1,2,…,D),即用矩阵B中的第i列替换矩阵A的第i列,以本体为例:
经过这三步我们构造了A、B、AB1、AB2、AB3这五个矩阵,这样我们就有(D + 2) * N (即20)组x1、x2、x3输入数据,因此我们将有20组Y值。将上述的数据带入函数 ,这里详细的计算过程就不描述了。根据输入我们得出对应的Y值矩阵。
4、 根据一介影响指数公式:
总效应指数:
其中
这里的“加”不是普通意义上的相加而是构造了一个新的矩阵包括YA 和 YB 即
这样我们就可以通过上述的公式求解x_1的一介影响指数。下面是求解过程。
Y 的均值等于
mean(Y)=(2.09136387768+1.11036605855+3.50765176932+
1.31095036329+2.09136387768+3.50765176932+
1.11036605855+1.70665120003)/8 = 2.0545456218
Var(Y) = 0.835332581542
本例中VarX1就等于(2.09136387768 * (2.09136387768 - 2.09136387768) + 3.50765176932* (0.67596163481 - 1.11036605855) + 1.11036605855 * (3.95562603058 - 3.50765176932) + 1.70665120003 * (1.71834424557 - 1.31095036329) )/4 = -0.0827611931562
那么
本例中EX~1 就等于((2.09136387768 - 2.09136387768)^2 + (1.11036605855 - 0.67596163481)^2 + (3.50765176932 - 3.95562603058)^2 + (1.31095036329 - 1.71834424557)^2 )/(2 * 4)= 0.06941973968,那么
至此x1的一介影响指数和全局影响指数都可以求出来了,然后x2、x3的一介影响指数与全局影响指数的求解过程和上面一样。
当然在实际的求解过程中肯定不会用这么少的样本量的,但是求解过程是一样的。希望这篇文章会对做敏感性分析的小伙伴们有些帮助。
敏感性分析—Sobol相关推荐
- matlab运行时风扇,TCFD和CAESES耦合优化案例-轴流风扇
TCFD是CFD Support团队为我们带来的新一代叶轮机械专用CFD模拟工具.TCFD不受用户人数和核数的限制,具有完全自动化的流程,极大地提升了CFD模拟的效率:同时,它保持求解器的开源,可以由 ...
- sobol敏感性分析 matlab代码
% sobol 参数敏感性分析 %参考: % csdn : https://blog.csdn.net/xiaosebi1111/article/details/46517409 % wiki: ht ...
- python如何做敏感度分析_1stopt、matlab和python用morris、sobol方法实现参数敏感性分析...
首先看抛物线函数: 现在我取a=2,b=3,c=4 ,得到如下函数: x或t都是指自变量,就不改了,一个意思. 问题是,我想知道对于此数据和模型,参数a,b,c的敏感性,也就是y的改变量与a.b.c的 ...
- matlab敏感性分析代码,sobol敏感性分析 matlab代码
% sobol 参数敏感性分析 %参考: % csdn : https://blog.csdn.net/xiaosebi1111/article/details/46517409 % wiki: ht ...
- 【水文模型】04 参数识别与敏感性分析方法
摘录自<流域水文模型参数不确定性量化理论方法与应用>第4章. 概述 敏感性分析最常遇到的问题: 计算消耗问题:采用代理模型技术(对于复杂模型而言)或筛选方法(对于多维参数而言) 输入参数的 ...
- sobol灵敏度分析matlab_sobol全局灵敏性分析
最近在研究全局敏感性分析方法中的 Sobol 方法, 看了一些国内的论文, 发现一个通病, 就是公 式一挂就可以得出结果了,真心觉得这种论文很"恶心",主要原因是自己看不太懂.直到 ...
- python进行敏感性分析(SALib库)
什么是敏感性分析 敏感性分析(sensitivity analysis)是指从定量分析的角度研究有关因素发生某种变化对某一个或一组关键指标影响程度的一种不确定分析技术.每个输入的灵敏度用某个数值表示即 ...
- 【参数不确定】敏感性分析(sensitivity analysis)
[参数分析]敏感性分析 敏感性分析简介 敏感性分析方法选择 敏感性分析过程 敏感性分析的方法 One-at-a-time (OAT) Derivative-based local methods Re ...
- Meta分析如何进行敏感性分析
Meta分析是临床医生快速发表SCI,医学研究生快速掌握临床科研基本技巧的重要途径.在看已经发表SCI时,大家可能会时不时的看到敏感性分析,或者是sensitive analysis.这个到底是什么? ...
- 猪肉新鲜度光谱特征指数构建及敏感性分析
猪肉新鲜度光谱特征指数构建及敏感性分析 1.发现问题 猪肉是我国居民最主要的消费畜肉产品,其在储藏.运输.加工等环节易受酶.微生物等作用腐败变质,导致新鲜度下降. 目前研究大都基于统计方法进行光谱建模 ...
最新文章
- 百篇大计敬本年之C++坎坷之路 —— Warning:will be initialized after [-Wreorder]
- GPU、FPGA芯片成为增强机器学习能力的“左膀右臂”
- 【转】web 前端研发工程师编程能力飞升之路
- appium运行报错java.net.SocketException: socket write error
- ios 自定义UIView绘制时文字上下颠倒问题解决
- 爬虫python代码广告_零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)...
- 自定义Excel下拉菜单
- python 线程同步_Python 线程同步
- 重学java基础第十七课:java开发环境搭建
- Vim 重复操作的宏录制
- 人类视觉计算理论经典著作,豆瓣评分9.7,中文版惊鸿面世!
- JS导出txt文本文件,Netsuite方案
- E. Sergey and Subway
- jvisualvm工具使用
- 十五、新人成才之路《做人七项原则 做一个有爱心的人》
- 相亲之战,以少胜多乎?
- matlab 使用,MATLAB使用方法
- flash用的什么语言
- FMVP詹姆斯,王者归来!英雄实至名归!
- mac如何查看wifi密码