pca.nipals {mvdalab} | R Documentation |
PCA with the NIPALS algorithm
Description
Implements the Nonlinear Iterative Partial Least Squares (NIPALS) algorithm for computing PCA scores and loadings and intermediate steps to convergence.
Usage
pca.nipals(data, ncomps = 1, Iters = 500, start.vec = NULL, tol = 1e-08)
Arguments
data |
A dataframe |
ncomps |
the number of components to include in the analysis. |
Iters |
Number of iterations |
start.vec |
option for choosing your own starting vector |
tol |
tolernace for convergence |
Details
The NIPALS algorithm is a popular algorithm in multivariate data analysi for computing PCA scores and loadings. This function is specifically designed to help explore the subspace prior to convergence. Currently only mean-centering is employed.
Value
Loadings |
Loadings obtained via NIPALS |
Scores |
Scores obtained via NIPALS |
Loading.Space |
A list containing the intermediate step to convergence for the loadings |
Score.Space |
A list containing the intermediate step to convergence for the scores |
Author(s)
Nelson Lee Afanador (nelson.afanador@mvdalab.com)
References
There are many good references for the NIPALS algorithm:
Risvik, Henning. "Principal component analysis (PCA) & NIPALS algorithm." (2007).
Wold, Svante, Kim Esbensen, and Paul Geladi. "Principal component analysis." Chemometrics and intelligent laboratory systems 2.1-3 (1987): 37:52.
Examples
my.nipals <- pca.nipals(iris[, 1:4], ncomps = 4, tol = 1e-08)
names(my.nipals)
#Check results
my.nipals$Loadings
svd(scale(iris[, 1:4], scale = FALSE))$v
nipals.scores <- data.frame(my.nipals$Scores)
names(nipals.scores) <- paste("np", 1:4)
svd.scores <- data.frame(svd(scale(iris[, 1:4], scale = FALSE))$u)
names(svd.scores) <- paste("svd", 1:4)
Scores. <- cbind(nipals.scores, svd.scores)
plot(Scores.)
my.nipals$Loading.Space
my.nipals$Score.Space