Learn R Programming

tensorBSS (version 0.3.9)

tJADE: tJADE for Tensor-Valued Observations

Description

Computes the tensorial JADE in an independent component model.

Usage

tJADE(x, maxiter = 100, eps = 1e-06)

Value

A list with class 'tbss', inheriting from class 'bss', containing the following components:

S

Array of the same size as x containing the independent components.

W

List containing all the unmixing matrices

Xmu

The data location.

datatype

Character string with value "iid". Relevant for plot.tbss.

Arguments

x

Numeric array of an order at least two. It is assumed that the last dimension corresponds to the sampling units.

maxiter

Maximum number of iterations. Passed on to rjd.

eps

Convergence tolerance. Passed on to rjd.

Author

Joni Virta

Details

It is assumed that \(S\) is a tensor (array) of size \(p_1 \times p_2 \times \ldots \times p_r\) with mutually independent elements and measured on \(N\) units. The tensor independent component model further assumes that the tensors S are mixed from each mode \(m\) by the mixing matrix \(A_m\), \(m = 1, \ldots, r\), yielding the observed data \(X\). In R the sample of \(X\) is saved as an array of dimensions \(p_1, p_2, \ldots, p_r, N\).

tJADE recovers then based on x the underlying independent components \(S\) by estimating the \(r\) unmixing matrices \(W_1, \ldots, W_r\) using fourth joint moments in a more efficient way than tFOBI.

If x is a matrix, that is, \(r = 1\), the method reduces to JADE and the function calls JADE.

For a generalization for tensor-valued time series see tgJADE.

References

Virta J., Li B., Nordhausen K., Oja H. (2018): JADE for tensor-valued observations, Journal of Computational and Graphical Statistics, Volume 27, p. 628 - 637, tools:::Rd_expr_doi("10.1080/10618600.2017.1407324")

See Also

JADE, tgJADE

Examples

Run this code
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)

tjade <- tJADE(X)

MD(tjade$W[[1]], A1)
MD(tjade$W[[2]], A2) 
tMD(tjade$W, list(A1, A2))

if (FALSE) {
# Digit data example
# Running will take a few minutes

data(zip.train)
x <- zip.train

rows <- which(x[, 1] == 0 | x[, 1] == 1)
x0 <- x[rows, 2:257]
y0 <- x[rows, 1] + 1

x0 <- t(x0)
dim(x0) <- c(16, 16, 2199)

tjade <- tJADE(x0)
plot(tjade, col=y0)
}

Run the code above in your browser using DataLab