Learn R Programming

ICtest (version 0.3-5)

NGPP: Non-Gaussian Projection Pursuit

Description

Estimates \(k\) non-Gaussian signal components using projection pursuit. The projection index can be chosen among convex combinations of squares of one or several standard projection indices used in ICA.

Usage

NGPP(X, k, nl = c("skew", "pow3"), alpha = 0.8, method = "symm", eps = 1e-6,
     verbose = FALSE, maxiter = 100)

Arguments

X

Numeric matrix with n rows corresponding to the observations and p columns corresponding to the variables.

k

Number of components to estimate, \(1 \leq k \leq p\).

nl

Vector of non-linearities, a convex combination of the corresponding squared objective functions of which is then used as the projection index. The choices include "skew" (skewness), "pow3" (excess kurtosis), "tanh" (\(log(cosh)\)) and "gauss" (Gaussian function).

alpha

Vector of positive weights between 0 and 1 given to the non-linearities. The length of alpha should be either one less than the number of non-linearities in which case the missing weight is chosen so that alpha sums to one, or equal to the number of non-linearities in which case the weights are used as such. No boundary checks for the weights are done.

method

If "symm" the k signals are estimated simultaneously (symmetric projection pursuit) and if "defl" they are estimated one-by-one (deflation-based projection pursuit).

eps

Convergence tolerance.

verbose

If TRUE the numbers of iterations will be printed.

maxiter

Maximum number of iterations.

Value

A list with class 'bss' containing the following components:

W

Estimated unmixing matrix

S

Matrix of size \(n \times k\) containing the estimated signals.

D

Vector of the objective function values of the signals

MU

Location vector of the data which was substracted before estimating the signal components.

Details

It is assumed that the data is a random sample from the model \(x = m + A s\) where the latent vector \(s = (s_1^T, s_2^T)^T\) consists of \(k\)-dimensional non-Gaussian subvector (the signal) and \(p - k\)-dimensional Gaussian subvector (the noise) and the components of \(s\) are mutually independent. Without loss of generality we further assume that the components of \(s\) have zero means and unit variances.

The objective is to estimate an inverse for the mixing matrix \(A\) and in non-Gaussian projection pursuit this is done by first standardizaing the observations and then finding mutually orthogonal directions maximizing a convex combination of the chosen squared objective functions.

After estimation the found signals are ordered in decreasing order with respect to their objective function values.

References

Virta, J., Nordhausen, K. and Oja, H., (2016), Projection Pursuit for non-Gaussian Independent Components, <https://arxiv.org/abs/1612.05445>.

See Also

NGPPsim, NGPPest, fICA

Examples

Run this code
# NOT RUN {
# Simulated data with 2 signals

n <- 500
S <- cbind(rexp(n), runif(n),  rnorm(n))
A <- matrix(rnorm(9), ncol = 3)
X <- S %*% t(A)

res <- NGPP(X, 2)
res$W %*% A


# Iris data

X <- as.matrix(iris[, 1:4])

res <- NGPP(X, 2, nl = c("pow3", "tanh"), alpha = 0.5)
plot(res, col = iris[, 5])
# }

Run the code above in your browser using DataLab