tNSS.JD: NSS-JD Method for Tensor-Valued Time Series

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/tNSS.JD.R

Description

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

Usage

1
tNSS.JD(x, K = 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.

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-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 covariance matrices 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.

n.cuts

The interval cutoffs.

Xmu

The data location.

datatype

Character string with value "ts". Relevant for plot.tbss.

Author(s)

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

See Also

NSS.SD, NSS.JD, NSS.TD.JD, tNSS.SD, tNSS.TD.JD

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
# 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-JD
res <- tNSS.JD(tenx, K = 6)
res$W

res <- tNSS.JD(tenx, K = 12)
res$W

Example output

Loading required package: JADE
[[1]]
            [,1]       [,2]
[1,]  0.20178466 0.06602775
[2,] -0.05084734 0.25384083

[[2]]
            [,1]         [,2]
[1,] 0.194640208 -0.002917588
[2,] 0.001661475  0.298292825

[[1]]
            [,1]       [,2]
[1,]  0.19993871 0.07462224
[2,] -0.05768027 0.25144851

[[2]]
           [,1]         [,2]
[1,] 0.19464319 -0.002309639
[2,] 0.00126478  0.298298152

tensorBSS documentation built on June 2, 2021, 9:08 a.m.