ECG-Kit 1.0

File: <base>/common/LIBRA/screeplot.m (1,434 bytes)
function screeplot(vec,attrib,lev)

%SCREEPLOT draws the eigenvalues of the covariance matrix of the data in decreasing order.
% It can be used to decide how many latent variables to retain in a PCA analysis
% by looking at the kink in the curve. 
% 
% Reference: J.A. Jackson (1991), "A User's Guide to Principal Components",
%  Wiley Series in Probability and Mathematical Statistics, New-York.
%
% I/O: screeplot(vec,attrib,lev)
%
% Required input arguments:
%       vec : eigenvalues 
%    attrib : class identifier
% 
% Optional input argument: 
%    lev : 0 (default) or 1 to include a plot of the logarithm of the eigenvalues 
%
% Created 28 July 2000 by Sabine Verboven
% Last Update: 20/06/2003

if nargin < 3 
   lev=0;
end
if nargin < 2
    error('no class identifier is given.')
end
%%%%%%%MAIN%%%%%%%
set(gcf,'Name', 'Scree plot','NumberTitle', 'off');
cla
hold on
ymin=max([0,min(vec)]);
ymax=max(vec);
ymarg=0.06*(ymax-ymin);
ymin=ymin-ymarg;
ymax=ymax+ymarg;
plot(vec,'o-'); 
xlabel('Index')
ylabel('Eigenvalue')
if length(vec)==1
    xlim([0,2]); 
    ymarg=0.5;
    ymin=ymin-ymarg;
    ymax=ymin+(2*ymarg);
else 
    xlim([1,length(vec)]);
end
ylim([ymin,ymax]);
if lev==1
    set(gcf,'Name', 'LEV plot','NumberTitle', 'off');
    hold on
    plot(log(vec),'b.-'); 
    xlabel('Number of LV')
    ylabel('Log(eigenvalue)')
end

box on
title(attrib)
hold off