乐趣区

关于程序员:异常点检测的方法

一维坐标中的离群点检测

一、箱线法

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)<xx1
        ycz1(s1,1)=bl1(i,1);
        ycz1(s1,2)=i;
        s1=s1+1;
    end
end
ycz1  % 输入离群点

 

二、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)<xx||bl1(i,1)>sx
        ycz(s,1)=bl1(i,1);
        ycz(s,2)=i;
        s=s+1;
    end
end
ycz  % 输入离群点

 

 

 


退出移动版