tFOBI {tensorBSS}R Documentation

FOBI for Tensor-Valued Observations

Description

Computes the tensorial FOBI in an independent component model.

Usage

tFOBI(x, norm = NULL)

Arguments

x

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

norm

A Boolean vector with number of entries equal to the number of modes in a single observation. The elements tell which modes use the “normed” version of tensorial FOBI. If NULL then all modes use the non-normed version.

Details

It is assumed that SS is a tensor (array) of size p1×p2××prp_1 \times p_2 \times \ldots \times p_r with mutually independent elements and measured on NN units. The tensor independent component model further assumes that the tensors S are mixed from each mode mm by the mixing matrix AmA_m, m=1,,rm = 1, \ldots, r, yielding the observed data XX. In R the sample of XX is saved as an array of dimensions p1,p2,,pr,Np_1, p_2, \ldots, p_r, N.

tFOBI recovers then based on x the underlying independent components SS by estimating the rr unmixing matrices W1,,WrW_1, \ldots, W_r using fourth joint moments.

The unmixing can in each mode be done in two ways, using a “non-normed” or “normed” method and this is controlled by the argument norm. The authors advocate the general use of non-normed version, see the reference below for their comparison.

If x is a matrix, that is, r=1r = 1, the method reduces to FOBI and the function calls FOBI.

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

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.

norm

The vector indicating which modes used the “normed” version.

Xmu

The data location.

datatype

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

Author(s)

Joni Virta

References

Virta, J., Li, B., Nordhausen, K. and Oja, H., (2017), Independent component analysis for tensor-valued data, Journal of Multivariate Analysis, doi: 10.1016/j.jmva.2017.09.008

See Also

FOBI, tgFOBI

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)

tfobi <- tFOBI(X)

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

# Digit data example

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)

tfobi <- tFOBI(x0)
plot(tfobi, col=y0)

[Package tensorBSS version 0.3.8 Index]