Description
Multiple Canonical Correlation Analysis (Kernel and Functional).
Description
Implements methods for multiple canonical correlation analysis (CCA) for more than two data blocks, with a focus on multivariate repeated measures and functional data. The package provides two approaches: (i) multiple kernel CCA, which embeds each data block into a reproducing kernel Hilbert space to capture nonlinear dependencies, and (ii) multiple functional CCA, which represents repeated measurements as smooth functions and performs analysis in a Hilbert space framework. Both approaches are formulated via covariance operators and solved as generalized eigenvalue problems with regularization to ensure numerical stability. The methods allow estimation of canonical variables, generalized canonical correlations, and low-dimensional representations for exploratory analysis and visualization of dependence structures across multiple feature sets. The implementation follows the framework developed in Górecki, Krzyśko, Gnettner and Kokoszka (2025) <doi:10.48550/arXiv.2510.04457>.
README.md
multiCCA
multiCCA implements multiple canonical correlation analysis (MCCA) for multi-block data. The package provides tools for
- kernel MCCA for repeated-measures data,
- functional MCCA for functional observations,
- automatic tuning of regularization parameters,
- diagnostic tools based on the Hopkins statistic,
- visualization of canonical components.
The implementation is designed for multi-view data integration, where multiple sets of features are observed for the same objects.
Installation
You can install the development version from GitHub:
# install.packages("pak")
pak::pak("Halmaris/multiCCA")
Example
Generate a simple multi-block dataset:
library(multiCCA)
set.seed(1)
n <- 20
T_len <- 10
X <- list(
lapply(seq_len(n), function(i) matrix(rnorm(T_len * 3), T_len, 3)),
lapply(seq_len(n), function(i) matrix(rnorm(T_len * 2), T_len, 2))
)
Fit kernel MCCA:
fit <- mcca_fit(
method = "kernel",
X = X,
ncomp = 2
)
fit
Predict canonical component scores:
scores <- predict(fit, X)
head(scores[[1]])
Visualization
Plot canonical components for one block:
plot_mcca_scatter(fit)
Compare canonical components between blocks:
plot_mcca_pair(fit)
Model diagnostics
Evaluate clusterability of canonical representations using the Hopkins statistic:
H <- hopkins_vs_components(fit, max_comp = 2)
plot_hopkins_curve(H)
Author
Tomasz Górecki
Adam Mickiewicz University, Poznań.