拉依达准则--(3σ准则)Matlab实现

达依拉准则介绍:

拉依达准则是指先假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,认为凡超过这个区间的误差,就不属于随机误差而是粗大误差,含有该误差的数据应予以剔除。这种判别处理原理及方法仅局限于对正态或近似正态分布的样本数据处理,它是以测量次数充分大为前提的,当测量次数少的情形用准则剔除粗大误差是不够可靠的。因此,在测量次数较少的情况下,最好不要选用该准则。

使用原理

设对被测量进行等精度测量,独立得到x1,x2…,xn,算出其算术平均值x及剩余误差vi=xi-x(i=1,2,…,n),并按贝塞尔公式算出标准偏差σ,若某个测量值xi的剩余误差vb(1<=i<=n),满足下式
|vi|=|xi-x|>3σ
则认为xb是含有粗大误差值的坏值,应予剔除。
在整理试验数据时,往往会遇到这样的情况,即在一组试验数据里,发现少数几个偏差特别大的可疑数据,这类数据称为Outlier或Exceptional Data,他们往往是由于过失误差引起。

  • Matlab代码实现:
a=xlsread('附件一:已结束项目任务数据.xls',1,'B2:B836');

%%
[h,p]=lillietest(a)    %判断是否正态。h=0
%返回值h为假设,只有01两种情况,h=0假设符合正态分布,h=1假设不符合正态分布
%返回值p为方差概率,也可以说事情的发生概率,p<0.05(显著性水平通常取0.05,还有0.0250.01三种情况)为不可能事件,拒绝;p>0.05,接受
%%

plot(a);
aa=mean(a);
sig=std(a);
m=zeros(1,length(a));
i=1;
for t=1:length(a)
m(t)=abs(a(t)-aa);
  if m(t)>=3*sig
  n(t)=aa;
  num(i)=a(t);%显示异常数据
  i=i+1;
else
  n(t)=a(t);
  end
end
b=0:1:length(n)-1;
subplot(2,1,2);
plot(b,n);
title('拉以达法则剔除坏值')
xlabel('采样时间');
ylabel('采样点数')

你可能感兴趣的:(拉依达准则)