Skip to contents

Decomposes a series into components by diagonalising its lag-covariance matrix, then reconstructs each one. With window (embedding dimension) M and series length N, Vautard, Yiou & Ghil use the Toeplitz estimate of the lag-covariance matrix, c_j = sum_{t=1}^{N-j} z_t z_{t+j} / (N - j) and C_ij = c_{|i-j|}, on the centred series z = y - mean(y). This is the estimator they recommend over the trajectory-matrix (Broomhead-King) form because it is unbiased term by term and keeps C Toeplitz, so its eigenvectors stay close to sines and cosines for a quasi-periodic signal. C is symmetric and is diagonalised by Jacobi rotations, eigenvalues sorted decreasing.

Usage

Singsd(y, window)

Arguments

y

Series, length N; needs N > window.

window

Embedding dimension M, at least 2 and at most N - 1.

Value

List with estimate (leading variance fraction), eigenvalues, variance_fraction, reconstructed, leading_fraction, pair_fraction, total_variance, trace_check, reconstruction_error, c0, mean, n, window, n_lagged, method.

Details

The k-th principal component is the projection of the delay vectors on eigenvector k, a^k_t = sum_j z_{t+j-1} E_jk for t = 1..N-M+1, and the reconstructed component is recovered by diagonal averaging of a^k_t E_jk over the delay index with the boundary-corrected normalisation. The reconstructed components sum exactly to the centred series, reported as reconstruction_error.

Since trace(C) = M c_0 = M var(y), the eigenvalues sum to M times the series variance; trace_check reports that identity. The Toeplitz estimate is not guaranteed positive semi-definite – each c_j carries its own divisor N - j – so a few trailing eigenvalues may come out slightly negative and an individual variance fraction may exceed 1. That is a property of the estimator Vautard, Yiou & Ghil chose, not an error.

References

Vautard, R., Yiou, P. & Ghil, M. (1992). Singular-spectrum analysis: a toolkit for short, noisy chaotic signals. Physica D 58(1-4), 95-126. doi:10.1016/0167-2789(92)90103-T

Examples

Singsd(y = c(1, 2, 3, 4, 5, 6, 7, 8), window = 5L)
#> $estimate
#> [1] 0.5102578
#> 
#> $eigenvalues
#> [1] 13.3942680 10.2974813  1.0358520  0.9236687  0.5987300
#> 
#> $variance_fraction
#> [1] 0.51025783 0.39228500 0.03946103 0.03518738 0.02280876
#> 
#> $reconstructed
#> [1] -0.8510674 -0.9494330 -0.7142292 -0.2137613  0.2137613  0.7142292  0.9494330
#> [8]  0.8510674
#> 
#> $leading_fraction
#> [1] 0.5102578
#> 
#> $pair_fraction
#> [1] 0.9025428
#> 
#> $total_variance
#> [1] 26.25
#> 
#> $trace_check
#> [1] 2.131628e-14
#> 
#> $reconstruction_error
#> [1] 2.220446e-15
#> 
#> $c0
#> [1] 5.25
#> 
#> $mean
#> [1] 4.5
#> 
#> $n
#> [1] 8
#> 
#> $window
#> [1] 5
#> 
#> $n_lagged
#> [1] 4
#> 
#> $method
#> [1] "Singular spectrum analysis, Toeplitz lag covariance (Vautard, Yiou & Ghil 1992)"
#> 
#> attr(,"class")
#> [1] "morie_rich_result" "list"