【MATLAB第110期】#保姆级教学 | 基于MATLAB的PAWN全局敏感性分析方法(无目标函数)含特征变量置信区间分析

news2024/12/27 17:45:56

【MATLAB第110期】#保姆级教学 | 基于MATLAB的PAWN全局敏感性分析方法(无目标函数)含特征变量置信区间分析

一、介绍

PAWN(Probabilistic Analysis With Numerical Uncertainties)是一种基于密度的全局敏感性分析(Global Sensitivity Analysis, GSA)方法,它通过累积分布函数来评估模型参数对输出的影响,考虑输出的分布函数在参数取值不同时的差异,利用Kolmogorov-Smirnov(KS)统计量来表征参数的灵敏度,特别适合于处理输出具有复杂分布特性(非对称或多峰)的情况。

Sobol方法是基于方差的全局敏感性分析方法,它通过计算模型输出方差的贡献来评估参数的重要性。Sobol方法的核心在于方差分解,即认为输出的总方差可以分解为各个参数的方差贡献和参数间交互作用的方差贡献。

PAWN方法是一种基于矩独立的全局敏感性分析方法,它不依赖于输出分布的特定矩(如方差),而是使用整个输出分布来表征不确定性。PAWN通过比较无条件输出分布(所有参数自由变化时)和条件输出分布(固定一个参数时)的差异来度量敏感性。

与Sobol方法相比,优势体现在:

1、适用范围更广:PAWN方法适用于更广泛的模型,特别是那些输出分布非对称或具有多峰性的模型,而Sobol’方法适用于那些输出分布接近正态分布的模型,若输出的分布为非对称时,会产生相应偏差。

2、需要样本量更少:PAWN方法需要的样本数量相对较少,能够更有效地区分参数的相对重要性,而Sobol方法可能需要更多的样本来获得准确的参数排序和灵敏度指数。

3、参数灵敏度区别明显:PAWN方法能够更明显地区分参数的灵敏度,提供了更细致的参数重要性排序,而Sobol方法计算得到的参数灵敏度相对更小,且不同参数间的灵敏度差异也更小,可能不能很明显地对参数的灵敏度进行划分。

二、运行步骤


在这里插入图片描述
输出满足多峰分布。


1、建立代理模型
(1)数据设置:常用的案例数据 ,103*8 ,前7列代表输入变量M, 最后1列代表因变量。
(2)数据变量上下限
X1-X7的最小值为:[137 0 0 160 4.4 708 650]
X1-X7的最大值为:[374 193 260 240 19 1049.90 902]
(3)代理模型选择:BP


2、建立模型

(1)有/无条件输出分布样本数设置:

  • 无条件输出分布:所有参数自由变化时 (传统方法)
  • 有条件输出分布:固定其中一个参数时,其余参数自由变化
NU=150;%无条件CDF的样本数,即当所有输入都变化时
NC=150;%有条件CDF的样本数, 当一个或多个输入固定时
n=10%分布水平,有条件样本,固定一个输入变量时,选取的值为上下限空间采样中的的10个值(通过lhs采样)

(2)无条件输出分布数据采样
数据抽样采用拉丁超立方抽样lhs方法,但因为一般lhs抽样分布在【0,1】之间,为了解决此问题,采用连续均匀逆累积分布函数解决。

p = lhcube(Nu,M)% 拉丁超立方抽样
Xu=unifinv(p,a,b)
Yu = model_evaluation(bpfun,Xu) ;
  • p为lhs抽样后的矩阵,区间范围为【0,1】。
  • a和b分别为变量取值的最小值和最大值。
  • Xu为以p中相应的概率计算参数空间范围内的均匀cdf的逆。
  • Yu为以BP模型为代理模型情况下,输入为Xu计算的值

均匀cdf的逆为:
在这里插入图片描述
标准均匀分布时,a=0,b=1。

(3)有条件输出分布数据采样
每个变量在范围空间里抽取n=10个值 , 分别固定对应变量的值 ,其余值自由抽样。
举例:针对X1[137,374]进行抽样10个值,得到101507矩阵,其余6个变量同理。

240.769544971060
310.436967493479
145.692630610127
165.239449093029
283.868192881610
208.624632109356
345.374320503857
259.777657520337
362.342087092143
191.097454825086

11507矩阵
在这里插入图片描述
21507矩阵
在这里插入图片描述
101507矩阵
在这里插入图片描述

XX=unifinv(p,a,b) %同理,只不过矩阵结构是7*10*150*7
YY = model_evaluation(bpfun,XX) ;%同理,只不过矩阵结构是7*10*150*1

(4)估算无条件和有条件的CDF值

[ YF, Fu, Fc  ] = cdfs(Yu,YY) ;
%YF=通过分析Yu和YY中的输出最大最小值,重新对Y值进行等距分布。
%FU=根据Yu估算的经验无条件CDF值
%FC=根据YY{i,k}估算的经验有条件CDF值

取YY (矩阵结构7×10×150×1 )值和Yu值(矩阵结构150×1)样本中的最大Ymax和最小Ymin值进行分析,考虑整体样本输出分布。

取间隔值为:

deltaY = (Ymax-Ymin)/4000 ;   %  间隔值

则YF公式为:

YF =  [ (Ymin-std(Yu)/10) : deltaY : (Ymax+std(Yu)/10) ]' ;

FU的计算与Yu和YF值相关,FU的矩阵结构与YF相同,

当Nc=150时,F = [1:Nc]/Nc ,即将1等比例分为150份,累计增加。
在N=1:Nc情况下,Yu中小于YF(N)的部分对应序列的值 ,赋对应的F值。

FC则是与YY和YF值相关,矩阵结构为710(YF*1)
与FU计算同理。

(5)CDF值绘图:
灰色的图:YF为输入,FC为输出
红色的图:YF为输入,FU为输出
在这里插入图片描述
在这里插入图片描述
(6)KS统计量计算

计算经验无条件CDF和不同条件值下的条件CDF之间的Kolmogorov-Smirnov(KS)统计量:

KS(k,i) = max | F(y) - F(y|x(i)=x_ik) |

每个变量的KS统计值:
在这里插入图片描述
(7)PAWN灵敏性值计算
根据KS的max值进行计算
在这里插入图片描述
(8)变量灵敏性值区间范围计算
通过bootstrapping自举法评估鲁棒性,使用越来越多的样本重复计算,以评估收敛性,重复收敛分析以得出置信区间
重采样次数选为100.
在这里插入图片描述
(9)收敛性分析
即对不同样本数量进行分析,选取的采样空间进行扩充 ,
如NCb = [ NC/10 NC/2 NC ] ;
NUb = [ NU/10 NU/2 NU ] ;NN = NUb+n*NCb ;
即有条件和无条件输出分布样本数量为【165 ,825 ,1650】
纵坐标为不同变量对应的灵敏性值
在这里插入图片描述
(10)考虑输出阈值情况的敏感性分析
可参考【MATLAB第109期】基于MATLAB的带置信区间的RSA区域敏感性分析方法,无目标函数
将PAWN应用于限定输出范围的区域,计算对应的PAWN灵敏性值,
即对应的输出要高于给定阈值,如阈值为10,则10以下的输出要筛除。

thres = 10%阈值为10 ;

在这里插入图片描述

三、代码获取

1.阅读首页置顶文章
2.关注CSDN
3.根据自动回复消息,私信回复“110期”以及相应指令,即可获取对应下载方式。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BiTCN-BiGRU基于双向时间卷积网络结合双向门控循环单元的数据多特征分类预测(多输入单输出)

Matlab实现BiTCN-BiGRU基于双向时间卷积网络结合双向门控循环单元的数据多特征分类预测(多输入单输出) 目录 Matlab实现BiTCN-BiGRU基于双向时间卷积网络结合双向门控循环单元的数据多特征分类预测(多输入单输出)分类效果基本描述…

python: Oracle Stored Procedure query table

oracel sql script CREATE OR REPLACE PROCEDURE SelectSchool(paramSchoolId IN char,p_cursor OUT SYS_REFCURSOR ) AS BEGINOPEN p_cursor FORSELECT *FROM SchoolWHERE SchoolId paramSchoolId; END SelectSchool; /-- 查询所有 CREATE OR REPLACE PROCEDURE SelectScho…

软件老化分析

软件老化 课程:软件质量分析 作业 解答 Python代码如下: n int(input("类别数:")) theta list(map(float, input("各个类别的权重:").split())) m list(map(int, input("各个类别的度量元数量&…

cesium通过经纬度获取3dtiles 得feature信息

找到这里3dtiles的两种访问方式: 1.1 3DTileContent#getFeature 这里涉及3DTile 数据结构,暂不了解3DTile 数据结构,因此暂不使用。 1.2 scene.pick 本次使用 scene表示虚拟场景中所有 3D 图形对象和状态的容器;scene中…

【Lua之·Lua与C/C++交互·Lua CAPI访问栈操作】

系列文章目录 文章目录 前言一、概述1.1 Lua堆栈 二、栈操作2.1 基本的栈操作2.2 入栈操作函数2.3 出栈操作函数2.4 既入栈又出栈的操作函数2.5 栈检查与类型转换函数2.5 获取表数据 三、实例演示总结 前言 Lua是一种轻量级的、高性能的脚本语言,经常被用于游戏开发…

Linux -- 生产消费模型

目录 概念 代码 BlockQueue.hpp 代码: 伪唤醒!! Thread.hpp 代码: Task.hpp 代码: test.cc 代码: 再次理解 概念 生产消费模型,也称为生产者-消费者问题,是计算机科学中的一…

DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(1)

DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(1) 架构 架构图 本设计方案的目标是在一台阿里云ECS服务器上搭建一个轻量级的Kubernetes服务k3s节点,并基于Argo搭建一套完整的DevOps CI/CD服务平台,包括Argo CD…

React 第二十节 useRef 用途使用技巧注意事项详解

简述 useRef 用于操作不需要在视图上渲染的属性数据,用于访问真实的DOM节点,或者React组件的实例对象,允许直接操作DOM元素或者是组件; 写法 const inpRef useRef(params)参数: useRef(params),接收的 …

【2024最新】基于Python+Mysql+django的水果销售系统Lw+PPT

作者:计算机搬砖家 开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:Java精选实战项…

利用Java爬虫速卖通按关键字搜索AliExpress商品

在这个信息爆炸的时代,数据的价值日益凸显。对于电商领域的从业者来说,能够快速获取商品信息成为了一项重要的技能。速卖通(AliExpress)作为全球领先的跨境电商平台,拥有海量的商品数据。本文将介绍如何使用Java语言编…

动态规划<五> 子数组问题(含对应LeetcodeOJ题)

目录 引例 经典LeetcodeOJ题 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 引例 OJ传送门 Leetcode<53> 最大子数组和 画图分析: 使用动态规划解决 1.状态表示 dp[i]表示以i位置为结尾的所有子数组中的最大和 2.状态转移方程 子数组的问题可以…

前端实现PDF预览的几种选择(pdfjs-dist、react-pdf、pdf-viewer)

记录 PDF预览的选型 对于浏览器自带的PDF预览 如果能直接使用&#xff0c;那自然最好不过了&#xff0c;但考虑多种因素&#xff0c;比如权限问题&#xff0c;禁止用户去下载PDF、预览样式不统一&#xff08;不同浏览器PDF预览的实现不同&#xff09;&#xff0c;所有最终放弃…

小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面

文章目录 前言一、开启SSH二、配置阿里云ddns1.准备工作2.创建ddns脚本3.添加定时任务 三、开启外网访问SSH和WEB管理界面1、解除WEB管理页面访问限制2.手动添加防火墙端口转发规则&#xff0c;开启外网访问WEB管理和SSH 前言 例如&#xff1a;随着人工智能的不断发展&#xf…

机器学习(三)-多项式线性回归

文章目录 1. 多项式回归理论2. python通过多项式线性回归预测房价2.1 预测数据2.2导入标准库2.3 导入数据2.4 划分数据集2.5 构建二次多项式特征&#xff08;1, x, x^2&#xff09;2.6 导入线性回归模块2.7 对测试集进行预测2.8 计算均方误差 J2.9 计算参数 w0、w1、w22.10 可视…

【再学javascript算法之美】前端面试频率比较高的基础算法题

基础算法题练习代码&#xff0c;看看能做出几道题 代码实现 找出字符串中出现次数最多的字符 const array "cncnansdnajsadnjasndjnasjdnjj";// 找出出现次数最多的字符 let obj {}; for (let index 0; index < array.length; index) {const element array[…

芯产品|暴雨推出基于兆芯晶片的新品台式机

近期&#xff0c;基于兆芯开先KX-7000系列处理器&#xff0c;暴雨推出新品桌面整机TSJ200-ZX&#xff0c;凭借开先KX-7000系列处理器强劲的性能表现和优异的兼容性&#xff0c;将为行业信创深入发展增添更多的活力和能量。 暴雨TSJ200-ZX是针对政务办公&#xff0c;金融机构和…

echarts进度仪表盘形式

const pointerData 55; // 仪表指针数据const steps 10; // 总共10个步骤 const borderColor {colorStops: [{offset: 0,color: rgba(208, 244, 255, 1)}, {offset: 1,color: rgba(35, 190, 240, 1)}] }; // 边框颜色// 使用数组和循环动态生成颜色数组 const axisLinecolor…

代码随想录-笔记-其八

让我们开始&#xff1a;动态规划&#xff01; 70. 爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; class Solution { public:int climbStairs(i…

线性回归a

训练数据 求平方损失的平均值1/n&#xff0c;目标求解w&#xff0c;b使得损失函数最小 显示解

学习记录—正则表达式-基本语法

正则表达式简介-《菜鸟教程》 正则表达式是一种用于匹配和操作文本的强大工具&#xff0c;它是由一系列字符和特殊字符组成的模式&#xff0c;用于描述要匹配的文本模式。 正则表达式可以在文本中查找、替换、提取和验证特定的模式。 本期内容将介绍普通字符&#xff0c;特殊…