SSAsir {ssaBSS} | R Documentation |
Identification of Non-stationarity in Mean
Description
SSAsir method for identifying non-stationarity in mean.
Usage
SSAsir(X, ...)
## Default S3 method:
SSAsir(X, K, n.cuts = NULL, ...)
## S3 method for class 'ts'
SSAsir(X, ...)
Arguments
X |
A numeric matrix or a multivariate time series object of class |
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. |
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} = \sum_{i = 1}^K \frac{T_i}{T}({\bf m}_{T_i} {\bf m}_{T_i}^T),
where i = 1, \ldots, K
, K
is the number of breakpoints, and {\bf m}_{T_i}
is the average 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 components with non-stationary mean, and the last p-k
rows to the subspace of components with stationary mean.
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 |
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 ("SSAsir"), to be used in e.g. screeplot. |
Author(s)
Markus Matilainen, Klaus Nordhausen
References
Flumian L., Matilainen M., Nordhausen K. and Taskinen S. (2021) Stationary subspace analysis based on second-order statistics. Submitted. Available on arXiv: https://arxiv.org/abs/2103.06148
See Also
Examples
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 <- arima.sim(n, model = list(ar = 0.5)) + rep(c(-0.75, 0.84, -0.45),
c(floor(n/3), floor(n/3), n - 2*floor(n/3)))
z3 <- arima.sim(n, model = list(ma = 0.72))
z4 <- arima.sim(n, model = list(ma = c(0.34)))
Z <- cbind(z1, z2, z3, z4)
X <- tcrossprod(Z, A)
res <- SSAsir(X, K = 6)
res$D # Two non-zero eigenvalues
screeplot(res, type = "lines") # This can also be seen in screeplot
# Plotting the components
plot(res) # The first two are nonstationary in mean