How to get proportion of variance from prcomp in R

How to get proportion of variance from prcomp in R you might ask? You can see the value if you do a summary of prcomp

pca <- prcomp(data, [, -1], scale = TRUE)

You’ll get something that look like this:

Standard deviation     6.3009
Proportion of Variance 0.1225
Cumulative Proportion  0.1225

However, to actually get the value you can calculated it from the standard deviation variables. If you do a ? help on prcomp you can see all the values that are available

prcomp returns a list with class "prcomp" containing the following components:

the standard deviations of the principal components (i.e., the square roots of the eigenvalues of the covariance/correlation matrix, though the calculation is actually done with the singular values of the data matrix).

the matrix of variable loadings (i.e., a matrix whose columns contain the eigenvectors). The function princomp returns this in the element loadings.

if retx is true the value of the rotated data (the centred (and scaled if requested) data multiplied by the rotation matrix) is returned. Hence, cov(x) is the diagonal matrix diag(sdev^2). For the formula method, napredict() is applied to handle the treatment of values omitted by the na.action.

center, scale

We have the sdev that is the standard deviations we can do the calculation:

pov <- pca$sdev^2/sum(pca$sdev^2)

We now have it in the variable pov, proportion of variance. You can plot it


prcomp source: