function [out]=metricoutliers(data,beta) % PURPOSE : computes a data-based metric adapted to the detection of outliers %--------------------------------------------------------------------------- % USAGE : [out]=metricoutliers(data,beta) % where : data = (n x p) data matrix % beta = strictly positive parameter (the default is beta=0.05) %----------------------------------------------------------------------------- % OUTPUTS : out = p x p matrix (metric) %----------------------------------------------------------------------------- %----------------------------------------------------------------------------- % Anne Ruiz-Gazen, Julien Moutel, June 2003 % Université de Toulouse I, Toulouse, France % cthomas@cict.fr if nargin<2 beta=0.05; end; x=data; [n,p]=size(x); xbar=sum(repmat(1/n*ones(n,1),1,p).*x)'; xc=x-ones(n,1)*xbar'; sig2=sum(repmat(1/n*ones(n,1),1,size(x,2)).*(x.^2))'-xbar.^2; sigma=(size(x,1)/(size(x,1)-1))*diag(sig2); sigmademi=sqrt(((size(x,1)-1)/size(x,1)))*diag(sig2.^(-1/2)); xc=xc*sigmademi; cov=(xc'*xc)/n; invcov=inv(cov); normxc=diag(diag(xc*invcov*xc')); weight=diag(diag(exp((-beta/2)*normxc))); stdweight=weight/(diag(weight)'*ones(n,1)); outlier_cov=(stdweight*xc)'*xc; out=inv(outlier_cov);