【MATLAB第111期】基于MATLAB的sobol全局敏感性分析方法二阶指数计算

【MATLAB第111期】基于MATLAB的sobol全局敏感性分析方法二阶指数计算

一、简介

在MATLAB中计算Sobol二阶效应指数通常涉及到全局敏感性分析(Global Sensitivity Analysis, GSA),其中Sobol方法是一种流行的技术,用于评估模型输入参数的敏感性。Sobol二阶效应指数衡量的是两个参数之间的交互作用对模型输出的影响。

Sobol二阶效应指数的计算涉及到以下步骤:

1、生成Sobol序列,并在一阶的基础上,生成N=(2D+2)*npop个样本集,其中D为变量数, npop为采样的数量, N为总样本数 。
在一阶基础上,N=(D+2)*nPop样本, 包含A、AB和B矩阵。
二阶需要生成BA矩阵,用来评估二阶指数。

2、模型计算
可参考64期文章, 利用sobol函数进行抽样,得到的X值 ,通过bp组成的代理模型进行计算。

3、计算Sobol指数:使用Sobol序列和模型输出,计算每个参数的一阶、二阶效应指数和总效应指数, 其中,一阶和总效应指数较为好计算, 二阶效应指数可以参考python的Salib库进行研究 ,

Sobol二阶效应指数的计算公式如下:
在这里插入图片描述
其中i为1:D,j为i+1:D,
4、计算效果
在这里插入图片描述

在这里插入图片描述

二、部分源码

S2计算代码如下:

 Vjk = mean(BAj .* ABk - A .* B) / var(y);
    Sj = first_order(A, ABj, B);
    Sk = first_order(A, ABk, B);
    S2 = Vjk - Sj - Sk;

核心参考代码如下(需要自行二次编译):



    % Normalize the model output
    Y = (Y - mean(Y)) / std(Y);
    % Separate output values
    A = Y(1:2*D+2:end);
    B = Y((end-1):-(2*D+1):1);
    AB = zeros(length(Y)/ (2*D+2), D);
        BA = zeros(length(Y)/ (2*D+2), D);
        for j = 1:D
            AB(:, j) = Y((j+1):2*D+2:end);
            BA(:, j) = Y((j+1+D):2*D+2:end);
        end
    end

    % Calculate second order indices if required

        for j = 1:D
            for k = j+1:D
                Si.S2(j, k) = second_order(A, AB(:, j), AB(:, k), BA(:, j), B);
end
end
function S = first_order(A, AB, B)
    % First order estimator following Saltelli et al. 2010 CPC, normalized by
    % sample variance
    y = [A, B];
    if range(y) == 0
        warning('Constant values encountered, indicating model evaluations (or subset of evaluations) produced identical values.');
        S = 0;
        return;
    end
    S = mean(B .* (AB - A)) / var(y);
end

function S = total_order(A, AB, B)
    % Total order estimator following Saltelli et al. 2010 CPC, normalized by
    % sample variance
    y = [A, B];
    if range(y) == 0
        warning('Constant values encountered, indicating model evaluations (or subset of evaluations) produced identical values.');
        S = 0;
        return;
    end
    S = 0.5 * mean((A - AB) .^ 2) / var(y);
end

function S = second_order(A, ABj, ABk, BAj, B)
    % Second order estimator f ollowing Saltelli 2002
    y = [A, B];
    if range(y) == 0
        warning('Constant values encountered, indicating model evaluations (or subset of evaluations) produced identical values.');
        S = 0;
        return;
    end
    Vjk = mean(BAj .* ABk - A .* B) / var(y);
    Sj = first_order(A, ABj, B);
    Sk = first_order(A, ABk, B);
    S = Vjk - Sj - Sk;
end

三、代码获取

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

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

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

相关文章

线段树例题题解

卫星覆盖(NOI1997) 题面: SERCOI(Space-Earth Resource Cover-Observe lnstitute) 是一个致力于利用卫星技术对空间和地球资源进行覆盖观测的组织。现在他们研制成功一种新型资源观测卫星 -SERCOI-308。这种卫星可以…

FFmpeg 编码和解码

文章目录 音频格式AACADIF音频数据交换格式ADTS音频数据传输流 音频解码音频编码 视频格式H264GOP图像组I帧,P帧,B帧H264压缩技术H264压缩级别H264视频级别H264码流结构SPSPPS 解码视频编码视频 音频格式 AAC AAC全称 Advanced Audio Coding&#xff0…

vue 组件库二次封装

vue 组件库二次封装 需求背景:项目使用arco-design组件库,ui 界面对于单选有统一的界面, 对于封装组件有一个大原则就是我们应该尽量保持原有组件的接口,除了我们需要封装的功能外,我们不应该改变原有组件的接口&#…

Kafka 幂等性与事务

文章目录 幂等性实现机制配置使用局限性 事务使用场景配置使用实现机制事务过程事务初始化事务开始事务提交事务取消事务消费 幂等性 Producer 无论向 Broker 发送多少次重复的数据,Broker 端只会持久化一条,保证数据不丢失且不重复。 实现机制 通过引…

LVS 负载均衡原理 | 配置示例

注:本文为 “ LVS 负载均衡原理 | 配置” 相关文章合辑。 部分内容已过时,可以看看原理实现。 未整理去重。 使用 LVS 实现负载均衡原理及安装配置详解 posted on 2017-02-12 14:35 肖邦 linux 负载均衡集群是 load balance 集群的简写,翻…

CannotRetrieveUpdates alert in disconnected OCP 4 cluster解决

环境: Red Hat OpenShift Container Platform (RHOCP) 4 问题: Cluster Version Operator 不断发送警报,表示在受限网络/断开连接的 OCP 4 集群中无法接收更新。 在隔离的 OpenShift 4 集群中看到 CannotRetrieveUpdates 警报: …

详解从输入url到页面渲染

当你在浏览器中输入一个 URL 并按下回车键,浏览器会经历一系列步骤来加载并渲染页面。这些步骤包括 DNS 解析、缓存处理、建立连接、发送请求、接收响应、解析 HTML、构建 DOM 树和 CSSOM 树、执行 JavaScript、布局和绘制等。以下是这些步骤的详细解释,…

Linux(Centos 7.6)目录结构详解

Linux(Centos 7.6)是一个操作系统,其核心设计理念是将一切资源抽象为文件,即一切皆文件。比如系统中的硬件设备硬盘、网络接口等都被视为文件。Windows系统一般是分为C、D、E盘。而Linux(Centos 7.6)是以斜线"/"作为文件系统的开始目录&#x…

【蓝桥杯选拔赛真题85】python摆放箱子 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python摆放箱子 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python摆放箱子 第十五届蓝桥杯青少年组python比赛选拔赛真题详细解析 一…

数据分析思维(六):分析方法——相关分析方法

数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python,更重要的是数据分析思维。没有数据分析思维和业务知识,就算拿到一堆数据,也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》,本文内容就是提取…

小程序中引入echarts(保姆级教程)

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生…

【SQLi_Labs】Basic Challenges

什么是人生?人生就是永不休止的奋斗! Less-1 尝试添加’注入,发现报错 这里我们就可以直接发现报错的地方,直接将后面注释,然后使用 1’ order by 3%23 //得到列数为3 //这里用-1是为了查询一个不存在的id,好让第一…

基于JAVA+SpringBoot+Vue的校园二手书交易平台

基于JAVASpringBootVue的校园二手书交易平台 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 …

快速掌握Elasticsearch检索之二:滚动查询(scrool)获取全量数据(golang)

Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一:使用fromsize实现分页 1、滚动查询的使用场景 滚动查询区别于上一篇文章介绍的使用from、size分页检索,最大的特点是,它能够检索超过10000条外的…

【C++】深入理解 break 和 continue 语句

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯break 和 continue 介绍**break** 的作用**continue** 的作用注意事项 💯break 示例代码示例**执行结果****解析过程** 💯continue 示例代码示例&am…

高效使用AI完成编程项目任务的指南:从需求分析到功能实现

随着人工智能工具的普及,即便是零编程基础或基础薄弱的用户,也可以借助AI完成许多技术任务。然而,要高效地使用AI完成编程任务,关键在于如何清晰表达需求,并逐步引导AI实现目标。 在本文中,我们将通过开发…

算法每日双题精讲 —— 滑动窗口(水果成篮,找到字符串中所有字母异位词)

🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 别再犹豫了!快来订阅我们的算法每日双题精讲专栏,一起踏上算法学习的精彩之旅吧!💪…

基于Qt事件机制中的定时器事件的闹钟设计

目标 代码 pro文件 QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on …

后台管理系统DEMO

该项目后端使用SpringBootMyBatisPlusJWT,前端使用Vue3Vite2TSPiniaAxiosElementPlus等简单技术栈,实现了一个简约精致版的后台管理系统,包含非常基础的rbac权限功能,可以增删改查角色、用户、权限,角色添加权限、添加…

数据结构之线性表之链表(附加一个考研题)

链表的定义 链表的结构: 单链表-初始化 代码实现: 单链表-头插法 代码实现: 这里我给大家分析一下 我们每创建一个新的节点都要插在头节点的后面,我们一定要注意顺序 一定要先让新节点指向头节点指向的下一个节点,…