敏感性分析一览

敏感性分析

    • Sobol
    • Morris
    • Fourier Amplitude Sensitivity Test (FAST)
    • Random Balance Designs - Fourier Amplitude Sensitivity Test (RBD-FAST)
    • Delta Moment-Independent Measure
    • Derivative-based Global Sensitivity Measure (DGSM)
    • Fractional Factorial Sensitivity Analysis
    • High Dimensional Model Representation
    • PAWN
    • Regional Sensitivity Analysis
    • Discrepancy Sensitivity Indices

注:最后两种暂时还没有集成到SALib1.4.7中,需要手动添加官网相关代码。
已手动整理相关代码, 此处跳转。

一个模型有自变量(输入数据)和因变量(输出结果),因变量随自变量的变化而变化,其变化程度与自变量、因变量两者之间关系的强弱决定,敏感性分析便是对强弱关系进行定量讨论,通常将其定量结果称为敏感指数。

敏感指数由三种形式组成。一阶指数衡量单个自变量对因变量方差的贡献;二阶指数衡量两个自变量之间的交互作用对因变量方差的贡献;全阶指数衡量衡量所有自变量(包括一阶效应和其他高阶交互作用)对因变量方差的贡献。

为了方便进行敏感性分析,我们使用Python的敏感性分析库SALib完成计算工作,其包含若干个分析方案,具体如下。

所有方法均以以下相同problem为自变量
定义自变量

problem = {'num_vars': 3,'names': ['x1', 'x2', 'x3'],'bounds': [[-3.14159265359, 3.14159265359],[-3.14159265359, 3.14159265359],[-3.14159265359, 3.14159265359]]
}

Sobol

# 生成自变量
SALib.sample.sobol.sample(problem: Dict, N: int, *, calc_second_order: bool = True, scramble: bool = True, skip_values: int = 0, seed: int | Generator | None = None)
"""
problem: 自变量定义
N: 样本数量,建议为2的倍数,且不大于skip_values
calc_second_order: 是否需要二阶指数计算,默认为True
scramble: 是否添加干扰,默认为True
skip_values: 需要跳过的序列数目,建议为2的倍数,默认是0
seed: 随机种子
"""# 敏感分析
SALib.analyze.sobol.analyze(problem, Y, calc_second_order=True, num_resamples=100, conf_level=0.95, print_to_console=False, parallel=False, n_processors=None, keep_resamples=False, seed=None)
"""
problem: 自变量定义
Y: 因变量
calc_second_order: 是否需要二阶指数计算,默认为True
num_resamples: 重采样次数,默认为100
conf_level: 置信区间水平,默认为0.95
print_to_console: 是否输出到操作台,默认为False
parallel: 是否并行分析,默认为False
n_processors: 并行进程数,当parallel=True时使用
keep_resamples: 是否存储中间重采样结果,默认为False
seed: 随机种子
"""
# 结果
print(Si)
# {
#     'S1': 
#     	array([0.31683154, 0.44376306, 0.01220312]), 
#     'S1_conf': 
#     	array([0.0612548 , 0.05702573, 0.05750855]), 
#     'ST': 
#     	array([0.55586009, 0.44189807, 0.24467539]), 
#     'ST_conf': 
#     	array([0.07651133, 0.04224496, 0.02889387]), 
#     'S2': 
#     	array([[        nan,  0.00925429,  0.23817211],
#        	   [        nan,         nan, -0.0048877 ],
#        	   [        nan,         nan,         nan]]), 
#     'S2_conf': 
#     	array([[       nan, 0.08265217, 0.11277348],
#        	   [       nan,        nan, 0.06331599],
#        	   [       nan,        nan,        nan]])
# }

请添加图片描述

Morris

# 生成自变量
SALib.sample.morris.sample(problem: Dict, N: int, num_levels: int = 4, optimal_trajectories: int = None, local_optimization: bool = True, seed: int = None)
"""
problem: 自变量定义
N: 轨迹数量
num_levels: 网格层数,偶数,默认为4
optimization_trajectories: 要采样的最佳轨迹数量,范围为2到N
local_optimization: 是否使用局部优化,默认为True
seed: 随机种子
"""# 敏感分析
SALib.analyze.morris.analyze(problem: Dict, X: ndarray, Y: ndarray, num_resamples: int = 100, conf_level: float = 0.95, scaled: bool = False, print_to_console: bool = False, num_levels: int = 4, seed=None)
"""
problem: 自变量定义
X: 自变量
Y: 因变量
calc_second_order: 是否需要二阶指数计算,默认为True
num_resamples: 重采样次数,默认为100
conf_level: 置信区间水平,默认为0.95
print_to_console: 是否输出到操作台,默认为False
parallel: 是否并行分析,默认为False
n_processors: 并行进程数,当parallel=True时使用
keep_resamples: 是否存储中间重采样结果,默认为False
seed: 随机种子
"""
# 结果
print(Si)
#           mu   mu_star     sigma  mu_star_conf
# x1  7.354122  7.354122  6.242112  3.968815e-01
# x2 -0.110250  7.875000  7.878168  5.248703e-15
# x3  0.362430  6.486250  9.000676  3.725592e-01
# {
#     'names': ['x1', 'x2', 'x3'], 
#     'mu': array([ 7.35412153, -0.11025   ,  0.36243017]), 
#     'mu_star': masked_array(
#         data=[7.354121529806647, 7.875000000000724, 6.4862503552631114],
#         mask=[False, False, False],
#         fill_value=1e+20), 
#     'sigma': array([6.24211213, 7.87816828, 9.000676  ]), 
#     'mu_star_conf': masked_array(
#         data=[0.39688154270651804, 5.248702595241132e-15, 0.37255924946508345],
#         mask=[False, False, False],
#         fill_value=1e+20)
# }

请添加图片描述

Fourier Amplitude Sensitivity Test (FAST)

# 生成自变量
SALib.sample.fast_sampler.sample(problem, N, M=4, seed=None)
"""
problem: 自变量定义
N: 样本数量
M: 干扰参数,默认为4
seed: 随机种子
"""# 敏感分析
SALib.analyze.fast.analyze(problem, Y, M=4, num_resamples=100, conf_level=0.95, print_to_console=False, seed=None)
"""
problem: 自变量定义
Y: 因变量
M: 干扰参数,默认为4
num_resamples: 重采样次数,默认为100
conf_level: 置信区间水平,默认为0.95
print_to_console: 是否输出到操作台,默认为False
seed: 随机种子
"""
# 结果
print(Si)
# {
#     'S1': [0.3081232160181247, 0.4420505304594682, 1.0406181235617822e-28], 
#     'ST': [0.5519123814033295, 0.46920370910272835, 0.23930621330436663],
#     'S1_conf': [0.013434507989869757, 0.015813518018138756, 0.015093897483613204], 
#     'ST_conf': [0.041141026199615446, 0.04117206451357777, 0.04071053209490691],
#     'names': ['x1', 'x2', 'x3']
# }

请添加图片描述

Random Balance Designs - Fourier Amplitude Sensitivity Test (RBD-FAST)

# 生成自变量
SALib.sample.latin.sample(problem, N, seed=None)
"""
problem: 自变量定义
N: 样本数量
seed: 随机种子
"""# 敏感分析
SALib.analyze.rbd_fast.analyze(problem, X, Y, M=10, num_resamples=100, conf_level=0.95, print_to_console=False, seed=None)
"""
problem: 自变量定义
X: 自变量
Y: 因变量
M: 干扰参数,默认为4
num_resamples: 重采样次数,默认为100
conf_level: 置信区间水平,默认为0.95
print_to_console: 是否输出到操作台,默认为False
seed: 随机种子
"""
# 结果
print(Si)
# {
#     'S1': [0.31806056031674595, 0.4450789986938868, 1.5359880927191816e-06],
#     'S1_conf': [0.0556645519811434, 0.07578207765070516, 0.0214559062090626],
#     'names': ['x1', 'x2', 'x3']
# }

请添加图片描述

Delta Moment-Independent Measure

# 敏感分析
SALib.analyze.delta.analyze(problem: Dict, X: ndarray, Y: ndarray, num_resamples: int = 100, conf_level: float = 0.95, print_to_console: bool = False, seed: int = None, y_resamples: int = None, method: str = 'all')
"""
problem: 自变量定义
X: 自变量
Y: 因变量
num_resamples: 重采样次数,默认为100
conf_level: 置信区间水平,默认为0.95
print_to_console: 是否输出到操作台,默认为False
seed: 随机种子
y_resamples: 重采样时使用的样本数
method: 计算"delta"、"sobol"或两者"all",默认为all
"""
# 结果
print(Si)
#        delta  delta_conf        S1   S1_conf
# x1  0.194729    0.021577  0.302742  0.039161
# x2  0.254878    0.022195  0.313650  0.052195
# x3  0.134645    0.020917  0.006901  0.010473
# {
#     'delta': array([0.19472928, 0.25487771, 0.13464494]), 
#     'delta_conf': array([0.02157656, 0.02219531, 0.02091679]), 
#     'S1': array([0.30274202, 0.31365005, 0.00690086]), 
#     'S1_conf': array([0.03916104, 0.0521946 , 0.01047288]), 
#     'names': ['x1', 'x2', 'x3']
# }

请添加图片描述

Derivative-based Global Sensitivity Measure (DGSM)

# 敏感分析
SALib.analyze.dgsm.analyze(problem, X, Y, num_resamples=100, conf_level=0.95, print_to_console=False, seed=None)
"""
problem: 自变量定义
X: 自变量
Y: 因变量
num_resamples: 重采样次数,默认为100
conf_level: 置信区间水平,默认为0.95
print_to_console: 是否输出到操作台,默认为False
seed: 随机种子
"""
# 结果
print(Si)
# {
#     'vi': array([ 7.73312725, 24.37534083, 11.34887321]), 
#     'vi_std': array([16.43522688, 17.35675534, 24.40109617]), 
#     'dgsm': array([2.24329014, 7.07100245, 3.29217592]), 
#     'dgsm_conf': array([1.01703239, 1.0872397 , 1.60391344]), 
#     'names': ['x1', 'x2', 'x3']
# }

请添加图片描述

Fractional Factorial Sensitivity Analysis

# 生成自变量
SALib.sample.ff.sample(problem, seed=None)
"""
problem: 自变量定义
seed: 随机种子
"""# 敏感分析
SALib.analyze.ff.analyze(problem, X, Y, second_order=False, print_to_console=False, seed=None)
"""
problem: 自变量定义
X: 自变量
Y: 因变量
second_order: 是否需要二阶指数计算,默认为True
print_to_console: 是否输出到操作台,默认为False
seed: 随机种子
"""
# 结果
print(Si)
# {
#     'names': ['x1', 'x2', 'x3', 'dummy_0'], 
#     'ME': array([-2.22146819e-12,  0.00000000e+00,  0.00000000e+00,  0.00000000e+00]), 
#     'interaction_names': [('x1', 'x2'), ('x1', 'x3'), ('x2', 'x3'), ('x1', 'dummy_0'), ('x2', 'dummy_0'), ('x3', 'dummy_0')], 
#     'IE': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
# }

请添加图片描述

High Dimensional Model Representation

# 敏感分析
SALib.analyze.hdmr.analyze(problem: Dict, X: ndarray, Y: ndarray, maxorder: int = 2, maxiter: int = 100, m: int = 2, K: int = 20, R: int = None, alpha: float = 0.95, lambdax: float = 0.01, print_to_console: bool = False, seed: int = None)
"""
problem: 自变量定义
X: 自变量,长度为N
Y: 因变量
maxorder: 最大扩展阶数,范围1-3,默认为2
maxiter: 最大拟合迭代次数,范围1-1000,默认为100
m: B-spline间隔数,范围2-10,默认为2
K: bootstrap迭代次数,范围1-100,默认为20
R: bootstrap样本数,范围100-N/2。默认为N/2,当K为1,R默认为Y的长度
alpha: 置信区间 F 检验,默认为0.95
lambdax: 正则化项,范围0-10,默认0.01
print_to_console: 是否输出到操作台,默认为False
seed: 随机种子
"""
# 结果
print(Si)
# {
#     'Sa': array([0.32098624, 0.32706979, 0.00551071, 0.01372589, 0.22420121,
#        0.03167076]), 
#     'Sa_conf': array([0.03449847, 0.03054272, 0.008012  , 0.00690539, 0.03165136,
#        0.01684393]), 
#     'Sb': array([ 0.01875264, -0.01008509, -0.00085121,  0.00878864,  0.01348094,
#         0.03473462]), 
#     'Sb_conf': array([0.0214207 , 0.03050578, 0.00305786, 0.00632993, 0.02066726,
#        0.02149721]), 
#     'S': array([0.33005615, 0.33421506, 0.00512609, 0.01459155, 0.20722952,
#        0.04286532]), 
#     'S_conf': array([0.03056583, 0.03283559, 0.0086171 , 0.00692596, 0.0308207 ,
#        0.02360502]), 
#     ...............
#     ...............
# }

请添加图片描述
请添加图片描述
请添加图片描述

PAWN

# 敏感分析
SALib.analyze.pawn.analyze(problem: Dict, X: ndarray, Y: ndarray, S: int = 10, print_to_console: bool = False, seed: int = None)
"""
problem: 自变量定义
X: 自变量,长度为N
Y: 因变量
S: 调节间隔,默认为10
print_to_console: 是否输出到操作台,默认为False
seed: 随机种子
"""
# 结果
print(Si)
# {
#     'minimum': array([0.172, 0.215, 0.07 ]), 
#     'mean': array([0.2446899 , 0.35838889, 0.12805354]), 
#     'median': array([0.261 , 0.3875, 0.114 ]), 
#     'maximum': array([0.359, 0.489, 0.257]), 
#     'CV': array([0.24174122, 0.26268279, 0.40149537]), 
#     'names': ['x1', 'x2', 'x3']
# }

请添加图片描述

Regional Sensitivity Analysis

# 敏感分析
SALib.analyze.rsa.analyze(problem: Dict, X: ndarray, Y: ndarray, bins: int = 20, target: str = 'Y', print_to_console: bool = False, seed: int = None)
"""
problem: 自变量定义
X: 自变量
Y: 因变量
bins: 使用的箱数,默认为20
target: 评估自变量("X")或因变量("Y"),默认为"Y"
print_to_console: 是否输出到操作台,默认为False
seed: 随机种子
"""
# 结果
print(Si)
# {
# 'x1': array([ 0.89094312,  0.76391302,  0.6901172 ,  0.07445683,  0.00810598,
#        -0.02019611, -0.01031206, -0.02119982, -0.01553581,  0.00392679,
#        -0.00631403,  0.01199807, -0.0249512 ,  0.01452995,  0.11153721,
#        -0.01175163,  0.3564372 ,  0.57950908,  0.78215635,  1.        ]), 
# 'x2': array([ 0.04154606,  0.0830033 ,  0.09267739,  0.05356006,  0.05618751,
#         0.02343257,  0.0891207 ,  0.02911934, -0.00066498, -0.01310919,
#        -0.00965545, -0.00484718,  0.00592457, -0.00896379,  0.06430754,
#         0.09513276,  0.05469668,  0.05782315,  0.0256584 ,  0.03686238]), 
# 'x3': array([ 0.83197838,  0.0348991 ,  0.03329039,  0.02259925,  0.01671094,
#         0.01156657,  0.014363  ,  0.01250926, -0.02117361,  0.00110074,
#        -0.01738245,  0.02128902, -0.00589163, -0.01071005,  0.04296997,
#         0.01399239,  0.00837767, -0.00838735,  0.04364362,  0.79882026]), 
# 'names': ['x1', 'x2', 'x3'], 
# 'bins': array([0.  , 0.05, 0.1 , 0.15, 0.2 , 0.25, 0.3 , 0.35, 0.4 , 0.45, 0.5 ,
#        0.55, 0.6 , 0.65, 0.7 , 0.75, 0.8 , 0.85, 0.9 , 0.95]), 
# 'target': 'Y'
# }

请添加图片描述

Discrepancy Sensitivity Indices

# 敏感分析
SALib.analyze.discrepancy.analyze(problem: Dict, X: ndarray, Y: ndarray, method: str = 'WD', print_to_console: bool = False, seed: int = None)
"""
problem: 自变量定义
X: 自变量
Y: 因变量
method: 差异类型("WD", "CD", "MD", "L2-star"),默认为"WD"。
print_to_console: 是否输出到操作台,默认为False
seed: 随机种子
"""
# 结果
print(Si)
# {
# 's_discrepancy': array([0.33467611, 0.33305819, 0.3322657 ]), 
# 'names': ['x1', 'x2', 'x3']
# }

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/145734.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器数据恢复-zfs下raidz多块磁盘离线导致服务器崩溃的数据恢复案例

服务器数据恢复环境: 一台服务器共配备32块硬盘,组建了4组RAIDZ,Windows操作系统zfs文件系统。 服务器故障: 服务器在运行过程中突然崩溃,经过初步检测检测没有发现服务器存在物理故障,重启服务器后故障依…

YOLOv7改进:结合CotNet Transformer结构

1.简介 京东AI研究院提出的一种新的注意力结构。将CoT Block代替了ResNet结构中的3x3卷积,在分类检测分割等任务效果都出类拔萃 论文:Contextual Transformer Networks for Visual Recognition 论文地址:https://arxiv.org/abs/2107.12292 有…

技术Leader对下管理的法宝-SMART

SMART方法论 源于国外管理大师的《管理的实践》是管理者能够更加明确员工高效工作的利器,科学、规范的对员工绩效制定考核目标和考核标准5个单词缩写 Specific:目标要具体Measurable:目标成果要可衡量(量化) Attainable:目标要可实现,避免过高/过低Rel…

模块化CSS

1、什么是模块化CSS 模块化CSS是一种将CSS样式表的规则和样式定义封装到模块或组件级别的方法,以便于更好地管理、维护和组织样式代码。这种方法通过将样式与特定的HTML元素或组件相关联,提供了一种更具可维护性、可复用性和隔离性的方式来处理样式。简单…

SpringBoot读取配置的方式

在 Spring Boot 应用中,我们通常需要一些配置信息来指导应用的运行。这些配置信息可以包括如下内容:端口号、数据库连接信息、日志配置、缓存配置、认证配置、等等。Spring Boot 提供了多种方式来读取这些配置信息。读取配置的目的是为了在程序中使用这些…

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— Web APIs(三)

思维导图 全选案例 大按钮控制小按钮 小按钮控制大按钮 css伪类选择器checked <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><…

Apache Commons Pool2 池化技术

对象池是一种设计模式&#xff0c;用于管理和重用对象&#xff0c;以提高性能和资源利用率。对象池的概念在许多应用程序中都有广泛应用&#xff0c;特别是在需要频繁创建和销毁对象的情况下&#xff0c;例如数据库连接、线程、HTTP连接等 对象池通过预先创建一组对象并将它们存…

B. Comparison String

题目&#xff1a; 样例&#xff1a; 输入 4 4 <<>> 4 >><< 5 >>>>> 7 <><><><输出 3 3 6 2 思路&#xff1a; 由题意&#xff0c;条件是 又因为要使用尽可能少的数字&#xff0c;这是一道贪心题&#xff0c;所以…

最大内切圆算法计算裂缝宽度

本文这里是对CSDN上另一位博主的代码进行了整理&#xff1a; 基于opencv的裂缝宽度检测算法&#xff08;计算轮廓最大内切圆算法&#xff09; 我觉得这位博主应该是上传了一个代码草稿&#xff0c;我对其进行了重新整理&#xff0c;并添加了详细的注释。 import cv2 import …

ICCV 2023|Occ2Net,一种基于3D 占据估计的有效且稳健的带有遮挡区域的图像匹配方法...

本文为大家介绍一篇入选ICCV 2023的论文&#xff0c;《Occ2Net: Robust Image Matching Based on 3D Occupancy Estimation for Occluded Regions》&#xff0c; 一种基于3D 占据估计的有效且稳健的带有遮挡区域的图像匹配方法。 论文链接&#xff1a;https://arxiv.org/abs/23…

[红明谷CTF 2021]write_shell %09绕过过滤空格 ``执行

目录 1.正常短标签 2.短标签配合内联执行 看看代码 <?php error_reporting(0); highlight_file(__FILE__); function check($input){if(preg_match("/| |_|php|;|~|\\^|\\|eval|{|}/i",$input)){ 过滤了 木马类型的东西// if(preg_match("/| |_||php/&quo…

Java应用生产Full GC或者OOM问题如何定位

1 引言 生产应用服务频繁Full GC却无法释放内存&#xff0c;甚至可能OOM&#xff0c;这种情况很有可能是内存泄露或者堆内存分配不足&#xff0c;此时需要dump堆信息来定位问题&#xff0c;查看是哪些地方内存泄漏。 Dump文件也称为内存转储文件或内存快照文件&#xff0c;是…

【Axure】常见元件、常用交互效果

产品结构图 以微信为例&#xff0c;根据页面层级制作 动态面板 动态面板的作用&#xff1a;动态面板是一个可视区域&#xff0c;如果要把控件放进去&#xff0c;要全部放进去&#xff0c;放多少显示多少 文本框 隐藏边框方法&#xff1a;先拉一个矩形&#xff0c;去掉部分…

基于Java的汽车票网上预订系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

在windows的ubuntu LTS中安装及使用EZ-InSAR进行InSAR数据处理

EZ-InSAR&#xff08;曾被称为MIESAR&#xff0c;即Matlab界面用于易于使用的合成孔径雷达干涉测量&#xff09;是一个用MATLAB编写的工具箱&#xff0c;用于通过易于使用的图形用户界面&#xff08;GUI&#xff09;进行干涉合成孔径雷达&#xff08;InSAR&#xff09;数据处理…

vue-cli项目打包体积太大,服务器网速也拉胯(100kb/s),客户打开网站需要等十几秒!!! 尝试cdn优化方案

一、首先用插件webpack-bundle-analyzer查看自己各个包的体积 插件用法参考之前博客 vue-cli项目中&#xff0c;使用webpack-bundle-analyzer进行模块分析&#xff0c;查看各个模块的体积&#xff0c;方便后期代码优化 二、发现有几个插件体积较大&#xff0c;有改成CDN引用的…

亚信科技AntDB数据库 高并发、低延迟、无死锁,深入了解AntDB-M元数据锁的实现

AntDB-M在架构上分为两层&#xff0c;服务层和存储引擎层。元数据的并发管理集中在服务层&#xff0c;数据的存储访问在存储引擎层。为了保证DDL操作与DML操作之间的一致性&#xff0c;引入了元数据锁&#xff08;MDL&#xff09;。 AntDB-M提供了丰富的元数据锁功能&#xff0…

【Axure高保真原型】3D圆柱图_中继器版

今天和大家分享3D圆柱图_中继器版的原型模板&#xff0c;图表在中继器表格里填写具体的数据&#xff0c;调整坐标系后&#xff0c;就可以根据表格数据自动生成对应高度的圆柱图&#xff0c;鼠标移入时&#xff0c;可以查看对应圆柱体的数据……具体效果可以打开下方原型地址体验…

一文带你搞懂Redis持久化

Redis持久化 Redis的数据是存储在内存的&#xff0c;当程序崩溃或者服务器宕机&#xff0c;那么内存里的数据就会丢失。所以避免数据丢失的情况&#xff0c;需要将数据保存到其他的存储设备中。 Redis提供两种方式来持久化&#xff0c;分别是 RDB(Redis Database)&#xff1a…

【LeetCode热题100】--19.删除链表的倒数第N个结点

19.删除链表的倒数第N个结点 注意&#xff1a;先声明一个头结点&#xff0c;它的next指针指向链表的头节点&#xff0c;这样就不需要对头节点进行特殊的判断 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListN…