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

Reply via email to