tPP {tensorBSS} | R Documentation |
Projection pursuit for Tensor-Valued Observations
Description
Applies mode-wise projection pursuit to tensorial data with respect to the chosen measure of interestingness.
Usage
tPP(x, nl = "pow3", eps = 1e-6, maxiter = 100)
Arguments
x |
Numeric array of an order at least three. It is assumed that the last dimension corresponds to the sampling units. |
nl |
The chosen measure of interestingness/objective function. Current choices include |
eps |
The convergence tolerance of the iterative algortihm. |
maxiter |
The maximum number of iterations. |
Details
The observed tensors (arrays) X
of size p_1 \times p_2 \times \ldots \times p_r
measured on N
units are standardized from each mode and then projected mode-wise onto the directions that maximize the L_2
-norm of the vector of the values E[G(u_k^T X X^T u_k)] - E[G(c^2)]
, where G
is the chosen objective function and c^2
obeys the chi-squared distribution with q
degress of freedom. Currently the function allows the choices G(x) = x^2
(pow3
) and G(x) = x \sqrt x
(skew
), which correspond roughly to the maximization of kurtosis and skewness, respectively. The algorithm is the multilinear extension of FastICA, where the names of the objective functions also come from.
Value
A list with class 'tbss', inheriting from class 'bss', containing the following components:
S |
Array of the same size as x containing the estimated components. |
W |
List containing all the unmixing matrices. |
iter |
The numbers of iteration used per mode. |
Xmu |
The data location. |
datatype |
Character string with value "iid". Relevant for |
Author(s)
Joni Virta
References
Nordhausen, K. and Virta, J. (2018), Tensorial projection pursuit, Manuscript in preparation.
Hyvarinen, A. (1999) Fast and robust fixed-point algorithms for independent component analysis, IEEE transactions on Neural Networks 10.3: 626-634.
See Also
Examples
n <- 1000
S <- t(cbind(rexp(n)-1,
rnorm(n),
runif(n, -sqrt(3), sqrt(3)),
rt(n,5)*sqrt(0.6),
(rchisq(n,1)-1)/sqrt(2),
(rchisq(n,2)-2)/sqrt(4)))
dim(S) <- c(3, 2, n)
A1 <- matrix(rnorm(9), 3, 3)
A2 <- matrix(rnorm(4), 2, 2)
X <- tensorTransform(S, A1, 1)
X <- tensorTransform(X, A2, 2)
tpp <- tPP(X)
MD(tpp$W[[1]], A1)
MD(tpp$W[[2]], A2)
tMD(tpp$W, list(A1, A2))