The msma package implements sparse and supervised
matrix decomposition for single-block and multiblock multivariable data.
The main function is msma(). The analysis is selected by
the supplied inputs:
X only: principal component analysis (PCA);X and Y: partial least squares (PLS);Z: optional external supervision variable;X and Y may be matrices or lists of
matrices. All blocks must contain the same observations in the same row
order.
A matrix supplied as X produces a single-block PCA.
fit_pca <- msma(X, comp = 2)
fit_pca
#> Call:
#> .msma_default_legacy(X = X, Y = Y, Z = Z_legacy, comp = comp,
#> lambdaX = lambdaX, lambdaY = lambdaY, lambdaXsup = lambdaXsup,
#> lambdaYsup = lambdaYsup, eta = eta, type = type, inX = inX,
#> inY = inY, inXsup = inXsup, inYsup = inYsup, muX = muX, muY = muY,
#> defmethod = defmethod, scaling = scaling, verbose = verbose,
#> intseed = intseed, ceps = ceps)
#>
#> Numbers of non-zeros for X block:
#> comp1 comp2
#> block1 5 5
#>
#> Numbers of non-zeros for X super:
#> comp1 comp2
#> comp1-1 1 1
summary(fit_pca)
#> Call:
#> .msma_default_legacy(X = X, Y = Y, Z = Z_legacy, comp = comp,
#> lambdaX = lambdaX, lambdaY = lambdaY, lambdaXsup = lambdaXsup,
#> lambdaYsup = lambdaYsup, eta = eta, type = type, inX = inX,
#> inY = inY, inXsup = inXsup, inYsup = inYsup, muX = muX, muY = muY,
#> defmethod = defmethod, scaling = scaling, verbose = verbose,
#> intseed = intseed, ceps = ceps)
#>
#> Error : 0.152The main X-side results are:
wbX: block-level weights or loadings;sbX: block-level scores;cpevX: cumulative percentage of explained
variance;avX: adjusted variance attributable to each
component.fit_pca$wbX
#> $block1
#> comp1 comp2
#> X.1.1 0.4431214 -0.49397744
#> X.1.2 0.4466817 0.13093264
#> X.1.3 0.4578523 -0.31289594
#> X.1.4 0.4345786 0.79523072
#> X.1.5 0.4534661 -0.09245088
head(fit_pca$sbX[[1]])
#> [,1] [,2]
#> [1,] 1.1142257 0.3270756
#> [2,] 0.1564608 -0.1964648
#> [3,] 1.9944396 -0.3583063
#> [4,] 4.5765914 0.4580689
#> [5,] -1.3438766 -0.2214561
#> [6,] -1.1964969 0.2130069
fit_pca$cpevX
#> comp1 comp2
#> block1 0.8145138 0.8741541plot(fit_pca, axes = 1, plottype = "bar", las = 2)
plot(fit_pca, v = "score", axes = 1:2, plottype = "scatter")A positive lambdaX introduces sparsity into the X-side
block weights.
Z supplies external supervision. The strength of
supervision on X is controlled by muX.
Supplying both X and Y produces PLS.
fit_pls <- msma(X = X, Y = Y, comp = 2)
fit_pls
#> Call:
#> .msma_default_legacy(X = X, Y = Y, Z = Z_legacy, comp = comp,
#> lambdaX = lambdaX, lambdaY = lambdaY, lambdaXsup = lambdaXsup,
#> lambdaYsup = lambdaYsup, eta = eta, type = type, inX = inX,
#> inY = inY, inXsup = inXsup, inYsup = inYsup, muX = muX, muY = muY,
#> defmethod = defmethod, scaling = scaling, verbose = verbose,
#> intseed = intseed, ceps = ceps)
#>
#> Numbers of non-zeros for X block:
#> comp1 comp2
#> block1 5 5
#>
#> Numbers of non-zeros for X super:
#> comp1 comp2
#> comp1-1 1 1
#>
#> Numbers of non-zeros for Y block:
#> comp1 comp2
#> block1 4 4
#>
#> Numbers of non-zeros for Y super:
#> comp1 comp2
#> comp1-1 1 1Sparse and supervised PLS are requested by adding
lambdaX, lambdaY, and optionally
Z, muX, and muY.
sessionInfo()
#> R Under development (unstable) (2026-08-25 r90447 ucrt)
#> Platform: x86_64-w64-mingw32/x64
#> Running under: Windows 11 x64 (build 26200)
#>
#> Matrix products: default
#> LAPACK version 3.12.1
#>
#> locale:
#> [1] LC_COLLATE=C LC_CTYPE=Japanese_Japan.utf8
#> [3] LC_MONETARY=Japanese_Japan.utf8 LC_NUMERIC=C
#> [5] LC_TIME=Japanese_Japan.utf8
#>
#> time zone: Asia/Tokyo
#> tzcode source: internal
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] msma_3.2
#>
#> loaded via a namespace (and not attached):
#> [1] digest_0.6.39 R6_2.6.1 fastmap_1.2.0 xfun_0.60
#> [5] cachem_1.1.0 knitr_1.51 htmltools_0.5.9 rmarkdown_2.31
#> [9] lifecycle_1.0.5 cli_3.6.6 sass_0.4.10 jquerylib_0.1.4
#> [13] compiler_4.7.0 tools_4.7.0 evaluate_1.0.5 bslib_0.12.0
#> [17] yaml_2.3.12 otel_0.2.0 rlang_1.3.0 jsonlite_2.0.0