tSOBI {tensorBSS} | R Documentation |
SOBI for Tensor-Valued Time Series
Description
Computes the tensorial SOBI for time series where at each time point a tensor of order r
is observed.
Usage
tSOBI(x, lags = 1:12, maxiter = 100, eps = 1e-06)
Arguments
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 |
Details
It is assumed that S
is a tensor (array) of size p_1 \times p_2 \times \ldots \times p_r
measured at time points 1, \ldots, 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, \ldots, r
, yielding the observed time series X
. In R the sample of X
is saved as an array
of dimensions
p_1, p_2, \ldots, p_r, T
.
tSOBI
recovers then based on x
the underlying uncorrelated time series S
by estimating the r
unmixing matrices
W_1, \ldots, 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
.
Value
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 |
Author(s)
Joni Virta
References
Virta, J. and Nordhausen, K., (2017), Blind source separation of tensor-valued time series. Signal Processing 141, 204-216, doi: 10.1016/j.sigpro.2017.06.008
See Also
Examples
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)
tMD(tsobi$W, list(A1, A2))