敏感性分析—Sobol

2023-11-04

最近在搞敏感性分析方法中的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的一介影响指数与全局影响指数的求解过程和上面一样。
当然在实际的求解过程中肯定不会用这么少的样本量的,但是求解过程是一样的。希望这篇文章会对做敏感性分析的小伙伴们有些帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

敏感性分析—Sobol 的相关文章

随机推荐

  • 计算机二级C语言三天能过吗,学工干货丨如何三天通过计算机二级

    原标题 学工干货丨如何三天通过计算机二级 不可能的 想都不要想 三天怎么可能过 不信你问考完了的 他们马上就可以 进行计算机二级考试成绩查询啦 计算机二级是什么 计算机二级怎么考 迷惘 彷徨 别怕 今天学工菌来助攻 考生在考后50个工作日
  • 博客园自定义主题代码

    发一下好看的 要开通js权限 皮肤用simple memory 最好禁用模板 侧边栏
  • 基于小脑模型神经网络的轨迹跟踪研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 1 在对人类神经学的研究中 得知它由一些神
  • class加载过程

    loading class文件 从硬盘 加载到 内存 linking 1 verification 校验 检查满不满足class文件的格式 2 preparation 将 静态变量 赋默认值 默认值是0 3 resolution 将 常量池
  • Code Embedding研究系列11-ContraFlow

    Path Sensitive Code Embedding via Contrastive Learning for Software Vulnerability Detection 一 引言 1 1 现有方法及其局限 1 2 作者的解决方
  • 24模型微调(finetune)

    一 Transfer Learning Model Finetune 1 1 Transfer Learning Transfer Learning 机器学习分支 研究源域 source domain 的知识如何应用到目标域 targetd
  • <图像处理> Canny边缘检测

    Canny边缘检测 边缘检测评判标准 低错误率 在图像中精确地检测出尽可能多的边缘 并尽量减少漏检和误检 高定位精度 检测出的边缘点应该精确地定位于边缘的中心 边缘唯一性 图像中的每条边缘只被标记一次 同时避免由于噪声干扰产生虚假边缘 Ca
  • doesn‘t belong to any package and ProcessUnpackaged is set to ‘no‘

    数据库日志 开发反馈数据库连接异常 查看数据库日志发现像是服务器把数据库进程kill掉了 2021 04 09 18 48 23 578 CST 78992 606fca0d 13490 80 2021 04 09 11 29 17 CST
  • TypeScript详解

    目录 一 梦开始的地方 1 什么是TypeScript 2 TS开发环境搭建 3 Hello world 二 变量类型 1 原始类型 2 数组类型 3 联合类型 4 自定义类型 类型别名 5 函数类型 6 对象类型 7 接口 8 元组 9
  • smbclient递归目录下载文件

    连接到某个smb服务的share后 依次执行以下命令 recurse ON 开启递归 开启后会以目录递归方式运行mget和mput命令 prompt OFF 关闭交互 开启后 下载文件时不再要求输入y n确认 megt 批量获取文件 是一个
  • Android 经典笔记之一:setOnKeyListener方法事件执行两次

    Android 经典总结案例一 目录介绍 1 完美解决onActivityResult提前执行调用的一系列问题 1 1 出现的问题 1 2 解决方案 1 3 相关原理说明 1 4 知识拓展 2 EditText调用软键盘搜索的setOnKe
  • 电路基础学习笔记1:电路简介

    电路 1 概述 电路是由用电设备或元器件 负载 与 供电设备 电源 通过导线连接而构成的提供给电荷流动的通路 1 1 电流 电流是单位时间内通过某一横截面 A 的总电荷 导体内自由电子的定向移动形成了电流 电流的单位是库伦每秒 也称为安培A
  • for与while的两大循环的不同用法

    for in 循环 整数 浮点数无法进行循环 a 100 b 0 01 for i in a print i for i in 0 11 print i for i in a TypeError int object is not iter
  • 【零基础 快速学Java】韩顺平 p9-19 1 Java重要特点、运行机制、运行过程、第一个Java文件

    视频 p9 19 Java重要特点 Java编译后会形成一个class文件 这个文件在Windows和Linux上都能运行 这就叫做跨平台行 了解一下 Java是解释性语言 它编译后的文件 class文件 底层有一个解释器 JVM 解释它才
  • 解决IDEA无法找到类的问题

    前言 在使用IDEA 通过Maven项目构建工具构建项目时 经常会遇到 无法找到类 Class not found 的错误 但是类本身没有问题 也成功在编译输出的文件中找到 会非常奇怪 另外在Maven项目中编写了测试类 运行程序经常会失败
  • 鸟哥的 linux 的私房菜 基础学习篇,鸟哥的 Linux 私房菜 -- 基础学习篇

    再次强调 底下的几篇短文是学习 Linux 的基础文件 这些文件是基础中的基础 如果您能将其中的文件都看完 并且消化过 那么未来在管理 Linux 主机以及架设网站方面 就能够达到 事半功倍 的成效 请不要忽略这部份了 否则 再怎么讨论都是
  • 前端入职第一天该做什么?

    嘿嘿 很多学习的同志们 上岸了 拿到自己心仪的offer 准备入职 如果是第一次入职 难免会有很多的好奇和担忧 为了避免各位第一天麻爪 让别人感觉自己很low 这里我会描述入职第一天需要做什么 这里结合本人和网络上其他工作了数年前端经验的前
  • 微信小程序背景图片真机不显示问题

    问题描述 开发者工具上
  • Android环境下getaxis怎么用,c# - Input.GetAxis for android - Stack Overflow

    I m creating a maze game and curently i am having delays with my android controls I have lade the computer controls to m
  • 敏感性分析—Sobol

    最近在搞敏感性分析方法中的Sobol方法 看了一些国内的论文 发现一个通病 就是公式一挂就可以得出结果了 对于我这种数学渣渣真的很不适合 直到我在维基百科上面找到了这种方法的详细解释https en wikipedia org wiki V