cadzow | R Documentation |
Perform the finite rank approximation of the series via Cadzow iterations
## S3 method for class 'ssa'
cadzow(x, rank, correct = TRUE, tol = 1e-6, maxiter = 0,
norm = function(x) max(abs(x)),
trace = FALSE, ..., cache = TRUE)
x |
input SSA object |
rank |
desired rank of approximation |
correct |
logical, if 'TRUE' then additional correction as in Gillard et al (2013) is performed |
tol |
tolerance value used for convergence criteria |
maxiter |
number of iterations to perform, if zero then iterations are performed until the convergence |
norm |
distance function used for covergence criterion |
trace |
logical, indicates whether the convergence process should be traced |
... |
further arguments passed to |
cache |
logical, if 'TRUE' then intermediate results will be cached in the SSA object. |
Cadzow iterations aim to solve the problem of the approximation of the input series by a series of finite rank. The idea of the algorithm is quite simple: alternating projections of the trajectory matrix to Hankel and low-rank matrices are performed which hopefully converge to a Hankel low-rank matrix. See Algorithm 3.10 in Golyandina et al (2018).
Note that the results of one Cadzow iteration with no correction
coincides with the result of reconstruction by the leading rank
components.
Unfortunately, being simple, the method often yields the solution which is far away from the optimum.
Golyandina N., Korobeynikov A., Zhigljavsky A. (2018): Singular Spectrum Analysis with R. Use R!. Springer, Berlin, Heidelberg.
Cadzow J. A. (1988) Signal enhancement a composite property mapping algorithm, IEEE Transactions on Acoustics, Speech, and Signal Processing, 36, 49-62.
Gillard, J. and Zhigljavsky, A. (2013) Stochastic optimization algorithms for Hankel structured low-rank approximation. Unpublished Manuscript. Cardiff School of Mathematics. Cardiff.
Rssa
for an overview of the package, as well as,
reconstruct
# Decompose co2 series with default parameters
s <- ssa(co2)
# Now make rank 3 approximation using the Cadzow iterations
F <- cadzow(s, rank = 3, tol = 1e-10)
library(lattice)
xyplot(cbind(Original = co2, Cadzow = F), superpose = TRUE)
# All but the first 3 eigenvalues are close to 0
plot(ssa(F))
# Compare with SSA reconstruction
F <- cadzow(s, rank = 3, maxiter = 1, correct = FALSE)
Fr <- reconstruct(s, groups = list(1:3))$F1
print(max(abs(F - Fr)))
# Cadzow with and without weights
set.seed(3)
N <- 60
L <- 30
K <- N - L + 1
alpha <- 0.1
sigma <- 0.1
signal <- cos(2*pi * seq_len(N) / 10)
x <- signal + rnorm(N, sd = sigma)
weights <- rep(alpha, K)
weights[seq(1, K, L)] <- 1
salpha <- ssa(x, L = L,
column.oblique = "identity",
row.oblique = weights)
calpha <- cadzow(salpha, rank = 2)
cz <- cadzow(ssa(x, L = L), rank = 2)
print(mean((cz - signal)^2))
print(mean((calpha - signal)^2))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.