R: JADE Algorithm for ICA

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.

The function uses `frjd` for the joint diagonalization.

### 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)).

It is also worth mentioning that the estimated independent components S are scaled to unit variance and are ordered in such a way, that their fourth moments are in the decreasing order. The signs of the unmixing matrix W are fixed so that the sum of the elements on each row is positive.

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 class 'bss' containing the following 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

### References

Cardoso, J.-F. and Souloumiac, A., (1993), Blind beamforming for non Gaussian signals, IEE Proceedings-F, 140, 362–370.

Miettinen, J., Taskinen S., Nordhausen, K. and Oja, H. (2015), Fourth Moments and Independent Component Analysis, Statistical Science, 30, 372–390.

Miettinen, J., Nordhausen, K. and Taskinen, S. (2017), Blind Source Separation Based on Joint Diagonalization in R: The Packages JADE and BSSasymp, Journal of Statistical Software, 76, 1–31, <doi:10.18637/jss.v076.i02>.

### Examples

    # 3 source and 3 signals

    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)

    # 2 sources and 3 signals

    S2 <- cbind(rt(1000, 4), rnorm(1000))
    A2 <- matrix(rnorm(6), ncol = 2)
    X2 <- S2 %*% t(A2)
    res2 <-JADE(X2,2)
    res2$A
    res2$W
    res2$S[1:10,]
    (sweep(X2,2,res2$Xmu) %*% t(res2$W))[1:10,]
    SIR(S2,res2$S)

[Package JADE version 2.0-0 Index]