SOBIladle {tsBSS} | R Documentation |
Ladle Estimator to Estimate the Number of White Noise Components in SOS with SOBI
Description
The ladle estimator uses the joint diagonalization "eigenvalues" and "eigenvectors" of several autocovariance matrices to estimate the number of white noise components in second-order source separation (SOS).
Usage
SOBIladle(X, ...)
## Default S3 method:
SOBIladle(X, tau = 1:12, l = 20, sim = c("geom", "fixed"), n.boot = 200, ncomp =
ifelse(ncol(X) > 10, floor(ncol(X)/log(ncol(X))), ncol(X) - 1),
maxiter = 1000, eps = 1e-06, ...)
## S3 method for class 'ts'
SOBIladle(X, ...)
## S3 method for class 'xts'
SOBIladle(X, ...)
## S3 method for class 'zoo'
SOBIladle(X, ...)
Arguments
X |
A numeric matrix or a multivariate time series object of class |
tau |
The lags for the SOBI autocovariance matrices. |
l |
If |
sim |
If |
n.boot |
The number of bootstrapping samples. See |
ncomp |
The number of components among which the ladle estimator is to be searched. Must be between |
maxiter |
Maximum number of iterations. |
eps |
Convergence tolerance. |
... |
Further arguments to be passed to or from methods. |
Details
SOBI standardizes X
with n
samples and jointly diagonalizes the autocovariance matrices of the standardized data for a chosen set of lags tau
, yielding a transformation \bf W
giving the latent variables as {\bf S} = {\bf X} {\bf W}
. Assume, without loss of generality, that the latent components are ordered in decreasing order with respect to the sums of squares of the corresponding "eigenvalues" produced by the joint diagonalization.
Under the assumption that we have k
non-white-noise components, the final p - k
"eigenvalues" of each of the autocovariance matrices equal zero, \lambda^\tau_{p-k} = \cdots = \lambda^\tau_{p} = 0
.
The change point from non-zero eigenvalues to zero eigenvalues is visible in the joint diagonalization "eigenvectors" of the autocovariance matrices as an increase in their boostrap variablity. Similarly, before the change point, the squared eigenvalues decrease in magnitude and afterwards they stay constant. The ladle estimate combines the scaled eigenvector bootstrap variability with the scaled eigenvalues to estimate the number of non-white-noise components. The estimate is the value of k = 0, \ldots ,
ncomp
where the combined measure achieves its minimum value.
This function uses for the joint diagonalization the function frjd.int
, which does not fail in case of failed convergence but returns the estimate from the final step.
Value
A list of class ladle
containing:
method |
The string SOBI. |
k |
The estimated number of non-white-noise components. |
fn |
The vector giving the measures of variation of the eigenvectors using the bootstrapped eigenvectors for the different number of components. |
phin |
Normalized sums of squared eigenvalues of the SOBI matrices. |
data.name |
The name of the data for which the ladle estimate was computed. |
gn |
The main criterion for the ladle estimate - the sum of |
lambda |
The sums of squared eigenvalues of the SOBI matrices. |
W |
The transformation matrix to the source components. Also known as the unmixing matrix. |
S |
Multivariate time series with the centered source components. |
MU |
The location of the data which was subtracted before calculating the source components. |
sim |
The used boostrapping technique, either |
tau |
The used set of lags for the SOBI autocovariance matrices. |
Author(s)
Klaus Nordhausen, Joni Virta
References
Nordhausen, K. and Virta, J.(2018), Ladle Estimator for Time Series Signal Dimension. In 2018 IEEE Statistical Signal Processing Workshop (SSP), pp. 428–432, <doi:10.1109/SSP.2018.8450695>.
Luo, W. and Li, B. (2016), Combining Eigenvalues and Variation of Eigenvectors for Order Determination, Biometrika, 103. 875–887. <doi:10.1093/biomet/asw051>
See Also
AMUSE
, SOBI
, AMUSEladle
, frjd.int
Examples
n <- 1000
s1 <- arima.sim(n = n, list(ar = 0.6, ma = c(0, -0.4)))
s2 <- arima.sim(n = n, list(ar = c(0, 0.1,0.3), ma = c(0.2, 0.4)))
s3 <- arima.sim(n = n, list(ar = c(0, 0.8)))
Snoise <- matrix(rnorm(5*n), ncol = 5)
S <- cbind(s1, s2, s3, Snoise)
A <- matrix(rnorm(64), 8, 8)
X <- S %*% t(A)
ladle_SOBI <- SOBIladle(X, l = 20, sim = "geom")
# The estimated number of non-white-noise components
summary(ladle_SOBI)
# The ladle plot
ladleplot(ladle_SOBI)
# Time series plots of the estimated components
plot(ladle_SOBI)
# Note that AMUSEladle with lag 1 does not work due to the lack of short range dependencies
ladle_AMUSE <- AMUSEladle(X)
summary(ladle_AMUSE)
ladleplot(ladle_AMUSE)
# xts series as input
library("xts")
data(sample_matrix)
X2 <- as.xts(sample_matrix)
ladle_SOBI_xts <- SOBIladle(X2, l = 20, sim = "geom")
plot(ladle_SOBI_xts, multi.panel = TRUE)
# zoo series as input
X3 <- as.zoo(X)
ladle_SOBI_zoo <- SOBIladle(X3, l = 20, sim = "geom")
plot(ladle_SOBI_zoo)