tgJADE {tensorBSS} | R Documentation |
gJADE for Tensor-Valued Time Series
Description
Computes the tensorial gJADE for time series where at each time point a tensor of order r
is observed.
Usage
tgJADE(x, lags = 0: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 mutually independent, 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
.
tgJADE
recovers then based on x
the underlying independent time series S
by estimating the r
unmixing matrices
W_1, \ldots, W_r
using the lagged fourth joint moments specified by lags
. This reliance on higher order moments makes the method especially suited for stochastic volatility models.
If x
is a matrix, that is, r = 1
, the method reduces to gJADE and the function calls gJADE
.
If lags = 0
the method reduces to tJADE
.
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
library("stochvol")
n <- 1000
S <- t(cbind(svsim(n, mu = -10, phi = 0.98, sigma = 0.2, nu = Inf)$y,
svsim(n, mu = -5, phi = -0.98, sigma = 0.2, nu = 10)$y,
svsim(n, mu = -10, phi = 0.70, sigma = 0.7, nu = Inf)$y,
svsim(n, mu = -5, phi = -0.70, sigma = 0.7, nu = 10)$y,
svsim(n, mu = -9, phi = 0.20, sigma = 0.01, nu = Inf)$y,
svsim(n, mu = -9, phi = -0.20, sigma = 0.01, nu = 10)$y))
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)
tgjade <- tgJADE(X)
MD(tgjade$W[[1]], A1)
MD(tgjade$W[[2]], A2)
tMD(tgjade$W, list(A1, A2))