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

【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期”以及相应指令,即可获取对应下载方式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

请购单一直提示需求部门不能为空无法提交

终于发现了它的逻辑。用户很多次反馈,提交请购单时,提示需求部门不能为空,既使选择了需求部门,保存时,神奇的是会清空掉部门的信息,提交时就会有错误提示出来。 原因:光选择单头上的需求部门是…

leetcode 面试经典 150 题:矩阵置零

链接矩阵置零题序号73题型二维数组解题方法标记数组法难度中等熟练度✅✅✅✅ 题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1]…

AIGC:生成图像动力学

文章目录 前言一、介绍二、方法2.1、运动预测模块运动纹理 2.2、图像渲染模块 三、数据集实验总结 前言 让静态的风景图能够动起来真的很有意思,不得不说CVPR2024 best paper实质名归,创意十足的一篇文章!!! paper&a…

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…

社区版Dify 轻松实现文生图,Dify+LLM+ComfyUI

社区版Dify 轻松实文生图,DifyLLMComfyUI Dify 安装可参考这里ComfyUI 其实 比 WebUI更简单更实用DifyComfyUIDifyLLM1. Qwen 通义千问大模型系列2. OpenAI大模型系列3. 本地Ollama搭建 DifyLLMComfyUI Dify 安装可参考这里 这是一个在Dify上实现 文生图的教程&…

Docker部署Sentinel

一、简介 是什么:面向分布式、多语言异构化服务架构的流量治理组件 能干嘛:从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性 官网地址:https://sentinelguard.io/zh-c…

实用工具推荐----Doxygen使用方法

目录 目录 1 软件介绍 2 Doxygen软件下载方法 3 Doxygen软件配置方法 4 标准注释描述 4.1 块注释 和 特殊描述字符 4.1.1 函数描述示例 4.1.2结构体数组变量示例 特别注意: 4.2单行注释 4.2.1 单个变量注释示例 特别注意: 4.2.2对于枚举变量…

并发编程 - 死锁的产生、排查与解决方案

在多线程编程中,死锁是一种非常常见的问题,稍不留神可能就会产生死锁,今天就和大家分享死锁产生的原因,如何排查,以及解决办法。 线程死锁通常是因为两个或两个以上线程在资源争夺中,形成循环等待&#xf…

云轴科技ZStack获评OpenCloudOS社区2024年度优秀贡献单位

近日,由 OpenCloudOS 社区主办的 2024 OpenCloudOS 年会在北京成功召开。本次大会以“稳建基石,共创新篇”为主题,汇集了业界顶级技术专家与行业领袖,共同探讨下一代操作系统的建设与未来。云轴科技ZStack作为OpenCloudOS 社区的重…

clickhouse解决suspiciously many的异常

1. 问题背景 clickhouse安装在虚拟机上,持续写入日志时,突然关机,然后重启,会出现clickhouse可以正常启动,但是查询sql语句,提示suspiciously many异常,如图所示 2. 问题修复 touch /data/cl…

从零开始k8s-部署篇(未完待续)

从零开始k8s 1.部署k8s-部署篇 1.部署k8s-部署篇 本次部署完全学习于华子的博客点击此处进入华子主页 K8S中文官网:https://kubernetes.io/zh-cn 笔者从零开始部署的k8s,部署前置条件为 1.需要harbor仓库,存放镜像,拉取镜像&am…

Dots 常用操作

游戏中有多个蚂蚁群落,每个蚂蚁属于一个群落,如何设计数据结构? 方法1:为蚂蚁组件添加一个属性 ID,会造成逻辑中大量分支语句,如果分支语句逻辑不平衡可能带来 Job 调度问题,每个蚂蚁会有一份蚂…

如何通过 Kafka 将数据导入 Elasticsearch

作者:来自 Elastic Andre Luiz 将 Apache Kafka 与 Elasticsearch 集成的分步指南,以便使用 Python、Docker Compose 和 Kafka Connect 实现高效的数据提取、索引和可视化。 在本文中,我们将展示如何将 Apache Kafka 与 Elasticsearch 集成以…

深入浅出:AWT的基本组件及其应用

目录 前言 1. AWT简介 2. AWT基本组件 2.1 Button:按钮 2.2 Label:标签 ​编辑 2.3 TextField:文本框 2.4 Checkbox:复选框 2.5 Choice:下拉菜单 2.6 List:列表 综合案例 注意 3. AWT事件处理 …

Go Energy 跨平台框架 v2.5.1 发布

Energy 框架 是Go语言基于CEF 和 LCL 开发的跨平台 GUI 框架, 具体丰富的系统原生 UI 控件集, 丰富的 CEF 功能 API,简化且不失功能的 CEF 功能 API 使用。 特性? 特性描述跨平台支持 Windows, macOS, Linux简单Go语言的简单特性,使用简单…

JS 异步 ( 一、异步概念、Web worker 基本使用 )

文章目录 异步代码异步执行概念ES6 之前的异步 Web worker 异步 代码异步执行概念 通常代码是自上而下同步执行的,既后面的代码必须等待前面的代码执行完才会执行,而异步执行则是将主线程中的某段代码交由子线程去执行,当交给子线程后&…

机器学习(二)-简单线性回归

文章目录 1. 简单线性回归理论2. python通过简单线性回归预测房价2.1 预测数据2.2导入标准库2.3 导入数据2.4 划分数据集2.5 导入线性回归模块2.6 对测试集进行预测2.7 计算均方误差 J2.8 计算参数 w0、w12.9 可视化训练集拟合结果2.10 可视化测试集拟合结果2.11 保存模型2.12 …

Java字符串操作利器:StringBuffer与StringBuilder类详解

在处理字符串变更时,StringBuffer和StringBuilder类是优选工具。与String类不同,StringBuffer和StringBuilder允许对象被多次修改,而不会生成新的未使用对象。 StringBuilder类自Java 5起引入,其与StringBuffer的主要区别在于Stri…

软件确认测试报告的内容和作用简析

软件确认测试报告是对软件确认测试过程及结果的正式记录,是评估软件质量的重要依据。它不仅对开发团队起到反馈作用,更是决策层判断软件是否可以交付的重要参考。 一、软件确认测试报告包括的内容   1、测试目的:明确此次测试的目的和所要…

结构体(初阶)

结构体: 结构体类型的声明 结构体初始化 结构成员访问 结构体传参 1.结构体的声明 1.1结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2结构的声明 struct tag { member - list; }variable-lis…