Computes the Amari Error to evaluate the performance of an ICA algorithm.
Usage
amari.error(W.hat, A, standardize = F)
Value
The value of the Amari Error.
Arguments
W.hat
The estimated square unmixing matrix W.
A
The true square mixing matrix A.
standardize
Logical value if A and W.hat need to be standardized. Default is FALSE.
Author
Klaus Nordhausen
Details
The Amari Error can be used in simulation studies to evaluate the performance of an
ICA algorithm. The Amari error is permutation invariant but not scale invariant. Therefore if different
algorithms should be compared the matrices should be scaled in the same way.
If standardize is TRUE, this will be done by the function by standardizing 'W.hat' and the inverse of 'A'
in such a way, that every row has length 1, the largest absolute value of the row has a positive sign
and the rows are ordered decreasingly according to their largest values.
Note that this function assumes the ICA model is \(X = S A'\), as is assumed by JADE and ics. However fastICA and
PearsonICA assume \(X = S A\). Therefore matrices from those functions have to be transposed first.
The Amari Error is scaled in such a way, that it takes a value between 0 and 1. And 0 corresponds to an optimal separation.
References
Amari, S., Cichocki, A. and Yang, H.H. (1996), A new learning algorithm for blind signal separation, Advances in Neural Information Processing Systems, 8, 757--763.
Nordhausen, K., Ollila, E. and Oja, H. (2011), On the Performance Indices of ICA and Blind Source Separation. In the Proceedings of 2011 IEEE 12th International Workshop on Signal Processing Advances in Wireless Communications (SPAWC 2011), 486--490.
S <- cbind(rt(1000, 4), rnorm(1000), runif(1000))
A <- matrix(rnorm(9), ncol = 3)
X <- S %*% t(A)
W.hat <- JADE(X, 3)$W
amari.error(W.hat, A)
amari.error(W.hat, A, TRUE)