JADE {JADE}R Documentation

JADE algorithm for ICA

Description

This is an R version of Cardoso's JADE ICA algorithm for real data ported from matlab. The ported version is 1.5, some minor changes compared to the matlab function are explained in the details section. The matlab code can be found for example on the ICA central homepage.

Usage

JADE(X, n.comp = NULL, eps = 1e-06, maxiter = 100, na.action = na.fail)

Arguments

X Numeric data matrix or dataframe.
n.comp Number of components to extract.
eps Convergence tolerance.
maxiter Maximum number of iterations.
na.action A function which indicates what should happen when the data contain 'NA's. Default is to fail.

Details

Some minor modifications were done when porting the function to R, and they are:

1
the model assumed here is X = S A' + Xmu. Therefore S and X have one row per observation. Note that this still differs from the model definition in R of FastICA and PearsonICA but agrees with ics.
2
The whitening covariance matrix is divided by n-1 and not n (n = number of observations).
3
The initial value for the joint diagonalisation is always I.
4
The original eps would be 1/(100*sqrt(n)).

Worth mentioning is also that the estimated independent components S are scaled to unit variance and are ordered in such a way, that the most energetic component comes first. The signs of the unmixing matrix W are fixed such, that the first column of W has positive elements.

For further details see also the documention of the original matlab code ("MatlabjadeR.m") on the ICA central homepage (http://www.tsi.enst.fr/icacentral/).

Value

A list with the components

A The estimated mixing matrix.
W The estimated unmixing matrix.
S Dataframe with the estimated independent components.
Xmu The location of the original data.

Author(s)

Jean-Francois Cardoso. Ported to R by Klaus Nordhausen, klaus.nordhausen@uta.fi

References

Cardoso, J.-F. and Souloumiac, A., (1993), Blind beamforming for non Gaussian signals, IEE Proceedings-F, 140, 362–370. ftp://sig.enst.fr/pub/jfc/Papers/iee.ps.gz.

Examples

S <- cbind(rt(1000, 4), rnorm(1000), runif(1000))
A <- matrix(rnorm(9), ncol = 3)
X <- S %*% t(A)
res<-JADE(X,3)
res$A
res$W
res$S[1:10,]
(sweep(X,2,res$Xmu) %*% t(res$W))[1:10,]
round(res$W %*% A,4) 

[Package JADE version 1.0-1 Index]