Learn R Programming

BSSasymp (version 1.2-3)

ASCOV_FastICAsym_est: Asymptotic covariance matrix of symmetric FastICA estimate

Description

Symmetric FastICA solves the blind source separation problem in the case of independent components. This function computes an estimate of the covariance matrix of symmetric FastICA mixing and unmixing matrix estimates.

Usage

ASCOV_FastICAsym_est(X, G, g, dg, mixed=TRUE)

ASCOV_FastICAsym2_est(X, G, g, dg, mixed=TRUE)

Arguments

X

a numeric data matrix.

G

the integral function of the nonlinearity function.

g

the nonlinearity function.

dg

the first derivative function of the nonlinearity function.

mixed

logical, see details.

Value

A list with the following components:

W

estimated mean of the unmixing matrix estimate.

COV_W

estimated covariance matrix of the unmixing matrix estimate.

A

estimated mean of the mixing matrix estimate.

COV_A

estimated covariance matrix of the mixing matrix estimate.

Details

If mixed is TRUE, then X will be transformed by the symmetric FastICA estimate. The option FALSE can be used, for example, to estimate the covariance when X are source estimates given by some other method than FastICA.

References

Hyv\"arinen, A. (1999), Fast and robust fixed-point algorithms for independent component analysis, IEEE Transactions on Neural Networks, 10, 626-634.

Wei, T. (2014), The convergence and asymptotic analysis of the generalized symmetric FastICA algorithm, http://arxiv.org/abs/1408.0145.

See Also

ASCOV_FastICAsym, fICA

Examples

Run this code
# NOT RUN {
# source components have uniform- and exponential(1)- distribution  
n <- 1000
s1 <- runif(n,-sqrt(3),sqrt(3))
s2 <- rexp(n)
S <- cbind(s1,s2)

# 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)}
G_gaus <- function(x){-exp(-x^2/2)}

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

X <- S %*% t(A)

round(n*ASCOV_FastICAsym_est(X,G=G_pow3,g=g_pow3,dg=dg_pow3)$COV_W,2)
round(n*ASCOV_FastICAsym_est(X,G=G_gaus,g=g_gaus,dg=dg_gaus)$COV_W,2)

# }

Run the code above in your browser using DataLab