[R] extract prop. of. var in pca

Chuck Cleland ccleland at optonline.net
Fri Jul 8 21:03:29 CEST 2005

```K. Steinmann wrote:
> Dear R-helpers,
>
> Using the package Lattice, I performed a PCA.
>
> For example
> pca.summary <- summary(pc.cr <- princomp(USArrests, cor = TRUE))
>
> The Output of "pca.summary" looks as follows:
>
> Importance of components:
>                           Comp.1    Comp.2    Comp.3     Comp.4
> Standard deviation     1.5748783 0.9948694 0.5971291 0.41644938
> Proportion of Variance 0.6200604 0.2474413 0.0891408 0.04335752
> Cumulative Proportion  0.6200604 0.8675017 0.9566425 1.00000000
>
>
> How can I extract the proportion of variance?

Instead of trying to get it from the summary, how about using this:

eigen(cor(USArrests))\$values / ncol(USArrests)

and/or

cumsum(eigen(cor(USArrests))\$values / ncol(USArrests))

But note in the details section of ?princomp the following:

The calculation is done using 'eigen' on the correlation or
covariance matrix, as determined by 'cor'.  This is done for
compatibility with the S-PLUS result.  A preferred method of
calculation is to use 'svd' on 'x', as is done in 'prcomp'.

Thus you could also do:

svd(cor(USArrests))\$d / ncol(USArrests)

> Since names(pca.summary) or str(pca.summary) do not contain the proportion of
> variance,
> it seems I can not use something similar like pca.summary[[2]]\$Comp.1[3].
> I can't see how the values are stored.
>
>
>
> K. St.
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help

--
Chuck Cleland, Ph.D.
NDRI, Inc.
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 452-1424 (M, W, F)
fax: (917) 438-0894

```