Skip to contents

ESL Algorithm 14.3 (eqs 14.89-14.96): symmetric whitening, then alternate (a) for each source a penalised Poisson fit of the log tilt g on a binned grid (14.93-14.94, cubic smoothing spline by IRLS) and (b) the fixed-point step a_j <- E(z g'(a_j'z)) - E(g”(a_j'z)) a_j followed by symmetric orthogonalisation.

Usage

morie_esl_prodenica(
  X,
  penalty = 1e-04,
  L = 500,
  A0 = NULL,
  max_iter = 50,
  tol = 1e-09
)

Arguments

X

Numeric matrix, N by p.

penalty

Roughness penalty lambda in (14.94).

L

Grid size.

A0

Optional starting directions (columns); default the identity.

max_iter, tol

Stop when 1 - min_j |a_j(old)'a_j(new)| < tol.

Value

Named list: A, sources, unmixing, whitening, mean, negentropy, negentropy_path, iterations, converged.

References

Hastie, T. & Tibshirani, R. (2003). Independent components analysis through product density estimation. NIPS 15, 649-656.

Examples

set.seed(1)
S <- cbind(runif(300, -sqrt(3), sqrt(3)), rexp(300) - 1)
morie_esl_prodenica(S %*% rbind(c(1, 0.4), c(0.6, 1)))$A
#>            [,1]      [,2]
#> [1,]  0.9917112 0.1284868
#> [2,] -0.1284868 0.9917112