[R] prcomp eigenvalues

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Aug 3 09:01:48 CEST 2005


The eigenvalues are the squares of the singular values (although you need 
to watch the scalings used, in particular n vs n-1).  (This is standard 
theory.)

Since both are non-negative, given one you can get the other.

On Tue, 2 Aug 2005, Sundar Dorai-Raj wrote:

>
>
> Rebecca Young wrote:
>> Hello,
>>
>> Can you get eigenvalues in addition to eigevectors using prcomp?  If so how?
>> I am unable to use princomp due to small sample sizes.
>> Thank you in advance for your help!
>> Rebecca Young
>>
>
>
> Hi, Rebecca,
>
> From ?prcomp:
>
>      The calculation is done by a singular value decomposition of the
>      (centered and possibly scaled) data matrix, not by using 'eigen'
>      on the covariance matrix.  This is generally the preferred method
>      for numerical accuracy. ...
>
> So you can get the singular values, but not the eigenvalues. You could
> use ?princomp if you really want the eigenvalues. In either case, you
> read the code to see how this is done.
>
> x <- matrix(rnorm(1000), 100, 10)
>
> # eigenvalues
> v <- cov.wt(x)
> ev <- eigen(v$cov * (1 - 1/v$n.obs), symmetric = TRUE)$values
> ev[ev < 0] <- 0
> princomp(x)$sdev
> sqrt(ev)
>
> # singular values
> sv <- svd(scale(x, center = TRUE, scale = FALSE), nu = 0)
> prcomp(x)$sdev
> sv$d/sqrt(max(1, nrow(x) - 1))
>
> HTH,
>
> --sundar
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

-- 
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




More information about the R-help mailing list