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) of size
measured on
units are standardized from each mode and then projected mode-wise onto the directions that maximize the
-norm of the vector of the values
, where
is the chosen objective function and
obeys the chi-squared distribution with
degress of freedom. Currently the function allows the choices
(
pow3
) and (
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))