Learn R Programming

mvdalab (version 1.7)

pca.nipals: 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)

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

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

Author

Nelson Lee Afanador (nelson.afanador@mvdalab.com)

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.

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

Run this code
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

Run the code above in your browser using DataLab