princomp with not non-negative definite correlation matrix
On Thu, 10 Apr 2003 tvr at stanford.edu wrote:
$ R --version R 1.6.1 (2002-11-01). So I would like to perform principal components analysis on a 16X16 correlation matrix, [princomp(cov.mat=x) where x is correlation matrix], the problem is princomp complains that it is not non-negative definite. I called eigen() on the correlation matrix and found that one of the eigenvectors is close to zero & negative (-0.001832311). Is there any way to work around this problem. A constraint: I only have the correlation matrix, not the data that produced it. I believe I could replicate most of the functionality of princomp step-by-step (loadings, scores, etc.) and track the effect of the negative eigenvector on the rest of the analysis, but I'd rather not do that with every covariance/correlation matrix that might have a few eigenvectors that are negative but close to zero.
No correlation/covariance matrix ever has negative eigenvectors, so princomp is correctly telling you that you have a problem. I have no idea what your matrix is, but it is not a correlation matrix. Possibly it has been written out and rounded? In that case try setting the negative eigenvalues to zero. But I would want to be sure that there was not some more serious error in the correlation matrix.
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595