# FOBI for Tensor-Valued Observations

### Description

Computes the tensorial FOBI in an independent component model.

### Usage

1 | ```
tFOBI(x)
``` |

### Arguments

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

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

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 |

`Xmu ` |
The data location. |

`datatype` |
Character string with value "iid". Relevant for |

### Author(s)

Joni Virta

### References

Virta, J., Li, B., Nordhausen, K. and Oja, H., (2016), Independent component analysis for tensor-valued data, *submitted*, **???**, ???–???. Preprint available on ArXiv http://arxiv.org/abs/1602.00879.

### See Also

`FOBI`

, `tgFOBI`

### Examples

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 37 | ```
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)
MD(tfobi$W[[2]] %x% tfobi$W[[1]], A2 %x% A1)
# Digit data example
library(ElemStatLearn)
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)
``` |