A function to perform adaptive, elastic-net, sparse principal component analysis (AES-PCA).

aespca(X, d = 1, max.iter = 10, eps.conv = 0.001, adaptive = TRUE, para = NULL)

Arguments

X

A pathway design matrix: the data matrix should be \(n \times p\), where \(n\) is the sample size and \(p\) is the number of variables included in the pathway.

d

The number of principal components (PCs) to extract from the pathway. Defaults to 1.

max.iter

The maximum number of times an internal while() loop can make calls to the lars.lsa() function. Defaults to 10.

eps.conv

A numerical convergence threshold for the same while() loop. Defaults to 0.001.

adaptive

Internal argument of the lars.lsa() function. Defaults to TRUE.

para

Internal argument of the lars.lsa() function. Defaults to NULL.

Value

A list of four elements containing the loadings and projected predictors:

  • aesLoad : A \(d \times p\) projection matrix of the \(d\) AES-PCs.

  • oldLoad : A \(d \times p\) projection matrix of the \(d\) PCs from the singular value decomposition (SVD).

  • aesScore : An \(n \times d\) predictor matrix: the original \(n\) observations loaded onto the \(d\) AES-PCs.

  • oldScore : An \(n \times d\) predictor matrix: the original \(n\) observations loaded onto the \(d\) SVD-PCs.

Details

This function calculates the loadings and reduced-dimension predictor matrix using both the Singular Value Decomposition and AES-PCA Decomposition (as described in Efron et al (2003)) of the data matrix.

See https://web.stanford.edu/~hastie/Papers/LARS/LeastAngle_2002.pdf.

For potential enhancement details, see the comment in the "Details" section of normalize.

See also

Examples

# DO NOT CALL THIS FUNCTION DIRECTLY. # Call this function through AESPCA_pVals() instead. if (FALSE) { data("colonSurv_df") aespca(as.matrix(colonSurv_df[, 5:50])) }