# tFOBI: FOBI for Tensor-Valued Observations In tensorBSS: Blind Source Separation Methods for Tensor-Valued Observations

## Description

Computes the tensorial FOBI in an independent component model.

## Usage

 `1` ```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 S is a tensor (array) of size p_1 x p_2 x ... x 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, ..., r, yielding the observed data X. In R the sample of X is saved as an `array` of dimensions p_1, p_2, ..., p_r, N.

`tFOBI` recovers then based on `x` the underlying independent components S by estimating the r unmixing matrices W_1, ..., 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`.

## 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`.

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

`FOBI`, `tgFOBI`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36``` ```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[], A1) MD(tfobi\$W[], 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) ```