From: <HIDDEN>
Newsgroups: comp.soft-sys.matlab
Subject: Re: singular covariance matrix and svd
Date: Tue, 17 Feb 2009 16:25:04 +0000 (UTC)
Organization: The MathWorks, Inc.
Lines: 10
Message-ID: <gneod0$ou6$>
References: <gne3ot$cs9$>
Reply-To: <HIDDEN>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: 1234887904 25542 (17 Feb 2009 16:25:04 GMT)
NNTP-Posting-Date: Tue, 17 Feb 2009 16:25:04 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 1187260
Xref: comp.soft-sys.matlab:518885

"francesco santi" <> wrote in message <gne3ot$cs9$>...
> ......
> The general solution is to analyzie the covariance matrix before passing it to other formulas and modify the values that make it singular.
> ......

  Francesco, it would be more appropriate in my opinion to determine the eigenvalues of S rather than using singular value decomposition.  For covariance matrices the eigenvalues must all be real and non-negative.  They become singular when any of these eigenvalues is zero.  If you artificially alter the singular values from 'svd', you could end up with a matrix that is no longer a valid covariance matrix - that is, no longer positive semi-definite - but if all eigenvalues are kept positive this can't happen.

  However, the idea of artificially altering a covariance matrix simply to make some numerical procedure work seems contrived to me.  Perhaps you should take Rune's advice and consider a change in algorithm for handling singular covariance situations.  As you undoubtedly are aware, such an occurrence indicates some linear relationship strictly holds among the variables you are working with.  At least one of them can be exactly predicted from others.  You really ought to be able to handle such relationships in the way you process your data other than resorting to artifices such as changing covariance matrices.  Otherwise you may draw unwarranted conclusions from your analysis.

Roger Stafford