nipals (version 0.3)

nipals: Principal component analysis by NIPALS, non-linear iterative partial least squares

Description

Used for finding principal components of a numeric matrix. Missing values in the matrix are allowed. Principal Components are extracted one a time. The algorithm computes x = TP', where T is the 'scores' matrix and P is the 'loadings' matrix.

Usage

nipals(x, ncomp = min(nrow(x), ncol(x)), center = TRUE, scale = TRUE,
  maxiter = 500, tol = 1e-06, startcol = 0, fitted = FALSE,
  force.na = FALSE, gramschmidt = TRUE, verbose = FALSE)

Arguments

x

Numerical matrix for which to find principal compontents. Missing values are allowed.

ncomp

Maximum number of principal components to extract from x.

center

If TRUE, subtract the mean from each column of x.

scale

if TRUE, divide the standard deviation from each column of x.

maxiter

Maximum number of NIPALS iterations for each principal component.

tol

Default 1e-9 tolerance for testing convergence of the NIPALS iterations for each principal component.

startcol

If 0, start the iterations for each principal component with the column of x that has maximum variation. Otherwise, start with the spcified column number.

fitted

Default FALSE. If TRUE, return the fitted (reconstructed) value of x.

force.na

Default FALSE. If TRUE, force the function to use the method for missing values, even if there are no missing values in x.

gramschmidt

Default TRUE. If TRUE, perform Gram-Schmidt orthogonalization at each iteration.

verbose

Default FALSE. Use TRUE or 1 to show some diagnostics.

Value

A list with components eig, scores, loadings, ncomp, R2, xhat.

References

Wold, H. (1966) Estimation of principal components and related models by iterative least squares. In Multivariate Analysis (Ed., P.R. Krishnaiah), Academic Press, NY, 391-420.

Examples

Run this code
# NOT RUN {
B <- matrix(c(50, 67, 90, 98, 120,
              55, 71, 93, 102, 129,
              65, 76, 95, 105, 134,
              50, 80, 102, 130, 138,
              60, 82, 97, 135, 151,
              65, 89, 106, 137, 153,
              75, 95, 117, 133, 155), ncol=5, byrow=TRUE)
rownames(B) <- c("G1","G2","G3","G4","G5","G6","G7")
colnames(B) <- c("E1","E2","E3","E4","E5")
dim(B) # 7 x 5
p1 <- nipals(B)
dim(p1$scores) # 7 x 5
dim(p1$loadings) # 5 x 5

B2 = B
B2[1,1] = B2[2,2] = NA
p2 = nipals(B2)

# }

Run the code above in your browser using DataCamp Workspace