Learn R Programming

ssaBSS (version 0.1.1)

ASSA: ASSA Method for Non-stationary Identification

Description

ASSA (Analytic Stationary Subspace Analysis) method for identifying non-stationary components of mean and variance.

Usage

ASSA(X, ...)

# S3 method for default ASSA(X, K, n.cuts = NULL, ...) # S3 method for ts ASSA(X, ...)

Value

A list of class 'ssabss', inheriting from class 'bss', containing the following components:

W

The estimated unmixing matrix.

S

The estimated sources as time series object standardized to have mean 0 and unit variances.

M

Used separation matrix.

K

Number of intervals the time series is split into.

D

Eigenvalues of M.

MU

The mean vector of X.

n.cut

Used K+1 vector of values that correspond to the breaks which are used for splitting the data.

method

Name of the method ("ASSA"), to be used in e.g. screeplot.

Arguments

X

A numeric matrix or a multivariate time series object of class ts, xts or zoo. Missing values are not allowed.

K

Number of intervals the time series is split into.

n.cuts

A K+1 vector of values that correspond to the breaks which are used for splitting the data. Default is intervals of equal length.

...

Further arguments to be passed to or from methods.

Author

Markus Matilainen, Klaus Nordhausen

Details

Assume that a \(p\)-variate \({\bf Y}\) with \(T\) observations is whitened, i.e. \({\bf Y}={\bf S}^{-1/2}({\bf X}_t - \frac{1}{T}\sum_{t=1}^T {\bf X}_{t})\), for \(t = 1, \ldots, T,\) where \({\bf S}\) is the sample covariance matrix of \({\bf X}\).

The values of \({\bf Y}\) are then split into \(K\) disjoint intervals \(T_i\). Algorithm first calculates matrix $${\bf M} = \frac{1}{T}\sum_{i = 1}^K \left({\bf m}_{T_i} {\bf m}_{T_i}^T + \frac{1}{2} {\bf S}_{T_i} {\bf S}_{T_i}^T\right) - \frac{1}{2} {\bf I},$$ where \(i = 1, \ldots, K\), \(K\) is the number of breakpoints, \({\bf I}\) is an identity matrix, and \({\bf m}_{T_i}\) is the average of values of \({\bf Y}\) and \({\bf S}_{T_i}\) is the sample variance of values of \({\bf Y}\) which belong to a disjoint interval \(T_i\).

The algorithm finds an orthogonal matrix \({\bf U}\) via eigendecomposition $${\bf M} = {\bf UDU}^T.$$ The final unmixing matrix is then \({\bf W} = {\bf U S}^{-1/2}\). The first \(k\) rows of \({\bf U}\) are the eigenvectors corresponding to the non-zero eigenvalues and the rest correspond to the zero eigenvalues. In the same way, the first \(k\) rows of \({\bf W}\) project the observed time series to the subspace of non-stationary components, and the last \(p-k\) rows to the subspace of stationary components.

References

Hara S., Kawahara Y., Washio T. and von Bünau P. (2010). Stationary Subspace Analysis as a Generalized Eigenvalue Problem, Neural Information Processing. Theory and Algorithms, Part I, pp. 422-429.

See Also

JADE

Examples

Run this code

n <- 5000
A <- rorth(4)

z1 <- arima.sim(n, model = list(ar = 0.7)) + rep(c(-1.52, 1.38), c(floor(n*0.5),
        n - floor(n*0.5)))
z2 <- rtvvar(n, alpha = 0.1, beta = 1)
z3 <- arima.sim(n, model = list(ma = c(0.72, 0.24))) 
z4 <- arima.sim(n, model = list(ar = c(0.34, 0.27, 0.18)))

Z <- cbind(z1, z2, z3, z4)
X <- as.ts(tcrossprod(Z, A)) # An mts object

res <- ASSA(X, K = 6)
screeplot(res, type = "lines") # Two non-zero eigenvalues

# Plotting the components as an mts object
plot(res) # The first two are nonstationary

Run the code above in your browser using DataLab