I've figured out what the issue is here. Basically, there is ambiguity in what is meant by the covariance matrix.
The getCovariance method in the SingularValueDecomposition class returns a covariance matrix that could be used to describe the covariance between the best-fit parameters obtained by using the SVD to do a least-squares fit. See, for example, the discussion in the section "Confidence Limits from Singular Value Decomposition" in Numerical Recipes (end of section 14.5 in the edition I have). The code correctly (as far as I can tell) correctly implements this. I was looking for the covariance matrix as used, for example, in Principle Component Analysis, which is formed from X'X. The SVD is a useful way to calculate this using the formula (derived in my earlier email) as: V*S^2*V' The documentation describes exactly what is actually calculated and if one pays attention to the that there is no ambiguity. On the other hand I might not be the only person that sees a method called "getCovariance" and expects that it will give X'X. Bruce On Oct 7, 2014, at 9:59 PM, Bruce A Johnson <johns...@umbc.edu> wrote: > As I understand it (which could easily be wrong), calculation of the > covariance (X'X) via SVD follows the following logic: > > X = USV' (via SVD, the X' indicates transpose) > > X'X = (USV')' USV' > > this reduces to > > X'X = VSU'USV' > = V S S V' > > In the SingularValueDecomposition class the covariance is calculated as: > > V × J × VT where J is the diagonal matrix of the inverse of the squares of > the singular values > > I don't understand why the calculation uses the inverse of the singular > values. > > Is that correct? > > Bruce > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org