欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

怎么用matlab剔除数据的异常值(3σ准则)

发布时间:2023/12/31 61 豆豆
生活随笔 收集整理的这篇文章主要介绍了 怎么用matlab剔除数据的异常值(3σ准则) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

参考:https://blog.csdn.net/weixin_30633405/article/details/95177009

3σ准则又称为拉依达准则,它是先假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,

认为凡超过这个区间的误差,就不属于随机误差而是粗大误差,含有该误差的数据应予以剔除。且3σ适用于有较多组数据的时候。

这种判别处理原理及方法仅局限于对正态或近似正态分布的样本数据处理,它是以测量次数充分大为前提的,

当测量次数较少的情形用准则剔除粗大误差是不够可靠的。因此,在测量次数较少的情况下,最好不要选用准则,而用其他准则。

在正态分布中σ代表标准差,μ代表均值。x=μ即为图像的对称轴

3σ原则为

数值分布在(μ-σ,μ+σ)中的概率为0.6826

数值分布在(μ-2σ,μ+2σ)中的概率为0.9544

数值分布在(μ-3σ,μ+3σ)中的概率为0.9974

可以认为,Y 的取值几乎全部集中在(μ-3σ,μ+3σ)区间内,超出这个范围的可能性仅占不到0.3%.

 

我的数据是244*119,即有244组样品,第一列是位置信息,随后的各个列为变量信息,即每一列为一个变量,剔除每一列中的异常值。

下面的代码实现的功能是找出剔除的异常值的位置信息,

for ii = 3:119P=data_jd(:,ii);ave = mean(P);%mean 求解平均值u = std(P);%求解标准差for i = 1:244if(abs(P(i)-ave)>3*u)P(i) = 0;P_ans = P(P==0);len=length(P_ans);if len == []continueelselocation=find(P==0)if len == 1loc(1,ii)=locationelsefor iii=1:lenloc(iii,ii)=location(iii)endendendelsecontinue;endendendans=loc(loc~=0); ans=unique(ans);#删除重复的值%% 根据索引去除异常值 data_jd(ans,:)=[]

 

 

总结

以上是生活随笔为你收集整理的怎么用matlab剔除数据的异常值(3σ准则)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。