NGPP | R Documentation |
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.
NGPP(X, k, nl = c("skew", "pow3"), alpha = 0.8, method = "symm", eps = 1e-6,
verbose = FALSE, maxiter = 100)
X |
Numeric matrix with n rows corresponding to the observations and p columns corresponding to the variables. |
k |
Number of components to estimate, |
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 |
alpha |
Vector of positive weights between 0 and 1 given to the non-linearities. The length of |
method |
If |
eps |
Convergence tolerance. |
verbose |
If |
maxiter |
Maximum number of iterations. |
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.
A list with class 'bss' containing the following components:
W |
Estimated unmixing matrix |
S |
Matrix of size |
D |
Vector of the objective function values of the signals |
MU |
Location vector of the data which was substracted before estimating the signal components. |
Joni Virta
Virta, J., Nordhausen, K. and Oja, H., (2016), Projection Pursuit for non-Gaussian Independent Components, <https://arxiv.org/abs/1612.05445>.
NGPPsim, NGPPest, fICA
# 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])
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.