Computes the tensorial SOBI for time series where at each time point a tensor of order *r* is observed.

1 | ```
tSOBI(x, lags = 1:12, maxiter = 100, eps = 1e-06)
``` |

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

`lags` |
Vector of integers. Defines the lags used for the computations of the autocovariances. |

`maxiter` |
Maximum number of iterations. Passed on to |

`eps` |
Convergence tolerance. Passed on to |

It is assumed that *S* is a tensor (array) of size *p_1 x p_2 x ... x p_r* measured at time points *1, ..., T*.
The assumption is that the elements of *S* are uncorrelated, centered and weakly stationary time series and are mixed from each mode
*m* by the mixing matrix *A_m*, *m= 1, ..., r*, yielding the observed time series *X*. In R the sample of *X* is saved as an `array`

of dimensions
*p_1, p_2, ..., p_r, T*.

`tSOBI`

recovers then based on `x`

the underlying uncorrelated time series *S* by estimating the *r* unmixing matrices
*W_1, ..., W_r* using the lagged joint autocovariances specified by `lags`

.

If `x`

is a matrix, that is, *r = 1*, the method reduces to SOBI and the function calls `SOBI`

.

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

`S ` |
Array of the same size as x containing the estimated uncorrelated sources. |

`W ` |
List containing all the unmixing matrices |

`Xmu ` |
The data location. |

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

Joni Virta

Virta, J. and Nordhausen, K., (2016), Blind source separation of tensor-valued time series, *submitted*, **???**, ???–???.

`SOBI`

, `frjd`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | ```
n <- 1000
S <- t(cbind(as.vector(arima.sim(n = n, list(ar = 0.9))),
as.vector(arima.sim(n = n, list(ar = -0.9))),
as.vector(arima.sim(n = n, list(ma = c(0.5, -0.5)))),
as.vector(arima.sim(n = n, list(ar = c(-0.5, -0.3)))),
as.vector(arima.sim(n = n, list(ar = c(0.5, -0.3, 0.1, -0.1), ma=c(0.7, -0.3)))),
as.vector(arima.sim(n = n, list(ar = c(-0.7, 0.1), ma = c(0.9, 0.3, 0.1, -0.1))))))
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)
tsobi <- tSOBI(X)
MD(tsobi$W[[1]], A1)
MD(tsobi$W[[2]], A2)
MD(tsobi$W[[2]] %x% tsobi$W[[1]], A2 %x% A1)
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.