# tNSS.TD.JD: TNSS-TD-JD Method for Tensor-Valued Time Series In tensorBSS: Blind Source Separation Methods for Tensor-Valued Observations

## Description

Estimates the non-stationary sources of a tensor-valued time series using separation information contained in several time intervals and lags.

## Usage

 `1` ```tNSS.TD.JD(x, K = 12, lags = 0:12, n.cuts = NULL, eps = 1e-06, maxiter = 100, ...) ```

## Arguments

 `x` Numeric array of an order at least two. It is assumed that the last dimension corresponds to the sampling units. `K` The number of equisized intervals into which the time range is divided. If the parameter `n.cuts` is non-`NULL` it takes preference over this argument. `lags` The lag set for the autocovariance matrices. `n.cuts` Either a interval cutoffs (the cutoffs are used to define the two intervals that are open below and closed above, e.g. (a, b]) or `NULL` (the parameter `K` is used to define the the amount of intervals). `eps` Convergence tolerance for `rjd`. `maxiter` Maximum number of iterations for `rjd`. `...` Further arguments to be passed to or from methods.

## Details

Assume that the observed tensor-valued time series comes from a tensorial BSS model where the sources have constant means over time but the component variances change in time. Then TNSS-TD-JD first standardizes the series from all modes and then estimates the non-stationary sources by dividing the time scale into `K` intervals and jointly diagonalizing the autocovariance matrices (specified by `lags`) of the `K` intervals within each mode.

## 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. `K` The number of intervals. `lags` The lag set. `n.cuts` The interval cutoffs. `Xmu` The data location. `datatype` Character string with value "ts". Relevant for `plot.tbss`.

Joni Virta

## References

Virta J., Nordhausen K. (2017): Blind source separation for nonstationary tensor-valued time series, 2017 IEEE 27th International Workshop on Machine Learning for Signal Processing (MLSP), doi: 10.1109/MLSP.2017.8168122

`NSS.SD`, `NSS.JD`, `NSS.TD.JD`, `tNSS.SD`, `tNSS.JD`
 ``` 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``` ```# Create innovation series with block-wise changing variances n1 <- 200 n2 <- 500 n3 <- 300 n <- n1 + n2 + n3 innov1 <- c(rnorm(n1, 0, 1), rnorm(n2, 0, 3), rnorm(n3, 0, 5)) innov2 <- c(rnorm(n1, 0, 1), rnorm(n2, 0, 5), rnorm(n3, 0, 3)) innov3 <- c(rnorm(n1, 0, 5), rnorm(n2, 0, 3), rnorm(n3, 0, 1)) innov4 <- c(rnorm(n1, 0, 5), rnorm(n2, 0, 1), rnorm(n3, 0, 3)) # Generate the observations vecx <- cbind(as.vector(arima.sim(n = n, list(ar = 0.8), innov = innov1)), as.vector(arima.sim(n = n, list(ar = c(0.5, 0.1)), innov = innov2)), as.vector(arima.sim(n = n, list(ma = -0.7), innov = innov3)), as.vector(arima.sim(n = n, list(ar = 0.5, ma = -0.5), innov = innov4))) # Vector to tensor tenx <- t(vecx) dim(tenx) <- c(2, 2, n) # Run TNSS-TD-JD res <- tNSS.TD.JD(tenx) res\$W res <- tNSS.TD.JD(tenx, K = 6, lags = 0:6) res\$W ```