Learn R Programming

tensorBSS (version 0.3.9)

tFOBI: FOBI for Tensor-Valued Observations

Description

Computes the tensorial FOBI in an independent component model.

Usage

tFOBI(x, norm = NULL)

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.

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.

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\).

tFOBI 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.

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 = 1\), the method reduces to FOBI and the function calls FOBI.

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

References

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

See Also

FOBI, tgFOBI

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)

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)

Run the code above in your browser using DataLab