[R] Spectral Decomposition

(Ted Harding) ted.harding at nessie.mcc.ac.uk
Fri Jun 29 15:23:05 CEST 2007


On 29-Jun-07 12:29:31, Doran, Harold wrote:
> All of my resources for numerical analysis show that the spectral
> decomposition is
> 
> A = CBC'
> 
> Where C are the eigenvectors and B is a diagonal matrix of eigen
> values. Now, using the eigen function in R
> 
># Original matrix
> aa <- matrix(c(1,-1,-1,1), ncol=2)
> 
> ss <- eigen(aa)
> 
># This results yields back the original matrix according to the
> formula above
> ss$vectors %*% diag(ss$values) %*% t(ss$vectors)
> 
> However, for the following I do not get back the original matrix
> using the general formula for the spectral decomposition:
> 
> set.seed(123)
> 
> aa <- matrix(rnorm(16), ncol=4)
> 
> ss <- eigen(aa)
> 
> ss$vectors %*% diag(ss$values) %*% t(ss$vectors)
> 
> However, if I do the following
> 
> A = CBC^{-1}
> 
> I get back the original matrix A
> 
> ss$vectors %*% diag(ss$values) %*% solve(ss$vectors)

Harold, I think the key to the issue is whether your original
matric is symmetric or not. For your formula

  A = C*B*C'

to work, where B is a diagonal matrix (therefore essentially
symmetric) you have -- bearing in mind the reversal of factors --

  A' = ReverseFactorsIn(C'*B'*C) = C*B*C' = A

so A would have to be symmetric. This was the case for your
first example matrix(c(1,-1,-1,1), ncol=2).

However, your second example will not be symmetric, so the
formula will not work, and you will need A = C*B*C^(-1).

If A is not symmetric, you have "left" eigenvectors:

  x'*A = lambda*x'

and "right" eigenvectors:

  A*x = lambda*x

and the "left" eigenvectors are not the same as the "right"
eigenvectors, though you have the same set of eigenvalues lambda
in each case.

You then have

  A = L'*B*R

Of course the most frequent occurrence of this kind of question
in statistics is where A is a covariance or correlation matrix,
which is symmetric by definition.

Hoping this helps!
Ted.

> In my lit search I am not finding an explanation for why this works, so
> I am seeking R-help since there may be a computational rationale that
> can be explained by users (or authors) of the function. In my
> experimentation with some computations it seems that the latter
> approach is more general in that it yields back the matrix I began
> with, but deviates from the formula I commonly see in texts.
> 
> Thanks,
> Harold

--------------------------------------------------------------------
E-Mail: (Ted Harding) <ted.harding at nessie.mcc.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 29-Jun-07                                       Time: 14:23:03
------------------------------ XFMail ------------------------------



More information about the R-help mailing list