资源描述
Sobol全局敏捷性分析
近来在研究全局敏感性分析措施中Sobol措施,看了某些国内论文,发现一种通病,就是公式一挂就可以得出成果了,真心觉得这种论文很“恶心”,重要原因是自己看不太懂。直到在维基百科上面找到了这种措施详细解释,今天我们就根据网页上环节用一种例子来走一遍。
1.假设目前有一种函数:,从公式中可以看到有x1、x2、x3三个自变量对应变量Y有影响。
2.然后一般会给这三个参数一种取值范围,这里假设三个自变量取值范围都设为[0,1]。
敏感性分析目就是求取这三个参数对于Y值得奉献。当然我们这边也许有人一下子就可以分析出那个参数对于Y值影响最大,不过在处理实际问题时,这个函数一般都是未知,我们只能将其视作一种黑盒子,只有输入和输出,这时我们对其进行敏感性分析就很有必要了。通过敏感性分析我们就能找出对成果影响较大参数。这样对于调整成果是很有协助。
3.接着上面例子,首先我们得根据三个自变量范围进行采样,这边采样措施一般都是蒙特卡洛采样以及一系列基于蒙特卡洛采样变种,这个例子中我们采用了 Sobol sequence,详细采样原理在这就不说了,大家可以自行google。为了以便讲解例子我们设置采样样本数为4(N = 4),自变量数目为3(D = 3)。我们按照上述网页环节。
4.生成N * 2D(即4行6列)样本矩阵。这个就是我们Sobol sequence做事情。这边我们生成矩阵为:
5、 将矩阵前D列设置为矩阵A,后D列设置为B列,在我们例子中就是矩阵m前3列设置为矩阵A,后3列设置为矩阵B。
构造N*D矩阵ABi(i = 1,2,…,D),即用矩阵B中第i列替代矩阵A第i列,以本体为例:
6.通过这三步我们构造了A、B、AB1、AB2、AB3这五个矩阵,这样我们就有(D + 2) * N (即20)组x1、x2、x3输入数据,因此我们将有20组Y值。将上述数据带入函 ,这里详细计算过程就不描述了。根据输入我们得出对应Y值矩阵。
7.根据一介影响指数公式:
总效应指数:
其中:
这里“加”不是一般意义上相加而是构造了一种新矩阵包括YA 和 YB 即
这样我们就可以通过上述公式求解x1一介影响指数。下面是求解过程。
8.Y 均值等于
mean(Y)=(2.068+1.+3.932+ 1.329+2.068+3.932+ 1.+1.003)/8 = 2.08
Var(Y) = 0.1542
本例中VarX1就等于(2.068 * (2.068 - 2.068) + 3.932* (0.481 - 1.) + 1. * (3.058 - 3.932) + 1.003 * (1.557 - 1.329) )/4 = -0.01562
那么
本例中EX~1 就等于((2.068 - 2.068)^2 + (1. - 0.481)^2 + (3.932 - 3.058)^2 + (1.329 - 1.557)^2 )/(2 * 4)= 0.068,那么
至此x1一介影响指数和全局影响指数都可以求出来了,然后x2、x3一介影响指数与全局影响指数求解过程和上面同样。
当然在实际求解过程中肯定不会用这样少样本量,不过求解过程是同样。但愿这篇文章会对做敏感性分析小伙伴们有些协助。
展开阅读全文