matlab数据缺失值和异常值处理,matlab异常点的检测与处理方法
一内容介绍从回归模型诊断的角度对统计数据中的异常值进行探测与分析,并基于矩阵实验室语言,结合具体实例,给出回归诊断在统计数据异常值探测中的应用。
2部分代码函数异常值_demo(N,f)
%演示2D正态分布数据的"检测多变量"
异常值百分比。
%
%选项:
% - N:随机样本数N=1E3是默认值。
% - f:介于(0和0.5)之间的实数,表示的分数
异常值百分比f=0.05是默认设置。
如果nargin 1 是空(N),N=1E3目标
如果nargin 2 是空(f),f=0.05目标
%生成带有异常值的随机正态分布数据集
% -
%随机协方差矩阵
t=rand(1)* pi;
u=[cos(t)-sin(t);sin(t)cos(t)];
Co=U*diag(rand(1,2))* U ;
随机样本百分比
N=round(max(N,10));
X=mvnrnd([0 0],repmat(Co,[1 1n]);
用均匀分布的异常值替换圆形(f*N)样本的百分比
r=1.5 *范数(max(X));
f=min(0.5,f);
m=round(f * N);
chi_crt=chi2inv(0.99,2);
CNT=0;k=0;
x _ out=cell(1);
而cnt M
%随机样本
x=randn(N,2);
x=bsxfun(@rdivide,x,sqrt(sum(x.^2,2)));
x=bsxfun(@times,r*sqrt(rand(N,1)),x);
%检查外观
MD=总和(x’.*(Co \ x );%马氏距离(平方)
chk=MD chi _ crt
如果sum(chk)==0,继续;目标
k=k1
CNT=CNT sum(chk);
X_out{k}=x(chk,);
目标
X _ out=cell 2 mat(X _ out);
X_out=X_out(1:M,);
X(1:M,)=X _ out
%请注意,离群值被放在数据矩阵的开头,因此
%他们很容易保持跟踪,但是,我们不提供这一事先
%的知识给"检测多种环境"函数,所以它不知道
%哪些样本是异常值。
%现在尝试使用"检测多重异常值"函数来查找异常值
% -
[mu,S,RD,chi _ CRT]=DetectMultVarOutliers(X);
%请注意,该函数会自动绘制稳健的马氏距离(研发)
% vs样本索引。在该图中,"基础子集"表示X中的样本
%用于获得协方差和均值的稳健估计。
%在此模拟中,异常值是路大于临界值的样本
chi^2分布的百分比值。然而,可能存在这种情况
%并非如此。由于这个原因,基于路的外显测试
%应始终目视确认。参见文档
% 检测多重异常值了解更多信息。
%为了提高检测的准确性,您可以提供
X (n_out)中的异常值百分比为[.]=DetectMultVarOutliers(X,n_out)
%绘制模拟数据和估计参数
% -
hf1=gcf
hf2=数字(颜色,‘w’);
暂停(0.1)
警告(“off”,“MATLAB:handle graphics:obsoleted property:Java frame”);
j_hf=get(hf2, Java frame );
j _ HF。设置最大化(true);
警告(“on”、“MATLAB:handle graphics:obsoleted property:Java frame”);
屏幕刷新
暂停(0.1)
轴相等
继续
X _ min=min(X);
X _ max=max(X);
d=x _ max-x _ min;
XLim=[x _ min(1)-0.04 * d(1)x _ max(1)0.04 * d(1)];
YLim=[x _ min(2)-0.04 * d(2)x _ max(2)0.04 * d(2)];
set(gca, box , on , XLim ,XLim, YLim ,YLim)
% N-M个设计为内联程序的样本
h1=scatter(X((M 1):end,1),X((M 1):end,2), b , MarkerFaceColor , b , SizeData ,30);
% M个模拟异常值
h2=scatter(X_out(:1),X_out(:2), r , MarkerFaceColor , r , SizeData ,30);
对于=0.01/2,RD大于chi^2临界值的样品百分比
id _ out=RD chi _ CRT(4);
h3=scatter(X(id_out,1),X(id_out,2), w , MarkerFaceColor , none , MarkerEdgeColor , k , SizeData ,100);
h=图例([h1 h2 h3],{ 正态分布样本 模拟异常值 潜在异常值 });
set(h, FontSize ,20, Location , EastOutside )
暂停(0.5)
图(hf1)
3运行结果
四参考文献[1]潘丽静。基于矩阵实验室语言的统计数据异常值检验[J]的缩写.赤峰学院学报:自然科学版, 2012(21):2.
[2]哈迪公司,1992年。识别多元数据中的多个异常值。皇家统计学会杂志B系列(方法学),第54卷(3),第761-771页。
[3]魏斯费尔德,1937年。在这一点上,距离最少的点。东北数学杂志,第43卷,第355-386页。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。