| icaimax {ica} | R Documentation |
Computes ICA decomposition using Bell and Sejnowski's (1995) Information-Maximization (Infomax) approach with various options.
icaimax(X,nc,center=TRUE,maxit=100,tol=1e-6,Rmat=diag(nc),
alg=c("newton","gradient"),fun=c("tanh","log","ext"),
signs=rep(1,nc),signswitch=TRUE,rate=1,rateanneal=NULL)
X |
Data matrix with |
nc |
Number of components to extract. |
center |
If |
maxit |
Maximum number of algorithm iterations to allow. |
tol |
Convergence tolerance. |
Rmat |
Initial estimate of the |
alg |
Algorithm to use: |
fun |
Nonlinear (squashing) function to use for algorithm: |
signs |
Vector of length |
signswitch |
If |
rate |
Learing rate for gradient descent algorithm. Ignored if |
rateanneal |
Annealing angle and proportion for gradient descent learing rate (see Details). Ignored if |
ICA Model
The ICA model can be written as X=tcrossprod(S,M)+E, where columns of S contain the source signals, M is the mixing matrix, and columns of E contain the noise signals. Columns of X are assumed to have zero mean. The goal is to find the unmixing matrix W such that columns of S=tcrossprod(X,W) are independent as possible.
Whitening
Without loss of generality, we can write M=P%*%R where P is a tall matrix and R is an orthogonal rotation matrix. Letting Q denote the pseudoinverse of P, we can whiten the data using Y=tcrossprod(X,Q). The goal is to find the orthongal rotation matrix R such that the source signal estimates S=Y%*%R are as independent as possible. Note that W=crossprod(R,Q).
Infomax
The Infomax approach finds the orthogonal rotation matrix R that (approximately) maximizes the joint entropy of a nonlinear function of the estimated source signals. See Bell and Sejnowski (1995) and Helwig (in prep) for specifics of algorithms.
S |
Matrix of source signal estimates ( |
M |
Estimated mixing matrix. |
W |
Estimated unmixing matrix ( |
Y |
Whitened data matrix. |
Q |
Whitening matrix. |
R |
Orthogonal rotation matrix. |
vafs |
Variance-accounted-for by each component. |
iter |
Number of algorithm iterations. |
alg |
Algorithm used (same as input). |
fun |
Contrast function (same as input). |
signs |
Component signs (same as input). |
rate |
Learning rate (same as input). |
Nathaniel E. Helwig <helwig@umn.edu>
Bell, A.J. & Sejnowski, T.J. (1995). An information-maximization approach to blind separation and blind deconvolution. Neural Computation, 7, 1129-1159.
########## EXAMPLE 1 ##########
# generate noiseless data (p==r)
set.seed(123)
nobs <- 1000
Amat <- cbind(icasamp("a","rnd",nobs),icasamp("b","rnd",nobs))
Bmat <- matrix(2*runif(4),2,2)
Xmat <- tcrossprod(Amat,Bmat)
# ICA via Infomax with 2 components
imod <- icaimax(Xmat,2)
acy(Bmat,imod$M)
congru(Amat,imod$S)
########## EXAMPLE 2 ##########
# generate noiseless data (p!=r)
set.seed(123)
nobs <- 1000
Amat <- cbind(icasamp("a","rnd",nobs),icasamp("b","rnd",nobs))
Bmat <- matrix(2*runif(200),100,2)
Xmat <- tcrossprod(Amat,Bmat)
# ICA via Infomax with 2 components
imod <- icaimax(Xmat,2)
congru(Amat,imod$S)
########## EXAMPLE 3 ##########
# generate noisy data (p!=r)
set.seed(123)
nobs <- 1000
Amat <- cbind(icasamp("a","rnd",nobs),icasamp("b","rnd",nobs))
Bmat <- matrix(2*runif(200),100,2)
Emat <- matrix(rnorm(10^5),1000,100)
Xmat <- tcrossprod(Amat,Bmat)+Emat
# ICA via Infomax with 2 components
imod <- icaimax(Xmat,2)
congru(Amat,imod$S)