SparsePCA {sharp} | R Documentation |
Sparse Principal Component Analysis
Description
Runs a sparse Principal Component Analysis model using implementation from
spca
(if algo="sPCA"
) or
spca
(if algo="rSVD"
). This function is not
using stability.
Usage
SparsePCA(
xdata,
Lambda,
ncomp = 1,
scale = TRUE,
keepX_previous = NULL,
algorithm = "sPCA",
...
)
Arguments
xdata |
data matrix with observations as rows and variables as columns. |
Lambda |
matrix of parameters controlling the number of selected
variables at current component, as defined by |
ncomp |
number of components. |
scale |
logical indicating if the data should be scaled (i.e. transformed so that all variables have a standard deviation of one). |
keepX_previous |
number of selected predictors in previous components.
Only used if |
algorithm |
character string indicating the name of the algorithm to use for
sparse PCA. Possible values are: "sPCA" (for the algorithm proposed by Zou,
Hastie and Tibshirani and implemented in |
... |
additional arguments to be passed to
|
Value
A list with:
selected |
matrix of binary selection status. Rows correspond to different model parameters. Columns correspond to predictors. |
beta_full |
array of model coefficients. Rows correspond to different model parameters. Columns correspond to predictors (starting with "X") or outcomes (starting with "Y") variables for different components (denoted by "PC"). |
References
Zou H, Hastie T, Tibshirani R (2006). “Sparse Principal Component Analysis.” Journal of Computational and Graphical Statistics, 15(2), 265-286. doi:10.1198/106186006X113430.
Shen H, Huang JZ (2008). “Sparse principal component analysis via regularized low rank matrix approximation.” Journal of Multivariate Analysis, 99(6), 1015-1034. ISSN 0047-259X, doi:10.1016/j.jmva.2007.06.007.
See Also
VariableSelection
, BiSelection
Other penalised dimensionality reduction functions:
GroupPLS()
,
SparseGroupPLS()
,
SparsePLS()
Examples
# Data simulation
set.seed(1)
simul <- SimulateRegression(n = 100, pk = 50, family = "gaussian")
x <- simul$xdata
# Sparse PCA (by Zou, Hastie, Tibshirani)
if (requireNamespace("elasticnet", quietly = TRUE)) {
mypca <- SparsePCA(
xdata = x, ncomp = 2,
Lambda = c(1, 2), keepX_previous = 10, algorithm = "sPCA"
)
}
# Sparse PCA (by Shen and Huang)
if (requireNamespace("mixOmics", quietly = TRUE)) {
mypca <- SparsePCA(
xdata = x, ncomp = 2,
Lambda = c(1, 2), keepX_previous = 10, algorithm = "rSVD"
)
}