single.bdsvd | R Documentation |
Performs a single iteration of BD-SVD: splits the data matrix into one (i.e., no split)
or two submatrices, depending on the structure of the first sparse loading v
(which is a sparse
approximation of the first right singular vector, i.e., a vector with many zero values) that mirrors the
shape of the covariance matrix.
single.bdsvd(X, dof, standardize = TRUE, max.iter)
X |
Data matrix of dimension |
dof |
Number of non-zero components in the sparse loading (degrees of freedom). If
|
standardize |
Standardize the data to have unit variance. Default is |
max.iter |
How many iterations should be performed for computing the sparse loading.
Default is |
The sparse loadings are computed using the method by Shen & Huang (2008), implemented in
the irlba
package.
A list containing the feature names of the submatrices of X
. It is either of length one (no
split) or length two (split into two submatrices).
Bauer, J.O. (2024). High-dimensional block diagonal covariance structure detection using singular vectors, J. Comput. Graph. Stat.
Shen, H. and Huang, J.Z. (2008). Sparse principal component analysis via regularized low rank matrix approximation, J. Multivar. Anal. 99, 1015–1034.
bdsvd
, bdsvd.ht
#Replicate the illustrative example from Bauer (2024).
## Not run:
p <- 300 #Number of variables. In Bauer (2024), p = 3000.
n <- 500 #Number of observations
b <- 3 #Number of blocks
design <- "c"
#Simulate data matrix X
set.seed(1)
Sigma <- bdsvd.cov.sim(p = p, b = b, design = design)
X <- mvtnorm::rmvnorm(n, mean = rep(0, p), sigma = Sigma)
colnames(X) <- 1:p
ht <- bdsvd.ht(X)
plot(0:(p-1), ht$BIC[,1], xlab = "|S|", ylab = "HBIC", main = "", type = "l")
single.bdsvd(X, dof = ht$dof, standardize = FALSE)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.