bowl_transform: Bowl Transformation

View source: R/bowl_transform.R

bowl_transformR Documentation

Bowl Transformation

Description

Apply the bowl transformation proposed for robust distance-correlation based independent component analysis. The transformation is bounded, one-to-one, and continuous, and maps far outlying observations close to the origin while preserving the key implication that zero distance correlation implies independence after transformation.

Usage

bowl_transform(
  X,
  alpha = 0.9975,
  do_scale = FALSE,
  location = NULL,
  scale = NULL
)

Arguments

X

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

alpha

A probability level used to define the cutoff q = \sqrt{\chi^2_{p,\alpha}}, where p is the number of columns of X. Must satisfy ⁠0 < alpha < 1⁠.

do_scale

Logical; if TRUE, standardize the columns of X before applying the bowl transformation.

location

Optional centering vector used when do_scale = TRUE. Defaults to stats::median(). Ignored otherwise.

scale

Optional scaling vector used when do_scale = TRUE. Defaults to stats::mad(). Ignored otherwise.

Details

By default, the input is not standardized before the transformation is applied. Optional centering and scaling can be requested through do_scale = TRUE.

Let x_i be an observation, \|x_i\| its Euclidean norm, and q = \sqrt{\chi^2_{p,\alpha}}. Define

u_i = \tanh(\|x_i\| / q).

The transformed observation is then

\left(10u_i^2(1-u_i)^2 x_i,\; 10u_i^6(1-u_i)^2\right).

Value

A numeric matrix with nrow(X) rows and ncol(X) + 1 columns. The first ncol(X) columns contain the transformed coordinates and the final column contains the additional radial component introduced by the bowl transformation.

References

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

Examples

X <- cbind(rnorm(10), rt(10, df = 4))

bowl_transform(X)
bowl_transform(X, do_scale = TRUE)
bowl_transform(X, alpha = 0.99)


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