ECG-Kit 1.0
(5,299 bytes)
function regresdiagplot(xdist,ydist,cutoffx,cutoffy,k,multi,attrib,labsd,labresd)
%REGRESDIAGPLOT makes a regression outlier map.
% The score distances (SD)/mahalanobis distances (MD)/robust distances (RD) and
% residual distances (ResD) calculated in a PCR or PLS analysis, or in a
% univariate or multivariate regression are plotted on the x and y-axis, respectively.
% The cutoff values marked by a red line indicate which observations are
% outlying with respect to the majority of the data. The terminology used is
% as indicated in the tabular:
% small SD/MD/RD | large SD/MD/RD
% ----------------------------------------------------------
% small ResD/StdRes | regular point | good leverage point
% large ResD/StdRes | vertical outlier | bad leverage point
%
% For more details see:
% Hubert, M., Verboven, S. (2003),
% "A robust PCR method for high-dimensional regressors,"
% Journal of Chemometrics, 17, 438-452.
%
% Required input arguments:
%
% xdist : Score distances from a PCA analysis or
% Mahalanobis distances from LS or MLR analysis or
% Robust distances from LTS or MCDREG analysis,
% ydist : Residual distances of the PCR method or
% Standardized residuals of one of the regression methods,
% cutoffx : Cutoff value for the SD/MD/RD,
% cutoffy : Cutoff value for the residual-distance,
% k : Number of principal components used in the PCR/PLS method, or zero
% if not available.
% multi : 0 for univariate analysis, 1 for multivariate analysis
% attrib : String identifying the method used = 'LS', 'MLR', 'LTS', 'MCDREG', 'RPCR',
% 'CPCR', 'RSIMPLS', 'CSIMPLS'
%
% Optional inputs:
% labsd : number of displayed points with largest distance on x-axes (default = 3)
% labresd : number of displayed points with largest distance on y-axes (default = 3)
%
%
% I/O: regresdiagplot(out.sd,out.rd,out.cutoff.sd,out.cutoff.rd,k,multi,attrib,labsd,labresd)
%
% Example: regresdiagplot(out.sd,out.rd,out.cutoff.sd,out.cutoff.rd,out.k,1,'RPCR',5,5)
% regresdiagplot(out.md,out.stdres,out.cutoffmd,0,0,0,'LS',5,4)
%
% This function is part of LIBRA: the Matlab Library for Robust Analysis,
% available at:
% http://wis.kuleuven.be/stat/robust.html
%
% Written by Sabine Verboven
% Created 25 February 2002
% Revised : 12/02/2004
%
if nargin==8
labresd=3;
end
if nargin==7
labsd=3;
labresd=3;
end
if nargin<7
error('A required input variable is missing!')
end
if ischar(xdist) | ischar(ydist)
mess=sprintf(['Warning: A singularity was detected in the analysis. ',...
'\n No regression outlier map available.']);
disp(mess)
return
end
%all LTS-analysis in RPCR are intercept included!!!
if multi==1 %multivariate analysis
x=xdist; %distances on x-axis: SD, MD or RD
y=ydist; %residual distances
quanty=cutoffy;
quantx=cutoffx;
else %univariate analysis
quantx=cutoffx;
quanty=sqrt(chi2inv(0.975,1));
x=xdist; %distances on x-axis: SD, MD, RD
y=ydist; %standardized residuals!!!
end
plot(x,y,'o');
set(gcf,'Name', 'Regression outlier map', 'NumberTitle', 'off');
hold on
xmin=0;%max(0,min(x));%-0.5;
xmax=max([quantx max(x)])+0.5;
if multi==1
ymin=0;%max(0,min(y));%-1;
if size(y,2)==1
y=y';
end
ymax=max([y,quanty])+1;
xlim([xmin,xmax]);
ylim([ymin,ymax]);
ylimi=get(gca,'Ylim');
line([quantx,quantx],[ylimi(1),ylimi(2)],'Linestyle','-','Color','r');
xlimi=get(gca,'Xlim');
line([xlimi(1),xlimi(2)],[quanty,quanty],'Linestyle','-','Color','r');
if labsd
plotnumbers(x',y',labsd,labresd,2)%sort by x and y
end
ylabel('Residual distance')
else
ymin=min([-4 min(y)])-0.5;
ymax=max([4 max(y)])+0.5;
xlim([xmin,xmax]);
ylim([ymin,ymax]);
ylimi=get(gca,'Ylim');
ylimi=[min(ylimi(1),min([-4 min(y)]))-0.5,max(ylimi(2),max([4 max(y)]))+0.5];
line([quantx,quantx],[ylimi(1),ylimi(2)],'Linestyle','-','Color','r');
xlimi=get(gca,'Xlim');
xlimi=[min(xlimi(1),min(x))-1,max(xlimi(2),max([quantx max(x)]))+1];
line([xlimi(1),xlimi(2)],[quanty,quanty],'Linestyle','-','Color','r');
line([xlimi(1),xlimi(2)],[-quanty,-quanty],'Linestyle','-','Color','r');
if labsd
plotnumbers(x',y',labsd,labresd,3)%sort by x and abs(y)
end
ylabel('Standardized residual')
end
box on
switch attrib
case 'LS'
xlabel('Mahalanobis distance');
ylabel('Standardized LS residual');
case 'MLR'
xlabel('Mahalanobis distance');
case 'LTS'
xlabel('Robust distance computed by MCD');
ylabel('Standardized LTS residual');
case 'MCDREG'
xlabel('Robust distance computed by MCD');
case {'CPCR'}
xlabel(['Score distance (',num2str(k),' LV)']);
case {'RPCR'}
xlabel(['Score distance (',num2str(k),' LV)']);
case {'CSIMPLS'}
xlabel(['Score distance (',num2str(k),' LV)']);
case {'RSIMPLS'}
xlabel(['Score distance (',num2str(k),' LV)']);
end
title(attrib)
hold off