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

news2025/1/3 8:32:11

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

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

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

相关文章

RK3568 bsp 9 - USB调试记录

文章目录 1、环境介绍2、RK3568 USB资源介绍3、配置目标4、dts配置4.1、USB3.0 OTG4.2、USB2.0 Host 2 和 USB2.0 Host 3 5、kernel配置5.1、USB PHY CONFIG5.2、USB Host CONFIG5.3、USB OTG CONFIG5.4、USB外设CONFIG5.4.1、Mass Storage Class CONFIG5.4.2、USB HID CONFIG …

挖空的解决思路

用RagFlow解析完文档后怎么对某些实体的某些参数进行遮挡,给他设置预设好的可选项,并最终整合成文档模版,给我详细讲解怎么实现 解析–实体抽取(Open NRE、UIE)–遮挡–插入可选项–保存模版1–微调训练得模版2

【AI日记】24.12.30 kaggle 比赛 2-18

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加:kaggle 比赛 Regression with an Insurance Dataset时间:8 小时 读书 1 书名:教育的本质时间:0.5 小时评估:快速读完,收获不…

javaweb 04 springmvc

0.1 在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。 其实呢,是我们在浏览器发起请求,请求了我们…

【C++】九九乘法表编程题详解与多角度对比分析

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目概述题目描述 💯老师的实现方法代码解析优点不足 💯我的实现方法代码解析优点不足 💯实现方法对比💯优化与扩展代码优化…

保险公司开辟新模式:智能ai搭建咨询帮助中心

随着保险行业的快速发展,消费者对保险服务的期望也在不断提高。从传统的电话咨询到在线客服,服务模式的不断升级旨在提供更加便捷、高效的客户服务。然而,面对日益复杂的保险产品和多样化的客户需求,传统的人工客服体系逐渐显露出…

雷电模拟器安装LSPosed

雷电模拟器最新版支持LSPosed。记录一下安装过程 首先到官网下载并安装最新版,我安装的时候最新版是9.1.34.0,64位 然后开启root和系统文件读写 然后下载magisk-delta-6并安装 ,这个是吾爱破解论坛提供的,号称适配安卓7以上所有机型&#x…

使用uWSGI将Flask应用部署到生产环境

使用uWSGI将Flask应用部署到生产环境: 1、安装uWSGI conda install -c conda-forge uwsgi(pip install uwsgi会报错) 2、配置uWSGI 在python程序的同一文件夹下创建 uwsgi.ini文件,文件内容如下表。 需要按照实际情况修改文件名称…

计算机网络 (15)宽带接入技术

前言 计算机网络宽带接入技术是指通过高速、大容量的通信信道或网络,实现用户与互联网或其他通信网络之间的高速连接。 一、宽带接入技术的定义与特点 定义:宽带接入技术是指能够传输大量数据的通信信道或网络,其传输速度通常较高&#xff0c…

资源规划管理系统(源码+文档+部署+讲解)

引言 在当今快速发展的商业环境中,企业资源规划(ERP)系统已成为企业运营的核心。本文将深入探讨一套全新的ERP系统源代码,该系统基于先进的技术栈构建,旨在提升企业运营效率,优化资源配置,实现…

精准识别花生豆:基于EfficientNetB0的深度学习检测与分类项目

精准检测花生豆:基于EfficientNet的深度学习分类项目 在现代农业生产中,作物的质量检测和分类是确保产品质量的重要环节。针对花生豆的检测与分类需求,我们开发了一套基于深度学习的解决方案,利用EfficientNetB0模型实现高效、准…

使用套接字创建一个服务端,创建一个客户端然后相互通讯

以下是对上述代码的详细解释&#xff1a; #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h>#include <stdio.h> #include <stdlib.h> #include <string.h&…

ES 磁盘使用率检查及处理方法

文章目录 1. 检查原因2. 检查方法3. 处理方法3.1 清理数据3.2 再次检查磁盘使用率 1. 检查原因 磁盘使用率在 85%以下&#xff0c;ES 可正常运行&#xff0c;达到 85%及以上会影响 PEIM 数据存储。 在 ES 磁盘分配分片控制策略中&#xff0c;为了保护数据节点的安全&#xff0…

[cg] android studio 无法调试cpp问题

折腾了好久&#xff0c;native cpp库无法调试问题&#xff0c;原因 下面的Deploy 需要选Apk from app bundle!! 另外就是指定Debug type为Dual&#xff0c;并在Symbol Directories 指定native cpp的so路径 UE项目调试&#xff1a; 使用Android Studio调试虚幻引擎Android项目…

Flutter中添加全局防护水印的实现

随着版权意识的加强&#xff0c;越来越多的应用开始在应用内部增加各种各样的水印信息&#xff0c;防止核心信息泄露&#xff0c;便于朔源。 效果如下&#xff1a; 在Flutter中增加全局水印的方式&#xff0c;目前有两种实现。 方案一&#xff0c;在native层添加一个遮罩层&a…

MQTT——客户端安装使用(图文详解)

目录 一. 下载安装MQTT 1. 下载MQTT 2. 安装MQTT 二. MQTT客户端使用 1. 连接MQTT服务 2. MQTT发布消息 3. MQTT 消息订阅 4. 断开MQTT服务器连接 三. 使用Jmeter给MQTT发数据 一. 下载安装MQTT 1. 下载MQTT &#xff08;1&#xff09;官网下载地址&#xff1a;MQTTX…

2- 位段式结构体

文章目录 1 结构体内存对齐2 位段式结构体2.1 格式2.2 成员类型2.3 空间开辟2.4 示例2.4.1 示例12.4.2 示例2 1 结构体内存对齐 首成员对齐规则 结构体的第一个成员从偏移量为0的地址处开始存放&#xff0c;即与结构体的首地址对齐。 其他成员对齐规则 其他成员变量的存放地址…

Milvus×EasyAi:如何用java从零搭建人脸识别应用

如何从零搭建一个人脸识别应用&#xff1f;不妨试试原生Java人工智能算法&#xff1a;EasyAi Milvus 的组合拳。 本文将使用到的软件和工具包括&#xff1a; EasyAi&#xff1a;人脸特征向量提取Milvus&#xff1a;向量数据库用于高效存储和检索数据。 01. EasyAi&#xff1a;…

AWS K8s 部署架构

Amazon Web Services&#xff08;AWS&#xff09;提供了一种简化的Kubernetes&#xff08;K8s&#xff09;部署架构&#xff0c;使得在云环境中管理和扩展容器化应用变得更加容易。这个架构的核心是AWS EKS&#xff08;Elastic Kubernetes Service&#xff09;&#xff0c;它是…

[Pro Git#2] 分支管理 | branch fix_bug , feature | 处理合并冲突

目录 一、Issue模板文件 二、Pull Requests模板文件 分支管理 1. 理解分支 2. 创建与管理分支 1. 切换分支与提交历史 2. 合并分支 3. 删除分支 4. 解决合并冲突 6. 查看分支合并情况 快速创建并切换分支 分支管理策略 分支合并模式 分支管理原则 日常开发环境 …