Learn R Programming

JADE (version 2.0-4)

JADE: 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)

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.

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.

Author

Jean-Francois Cardoso. Ported to R by Klaus Nordhausen

Details

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

1

the model assumed here is \(X=S A' +\mu\). 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 \(\frac{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.

The code is based on the original matlab code ("MatlabjadeR.m").

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

Run this code
# 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)

Run the code above in your browser using DataLab