matlab 基于拉依达检验法(3σ准则) 实现多类别多参数的批量异常样本检验 V2.0

简介

拉依达检验法(3σ准则)是一种统计学方法,用于检测数据中的异常值。这种方法基于正态分布的特性来确定数据点是否可能是异常值。以下是关于拉依达检验法(3σ准则)的详细介绍:

  1. 基本原理

    • 拉依达检验法(3σ准则)假设一组检测数据只含有随机误差,通过对数据进行计算处理得到标准偏差σ(sigma)。
    • 在正态分布中,数据点通常集中在均值μ(mu)附近,而标准偏差σ表示数据的离散程度。
    • 根据正态分布的性质,大部分数据点(约68.26%)会分布在μ±σ之间,约有95.44%的数据点分布在μ±2σ之间,而几乎所有的数据点(约99.7%)都会分布在μ±3σ之间。
  2. 应用方法

    • 首先,计算数据的均值μ和标准偏差σ。
    • 然后,确定一个区间,即μ±3σ。
    • 任何超出这个区间的数据点被认为是异常值,可能由于粗大误差或过失误差引起,这些异常值应予以剔除或进行进一步检查。
  3. 适用范围与局限性

    • 拉依达检验法(3σ准则)主要适用于正态或近似正态分布的数据集。
    • 该方法以测量次数充分大为前提,当测量次数较少时,使用此方法剔除粗大误差可能不够可靠。
    • 因此,在数据量较小的情况下,应谨慎使用此方法,并可能需要选择其他更适用的方法。

这一个版本的代码,针对之前代码[1]的不足和问题,对程序进行了进一步的优化。

[1]:matlab 基于拉依达检验法(3σ准则) 实现多类别多参数的批量检验异常值与异常样本_拉依达准则matlab-CSDN博客

代码简介和说明

输入数据:

数据每行代表一个样本,每列代表一个参数   

输入数据的第一列为类别表示,即同一类别用相同的数字标识:

主程序:

%拉伊达检验法;不同样本在不同行,不同参数不同列
%输入 data:数据表格,其中第1列为标识
%输出:Errorshow 异常样本所在的行数,以及异常的参数内容(列)
%输入:resData 剔出异常样本后的表格
clear all%%参数设置区域data=xlsread("test.xlsx");%输入表格%按数字标识的方法
nameNum=[1,2,3,4,5,6];%输入每个处理数字标识,自己可以设定(","衔接)
[~,classNum]=size(nameNum);
maxCheck_num=100;%最大循环检验次数%%
[maxrow,~]=size(data);
data=[(1:maxrow)',data];%增加序号标识for i=1:classNum%遍历不同的处理indexlist=find(data(:,2)==nameNum(1,i));testdata=data(indexlist,:);[IFPa,ErrorRowindex{i},res]=patuaC(testdata,maxCheck_num,nameNum(i));if i==1resdata=res;elseresdata=[resdata;res];end
end
%将异常样本整合在一个表中展示
Errorshow=zeros(1,length(data(1,:)));
for i=1:classNum%类别for p=3:length(data(1,:))%参数for j=1:length(ErrorRowindex{i}{p-2}())%行号Errordet=zeros(1,length(data(1,:)));if ErrorRowindex{i}{p-2}(j)~=0if ismember(ErrorRowindex{i}{p-2}(j),Errorshow(:,1))Errorshow(  find(Errorshow(:,1)==ErrorRowindex{i}{p-2}(j)) ,p-1)=1;elseErrordet(1,1)=[ErrorRowindex{i}{p-2}(j)];Errordet(1,p-1)=1;Errorshow=[Errorshow;Errordet];endendendend
end
Errorshow=sortrows(Errorshow,1);%排序

自定义函数patuaC

(将其放入和主程序同一文件夹内后运行主程序)

function  [IFPa,ErrorRowindex,resdata]=patuaC(inputdata,maxCheck_num,classindex)
%输入:
% inputdata:检验的数据
%maxCheck_num:最大迭代次数
%classindex:样本代号
%输出:
%IFPa:逻辑值,是否有异常样本
%ErrorRowindex:异常样本的位置信息
%resdata:剔除异常值剩余的数据%   此处显示详细说明resdata=inputdata;
for i=1:maxCheck_num[yn,xn]=size(resdata);Slist=std(resdata);%计算方差和均值Ave=mean(resdata);IFPacir=false;for coln=3:xnErrorRow{coln-2}=[0];for rown=1:ynif abs(resdata(rown,coln)-Ave(coln))>3*Slist(coln)IFPacir=true;ErrorRow{coln-2}=[ErrorRow{coln-2};resdata(rown,1)];endendendif IFPacir%如果有问题数据%删除有问题的行for coln=1:xn-2if i~=1ErrorRowindex{coln}=[ErrorRowindex{coln};ErrorRow{coln}];elseErrorRowindex{coln}=ErrorRow{coln};end[cirN,~]=size(ErrorRow{coln});for dn=1:cirNif ismember(ErrorRow{coln}(cirN),resdata(:,1))resdata(find(resdata(:,1)==ErrorRow{coln}(cirN)),:)=[];endendendelsebreakend
end
abnormal_samples = length(inputdata(:,1)) - length(resdata(:,1));
if abnormal_samples~=0IFPa=true;
end
percentN=(length(inputdata(:,1)) - length(resdata(:,1)))/length(inputdata)*100;
message = sprintf('在类别"[%d]"中找到 %d 个异常样本,占比%.2f%%', classindex,abnormal_samples,percentN);
disp(message);

执行效果:

控制窗输出异常样本信息:

异常样本的整合信息Errorshow:

第一行是异常样本原来所在的行号,对应的列为1代表该列的参数不满足检验假设;

数据分享:

我将脚本使用的检验数据分享给各位,方便复现和了解:

链接:https://pan.baidu.com/s/1_OGMMluQgusFV66v-4xOQQ?pwd=cvws 
提取码:cvws 

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

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

相关文章

Electron项目中将CommonJS改成使用ES 模块(ESM)语法preload.js加载报错

问题 将Electron项目原CommonJS语法改成使用ES 模块(ESM)语法,preload.js一直加载不到,报错如下: VM111 renderer_init:2 Unable to load preload script: D:\Vue\wnpm\electron\preload.js VM111 renderer_init:2 E…

3D相机及应用

无论是2D相机和3D相机,在工业应用中都有着不可或缺的作用。3D相机与2D相机的最大区别在于,3D相机可以获取真实世界尺度下的3D信息,而2D相机只能获取像素尺度下的2D平面图像信息。通过3D相机得到的数据,我们可以还原出被测量物体的…

FX110书籍推荐:如何快速成为一名专业股票投资人?

股票投资领域有一本神作《股票交易入门》,它是股票从业人员的入门必备书籍。 关于股票入门的书籍很多,但这本书涉及的知识面最全、实用性最强。从这本书里,我们可以领略到股票交易世界的跌宕起伏而又波澜壮阔的魅力。本书作者 本书的作者是美…

Android studio 打开Device Mirroring方便调试

巧合下发现一个很好用的工具,在平时调试真机的时候在每次run app后都要低头找找手机看看效果。但是,用了AS上的Device Mirroring,你会发现根本不需要再低头点手机,调试方便一万倍啊。 话不多说,上图。直接就可以在电脑…

第二篇【传奇开心果系列】Python深度学习库技术点案例示例:深度解读深度学习在语音助手方面的应用

传奇开心果博文系列 系列博文目录Python深度学习库技术点案例示例系列 博文目录前言一、深度学习在语音助手方面的应用介绍二、语音识别示例代码三、语义理解示例代码四、对话生成示例代码五、个性化服务示例代码六、多模态交互示例代码七、情感识别示例代码八、知识点归纳 系列…

车间移动环保空调降温通风设备

移动环保空调的特点主要体现在以下几个方面: 环保节能:移动环保空调通常采用水冷技术,无需使用化学制冷剂,符合环保要求。同时,其高效节能的设计能有效降低能耗,节约能源。快速降温:移动环保空…

图搜索算法 - 拓扑排序

相关文章: 数据结构–图的概念 图搜索算法 - 深度优先搜索法(DFS) 图搜索算法 - 广度优先搜索法(BFS) 拓扑排序 概念 几乎所有的工程都可分为若干个称作活动的子工程,而这些子工程之间,通常受…

UART、TIMER

UART简介(通用异步收发器,通常称串口) UART,是一种串行、异步、全双工的通信协议,在嵌入式领域应用的非常广泛。 UART作为异步串行通信协议的一种,工作原理是将传输数据的每个二进制位一位接一位地传输。…

JavaScript:正则表达式属于字符串吗-不属于/字符串转正则表达式的两种方法

一、需求描述 js 字符串转正则表达式 二、理解正则表达式属于字符串吗? 正则表达式不属于字符串,它是一种用于匹配、查找和操作文本的模式。正则表达式是一种特殊的语法,用于描述字符串的特征。通过使用正则表达式,可以检查一个字符串是否…

刷题之最爱的城市(卡码网,图论)

最爱的城市 #include<vector> #include<climits> #include<iostream> using namespace std; int path 0; void dfs(vector<vector<int>>& city, vector<bool>& visited, int city2, int startindex, int* result) {if (startinde…

[数据概念|方案实操][最新]数据资产入表4月速递

“ 在各地数据资产变现“热辣滚烫”” 国家数据局全国数据工作会议前后&#xff0c;数据资源“入表”的尝试在各地持续热火朝天地展开&#xff0c;多地实现数据资产入表和利用数据资产进行融资实现“零的突破”。 我们今天就把4月前后的案例做一个小结&#xff0c;之前的案例大…

基于大数据+Hadoop的豆瓣电子图书推荐系统实现

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列文章目录 基于大数…

Pascal Content数据集

如果您想使用Pascal Context数据集&#xff0c;请安装Detail&#xff0c;然后运行以下命令将注释转换为正确的格式。 1.安装Detail 进入项目终端 #即 这是在我自己的项目下直接进行克隆操作&#xff1a; git clone https://github.com/zhanghang1989/detail-api.git $PASCAL…

美联储官员卡什卡利:判断通胀是否停滞为时尚早,利率可能维持较长时间

美联储明尼阿波利斯联邦储备银行行长尼尔卡什卡利近日表示&#xff0c;美联储需要更多数据才能判断通胀是否已经停滞不前&#xff0c;现在就断言通胀进展已经停滞还为时过早。卡什卡利的言论表明&#xff0c;美联储在通胀方面保持谨慎态度&#xff0c;同时强调利率政策可能维持…

连通“数据”,让制造变“聪明”

说起数据智能&#xff0c;你第一时间想到的是什么呢&#xff1f;是科技感十足的智慧城市&#xff1f;还是炫酷的人工智能景象&#xff1f; 数据作为企业的战略资产越来越受到重视&#xff0c;从最初的数据协助业务协同&#xff0c;转化为数据驱动业务&#xff0c;数据驱动运营…

命名空间、C++的输入输出、缺省参数(默认参数)、函数重载

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

【数据库原理及应用】期末复习汇总高校期末真题试卷06

试卷 一、选择题 1&#xff0e; ________是长期存储在计算机内的有组织,可共享的数据集合. A.数据库管理系统 B.数据库系统 C.数据库 D.文件组织 1&#xff0e; 有12个实体类型&#xff0c;并且它们之间存在15个不同的二元联系&#xff0c;其中4个是1:1联系类型&#xff0c;5…

如何恢复回收站中被删除的文件?3个恢复策略,实测有用!

“刚刚一不小心把回收站清空了&#xff0c;大家有什么好用的方法可以帮我恢复回收站中删除的文件吗&#xff1f;快帮帮我吧&#xff01;” 在使用电脑的过程中&#xff0c;我们有时可能会不小心将重要的文件或文件夹删除到回收站&#xff0c;并且随后可能进一步从回收站中彻底删…

羊大师分析,为什么羊奶是孩子的理想饮品?

羊大师分析&#xff0c;为什么羊奶是孩子的理想饮品&#xff1f; 羊奶&#xff0c;作为一种传统的营养饮品&#xff0c;近年来逐渐受到家长们的青睐&#xff0c;成为孩子们的理想饮品。那么&#xff0c;羊大师将为大家讲解&#xff0c;为什么羊奶能够赢得如此多的赞誉&#xf…

Redis 源码安装(CentOS 单机)

序言 本文给大家介绍如何在 CentOS 上&#xff0c;通过 Redis 源码单机部署 Redis 服务。 一、部署流程 通过官网下载源码 # 下载源码 wget https://download.redis.io/redis-stable.tar.gz# 解压源码包 tar -xzvf redis-stable.tar.gz在 linux 中执行以下命令&#xff0c;安…