Learn R Programming

Rdimtools (version 1.0.0)

do.pca: Principal Component Analysis

Description

do.pca performs a classical principal component analysis (PCA) using RcppArmadillo package for faster and efficient computation.

Usage

do.pca(
  X,
  ndim = "auto",
  cor = FALSE,
  preprocess = c("center", "scale", "cscale", "decorrelate", "whiten"),
  varratio = 0.9
)

Arguments

X

an \((n\times p)\) matrix or data frame whose rows are observations and columns represent independent variables.

ndim

an integer-valued target dimension or" "auto" option using varratio.

cor

mode of eigendecomposition. FALSE for decomposing covariance matrix, and TRUE for correlation matrix.

preprocess

an option for preprocessing the data. This supports three methods, where default is "center". See also aux.preprocess for more details.

varratio

a value in (0,1]. This value is only used when ndim is chosen as "auto".

Value

a named list containing

Y

an \((n\times ndim)\) matrix whose rows are embedded observations.

vars

a vector containing variances of projected data onto principal components.

projection

a \((p\times ndim)\) whose columns are principal components.

trfinfo

a list containing information for out-of-sample prediction.

Details

A combination of ndim="auto" and varratio options is to automatically decide the target dimension based on cumulative sum of variance. Measured by summation of top eigenvalues from sample covariance, we use the minimal summation to be larger than varratio.

References

pearson_liii_1901Rdimtools

Examples

Run this code
# NOT RUN {
## use iris data
data(iris)
X     = as.matrix(iris[,1:4])
label = as.integer(iris$Species)

## try different preprocessing procedure
out1 <- do.pca(X, ndim=2, preprocess="center")
out2 <- do.pca(X, ndim=2, preprocess="decorrelate")
out3 <- do.pca(X, ndim=2, preprocess="whiten")

## visualize
opar <- par(no.readonly=TRUE)
par(mfrow=c(1,3))
plot(out1$Y, col=label, main="PCA::'center'")
plot(out2$Y, col=label, main="PCA::'decorrelate'")
plot(out3$Y, col=label, main="PCA::'whiten'")
par(opar)

# }

Run the code above in your browser using DataLab