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.hqwc.cn/news/688272.html

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

相关文章

uni-app安卓本地打包个推图标配置

如果什么都不配置,默认的就是个推小鲸鱼图标 默认效果 配置成功效果 个推图标配置 新建目录 drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi、drawable-xxhdpi、drawable-xxxhdpi 目录中存放图标 每个目录中存放对应大小的图标,大图…

谁使用DITA?

▲ 搜索“大龙谈智能内容”关注公众号▲ Keith根据LinkedIn上的数据进行的统计,主要反应的西方世界使用DITA的公司。因为LinkedIn在国内不能访问,笔者认为针对中国的数据并不准确。 作者 | John Walker - NXP销售和市场营销业务分析师 2013年4月18日 …

5.9网络协议

由网卡发送数据通过网线进行发送,当网卡接收到信号以后将数据传给内核数据区,然后由操作系统交给相应的进程。 将数据进行发送的时候需要借助于网线实现,这个时候会出现当传输的数据比较远的时候就借助于中继器将信号进行再生扩大&#xff0…

代码质量检查jacoco环境搭建

这里主要介绍集成和系统测试覆盖率环境搭建,并简单介绍各个工具。 关于单元测试的覆盖率监控(只需要修改ant或maven配置即可),下一篇说明 环境准备 需要环境 jdk1.8centos 7posgresql 9.6 工具下载 jacoco 0.8.2 https://www.eclemma.org/jacoco/ a…

一个“彩光”的自白:入室10万间的变革路

从0到10W 锐捷以太彩光的每一步 2021年 以太全光奠基 锐捷网络创新性提出了以太全光路线的代表性方案——极简以太全光解决方案1.0,在采用光纤作为传播介质的基础上,将交换机直接下沉至房间内。这一举措不仅简化了布线,新增业务只需在房间内灵活扩展,即可完成终端入网,而且通…

【C++】 类的6个默认成员函数

目录 1. 类的6个默认成员函数 一.构造函数 1.基本概念 2 特性 注意:C11 中针对内置类型成员不初始化的缺陷,又打了补丁, 3.构造函数详解 3.1构造函数体赋值 3.2 初始化列表 3.3 explicit关键字 二.析构函数 1 概念 2 特性 两个栈实…

NPDP|传统行业产品经理如何跨越鸿沟,从用户角度审视产品

随着科技的飞速发展和互联网的普及,产品经理的角色已经从单纯的产品规划者逐渐转变为全方位的用户体验设计者。对于传统行业的产品经理来说,这是一个挑战与机遇并存的时代。他们不仅要面对激烈的市场竞争,还要学会如何跨越与新兴科技行业之间…

C++ 搜索二叉树

目录 1.二叉搜索树概念 2. 实现二叉搜索树 2.1. 二叉搜索树的插入 2.2查找 2.3删除节点 3.二叉树的应用(KV结构) 1.二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为…

C# 排序的多种实现方式

排序是我们编程时的常用操作,实现方式也有很多种,本篇文章列举几种我常用的用法,希望对大家有用! 01 数组排序 最常见的排序是对一个数组排序,比如: int[] aArray new int[8] { 18, 17, 21, 23, 11, 31…

当时这样说就好了的笔记

系列文章目录 当时这样说就好了的笔记 文章目录 系列文章目录一、 不用好口才,怎么谈都讨喜的“说话金律”1、 掌握对方爱聊什么是交谈热络的第一步2、 装笨让对方当主角,和谁都能聊不停3、 “讲道理”谁都怕,坚持己见最伤感情4、 懂“聆听附…

C#学习笔记12:Winform网页操作-CefSharp内嵌浏览器

今日学习使用Winform操作网页,先从从窗体内嵌一个浏览器开始吧: 文章提供测试代码讲解、测试效果图、整体测试工程下载 目录 CefSharp介绍与安装: 创建解决方案安装CefSharp: 控件放置: 整体代码贴出: 更改…

(ICLR,2024)GRAFT:通过地面远程对齐无需文本注释训练遥感图像的视觉语言模型

文章目录 相关资料摘要引言方法图像级VLMs像素级VLMs收集地面-卫星图像对用基础模型增强GRAFT VLMs 实验图像级理解像素级理解 相关资料 论文:Remote Sensing Vision-Language Foundation Models without Annotations via Ground Remote Alignment 项目地址&#x…