dcorICA: Independent Component Analysis via Distance Correlation

View source: R/dcorICA.R

dcorICAR Documentation

Independent Component Analysis via Distance Correlation

Description

Estimate an unmixing matrix by sequentially minimizing a distance-correlation criterion on whitened data. The method can be run either with the ordinary distance correlation criterion or with a robustified criterion based on the bowl transformation.

Usage

dcorICA(
  X,
  mu = NULL,
  scatter = NULL,
  transform = c("none", "bowl"),
  alpha = 0.9975,
  sweeps = ncol(X) + 1,
  seed = NULL,
  block_size = NULL,
  optimizer = c("cobyla", "bobyqa"),
  control = list()
)

Arguments

X

A numeric data matrix or an object coercible to a matrix. Rows are observations and columns are variables.

mu

Optional location vector used for whitening and centering. If NULL, the column means of X are used.

scatter

Optional positive definite scatter matrix used for whitening. If NULL, the sample covariance matrix is used.

transform

Character string specifying the dependence criterion. Possible values are "none" for ordinary distance correlation and "bowl" for the bowl-transformed robust criterion.

alpha

Probability level passed to bowl_transform() when transform = "bowl".

sweeps

Number of sweeps through the sequential optimization scheme.

seed

Optional integer random seed for the random sweep permutations.

block_size

Either NULL or one positive integer. If NULL, the standard full distance-correlation computation is used in the objective. If positive, the blockwise computation is used with that block size.

optimizer

Character string specifying the optimizer to use. Either "cobyla" for nloptr::cobyla() or "bobyqa" for minqa::bobyqa(). Defaults to "cobyla".

control

A named list of control parameters passed to nloptr::cobyla() or minqa::bobyqa().

Details

The returned object has class "bss" so that common extractor methods from package JADE, such as JADE::bss.components() and stats::coef() can be used directly.

The algorithm first whitens the observations using the supplied location and scatter estimates. It then searches for an orthogonal rotation that minimizes the distance correlation between one component and the remaining components, proceeding sequentially until all components have been extracted.

The dependence criterion is evaluated using dcor_large(). If block_size = NULL, the standard full pairwise-distance computation is used. If block_size is a positive integer, the same criterion is computed blockwise in order to reduce memory usage. The block size does not need to divide the sample size; if it does not, the final block is simply smaller.

When the sample mean and sample covariance matrix are used for whitening and the ordinary, non-transformed distance-correlation criterion is minimized, the resulting procedure is closely related in spirit to the distance covariance ICA method of Matteson and Tsay (2017). That paper develops ICA based on distance covariance and distance correlation under classical whitening. When robust location and scatter estimates such as MCD are used for whitening and the bowl-transformed distance-correlation criterion is minimized, the procedure corresponds to the robust approach referred to as PICARD (Leyder et al. 2026).

Value

An object of class "bss", implemented as a list with components:

W

Estimated unmixing matrix in the convention S = (X - \mu) W^T.

S

Estimated independent components.

mu

Location vector used for centering.

transform

Selected dependence criterion.

alpha

Bowl-transform tuning parameter.

block_size

Block size used in the distance-correlation criterion, or NULL if the standard full computation was used.

convergence

Optimization diagnostics from the sequential optimization steps.

References

Matteson, D. S. and Tsay, R. S. (2017). Independent component analysis via distance covariance. Journal of the American Statistical Association, 112(518), 623–637. doi:10.1080/01621459.2016.1150851

Leyder, S., Raymaekers, J., Rousseeuw, P. J., Van Deuren, T., and Verdonck, T. (2026). Independent component analysis by robust distance correlation. Advances in Data Analysis and Classification, 20, 727–765. doi:10.1007/s11634-026-00674-9

See Also

bowl_transform(), dcor_large(), JADE::bss.components(), stats::coef()

Examples


n <- 400
S <- cbind(runif(n), rnorm(n), rchisq(n, df = 3))

A <- matrix(rnorm(ncol(S)^2), ncol = ncol(S))
X <- tcrossprod(S, A)

fit_default <- dcorICA(X, seed = 1)
fit_block <- dcorICA(X, seed = 1, block_size = 128L)
fit_bobyqa <- dcorICA(X, seed = 1, optimizer = "bobyqa")

fit_default$W
fit_block$W
fit_bobyqa$W
head(fit_default$S)

if (requireNamespace("JADE", quietly = TRUE)) {
  coef(fit_default)
  plot(fit_default)
}

# PICARD: Robust whitening + bowl criterion
if (requireNamespace("robustbase", quietly = TRUE)) {
  mcd <- robustbase::covMcd(X)
  fit_picard <- dcorICA(
    X,
    mu = mcd$center,
    scatter = mcd$cov,
    transform = "bowl",
    seed = 1
  )
  if (requireNamespace("JADE", quietly = TRUE)) {
    JADE::MD(fit_picard$W, A)
  }
}



dcorBSS documentation built on Nov. 10, 2026, 5:07 p.m.