Learn R Programming

BSSasymp (version 1.2-3)

ASCOV_FastICAdefl: Asymptotic covariance matrices of different deflation-based FastICA estimates

Description

The regular deflation-based FastICA finds the independent components one by one using a nonlinearity function. The adaptive deflation-based FastICA chooses, for each component separately, the best nonlinearity from a set of nonlinearities. This function computes asymptotic covariance matrices of the different deflation-based FastICA mixing and unmixing matrix estimates.

Usage

ASCOV_FastICAdefl(sdf, gs, dgs, Gs=NULL, method="adapt", 
                  name=NULL, supp=NULL, A=NULL, ...)

Arguments

sdf

a list of density functions of the sources scaled so that the mean is 0 and variance is 1.

gs

a list of nonlinearity functions.

dgs

the first derivative functions of the nonlinearity functions.

Gs

the integral function of the nonlinearity function. Is needed only when method="G".

method

"adapt", "G" or "regular", see details.

name

a list of strings, which labels the nonlinearities.

supp

a two column matrix, where each row gives the lower and the upper limit used in numerical integration for the corresponding source component which is done using integrate. Can be NULL if each support is the whole real line.

A

the mixing matrix, identity matrix as default.

arguments to be passed to integrate.

Value

A list with the following components:

W

mean of the unmixing matrix estimate.

COV_W

asymptotic covariance matrix of the unmixing matrix estimate.

A

mean of the mixing matrix estimate.

COV_A

asymptotic covariance matrix of the mixing matrix estimate.

EMD

the limiting expected value of \(n(p-1)MD^2\), see details.

used_gs

indicates which nonlinearity is used in estimation of each rows of the unmixing matrix.

Details

Depending on the argument method, the function computes the asymptotic covariance matrices for three different extraction orders of the independent components. The choice method="adapt" picks the adaptive deflation-based FastICA estimate, which extracts the components in asymptotically optimal order and uses the best nonlinearity from the set of nonlinearities gs. The other two methods use only one nonlinearity, and if gs and dgs contain more than one function, the first one is taken. When method="G", the order is based on the deviance from normality measured by Gs. When method="regular", the order is that of sdf.

The signs of the components are fixed so that the sum of the elements of each row of the unmixing matrix is positive.

Since the unmixing matrix has asymptotic normal distribution, we have a connection between the asymptotic variances and the minimum distance index, which is defined as $$MD(\hat{W},A)=\frac{1}{\sqrt{p-1}} \inf_{P D}{||PD \hat{W} A-I||,}$$ where \(\hat{W}\) is the unmixing matrix estimate, \(A\) is the mixing matrix, \(P\) is a permutation matrix and \(D\) a diagonal matrix with nonzero diagonal entries. If \(\hat{W}A\) converges to the identity matrix, the limiting expected value of \(n(p-1)MD^2\) is the sum of the asymptotic variances of the off-diagonal elements of \(\hat{W}A\). Here \(n\) is the sample size and \(p\) is the number of components.

References

Ilmonen, P., Nordhausen, K., Oja, H. and Ollila, E. (2010): A New Performance Index for ICA: Properties, Computation and Asymptotic Analysis. In Vigneron, V., Zarzoso, V., Moreau, E., Gribonval, R. and Vincent, E. (editors) Latent Variable Analysis and Signal Separation, 229--236, Springer.

Miettinen, J., Nordhausen, K., Oja, H. and Taskinen, S. (2014), Deflation-based FastICA with adaptive choices of nonlinearities, IEEE Transactions on Signal Processing, 62(21), 5716--5724.

Nordhausen, K., Ilmonen, P., Mandal, A., Oja, H. and Ollila, E. (2011), Deflation-based FastICA reloaded, in Proc. "19th European Signal Processing Conference 2011 (EUSIPCO 2011)", Barcelona, 1854--1858.

See Also

ASCOV_FastICAdefl_est, adapt_fICA, integrate

Examples

Run this code
# NOT RUN {
# source components have uniform- and exponential(1)- distribution  
fu <- function(x){1/(sqrt(3)*2)}
fe <- function(x){exp(-x-1)}

supp <- matrix(c(-sqrt(3),sqrt(3),-1,Inf), nrow=2, ncol=2, byrow=TRUE)

# couple of nonlinearities
g_pow3 <- function(x){x^3}
dg_pow3 <- function(x){3*x^2}
G_pow3 <- function(x){x^4/4}

g_gaus <- function(x){x*exp(-x^2/2)}
dg_gaus <- function(x){exp(-x^2/2)-x^2*exp(-x^2/2)}

gs <- c(g_pow3,g_gaus)
dgs <- c(dg_pow3,dg_gaus)

A <- matrix(rnorm(4),2,2)

res1 <- ASCOV_FastICAdefl(sdf=c(fu,fe), gs=gs, dgs=dgs, supp=supp, A=A)

round(res1$COV_W, 2)
res1$EMD
res1$used_gs

res2 <- ASCOV_FastICAdefl(sdf=c(fu,fe), gs=c(g_pow3), dgs=c(dg_pow3), 
Gs=c(G_pow3), method="G", supp=supp, A=A)

res2$EMD
# }

Run the code above in your browser using DataLab