Online Augmentation, Decomposition, and Procrustes (OADP) projection of
PC loadings onto some study data X
.
pca_OADP_proj(X, loadings, sval)
pca_OADP_proj2(XV, X_norm, sval)
Data to get PC loadings into.
PC loadings of the reference PCA to project.
Singular values of the reference PCA (sqrt of the eigen values).
Only the ncol(loadings)
first ones will be used.
X %*% loadings
Vector of sums of squared rows (e.g. rowSums(X^2)
).
pca_OADP_proj()
: A list with the simple projection X %*% loadings
and the projection based on OADP.
pca_OADP_proj2()
: The projection based on OADP only
(a matrix of same size of XV
).
X <- readRDS(system.file("testdata", "three-pops.rds", package = "bigutilsr"))
N <- 400; M <- ncol(X)
ind <- sample(nrow(X), N)
# Compute SVD using one part of samples
svd <- svds(X[ind, ], k = 5)
U <- sweep(svd$u, 2, svd$d, '*')
col <- 2:3
plot(U[, col])
points(cbind(0, 0), pch = 8, col = "green", cex = 2)
# Projecting other samples
proj <- pca_OADP_proj(X = X[-ind, ], loadings = svd$v, sval = svd$d)
points(proj$simple_proj[, col], col = "red", pch = 20) # shrunk towards 0
points(proj$OADP_proj[, col], col = "blue", pch = 20) # unshrunk