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? 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. Thanks in advance. K. St.
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. > > > Thanks in advance. > > K. St. > > ______________________________________________ > 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-- 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
On Fri, 8 Jul 2005, K. Steinmann wrote:> Dear R-helpers, > > Using the package Lattice, I performed a PCA.In my R installation, the function princomp() is contained in the stats package, not lattice (sic!).> 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?The standard deviations are in pc.cr$sdev (see also ?princomp), thus the variances are the squared values and the proportions can be computed as pc.cr$sdev^2/sum(pc.cr$sdev^2) and by taking the cumsum() the cumulative proportion can be computed. This is exactly what the the print method for "summary.princomp" objects does (see stats:::print.summary.princomp). Best, Z> 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. > > > Thanks in advance. > > K. St. > > ______________________________________________ > 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 >