异常点检测的方法

一维坐标中的离群点检测

一、箱线法

data0=xlsread('F:\数据一.xls');
[m,n]=size(data0);
w1=round(m/4);  %第一四分位位置,
%m1=m/2%中位数位置,
w3=round(3*m/4);%第三四分位位置

%变量1的异常值处理

bl1=data0(:,1);   %在这里定义检索的范围
[a1,b1]=sort(bl1)%[a,b]=sort(x);是从小到大排列,a是排序后结果,b是a结果中各元素的原始位置。
q11=a1(w1,1);    %第一四分位数
q13=a1(w3,1);    %第三四分位数
qr1=q13-q11;       %四分位距
sx1=q13+1.5*qr1;   %上限
xx1=q11-1.5*qr1;   %下限
ycz1=[];%异常值矩阵
s1=1;
%异常值被定义为小于Q1-1.5IQR或大于Q3+1.5IQR的值。虽然这种标准有点任意性,但它来源于经验判断,经验表明它在处理需要特别注意的数据方面表现不错。 
for i=1:m
    if bl1(i,1)>sx1||bl1(i,1)

 

二、3西格玛方法(拉伊达准则)

data0=xlsread('F:\数据一.xls');
%变量1的异常值处理
bl1=data0(:,1);  %在这里定义检索的范围
[m,n]=size(bl1);
ave=mean(bl1)%均值
sigma=sqrt((bl1'-ave)*(bl1-ave)/m)
jicha=max(bl1)-min(bl1);%极差
%要求数据服从正态分布,认为大于μ+3σ或小于μ—3σ的实验数据值作为异常值,其中μ为数据均值,σ为数据标准差 
sx=ave+3*sigma
xx=ave-3*sigma
ycz=[];
zcz=[];
s=1;
s1=1;
for i=1:m
    if bl1(i,1)sx
        ycz(s,1)=bl1(i,1);
        ycz(s,2)=i;
        s=s+1;
    end
end
ycz  %输出离群点

 

 

 


你可能感兴趣的:(程序员)