一维坐标中的离群点检测
一、箱线法
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 %输出离群点
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。