Learn R Programming

Rssa (version 0.13-1)

owcor: Calculate generalized (oblique) W-correlation matrix

Description

Function calculates oblique W-correlation matrix for the series.

Usage

owcor(x, groups, ..., cache = TRUE)

Arguments

x
the input object of `ossa' class
groups
list of numeric vectors, indices of elementary components used for reconstruction. The elementary components must belong to the current OSSA component set
...
further arguments passed to reconstruct routine
cache
logical, if 'TRUE' then intermediate results will be cached in 'ssa' object.

Value

Object of class `wcor.matrix'

Details

Matrix of oblique weighted correlations will be computed. For two series, oblique W-covariation is defined as follows: $$% \mathrm{owcov}(F_1, F_2) = \langle L^\dagger X_1 (R^\dagger)^\mathrm{T}, L^\dagger X_2 (R^\dagger)^\mathrm{T} \rangle_\mathrm{F}, $$ where $X_1, X_2$ denotes the trajectory matrices of series $F_1, F_2$ correspondingly, $L = [U_{b_1} : ... : U_{b_r}], R = [V_{b_1}: ... V_{b_r}]$, where ${b_1, \dots, \b_r}$ is current OSSA component set (see description of `ossa.set' field of `ossa' object), `$<., .="">_F$' denotes Frobenius matrix inner product and `$*$' denotes Moore-Penrose pseudo-inverse matrix.

And oblique W-correlation is defined the following way: $$% \mathrm{owcor}(F_1, F_2) = \frac{\mathrm{owcov}(F_1, F_2)} {\sqrt{\mathrm{owcov}(F_1, F_1) \cdot \mathrm{owcov(F_2, F_2)}}} $$

Oblique W-correlation is OSSA analogue of W-correlation, that is, a measure of series separability. If I-OSSA procedure separates series exactly, their oblique W-correlation will be equal to zero.

References

Golyandina N. and Shlemov A. (2013): Variations of Singular Spectrum Analysis for separability improvement: non-orthogonal decompositions of time series, http://arxiv.org/abs/1308.4022

See Also

Rssa for an overview of the package, as well as, wcor, iossa, fossa.

Examples

Run this code
# Separate two non-separable sines
N <- 150
L <- 70

omega1 <- 0.06
omega2 <- 0.065

F <- 4*sin(2*pi*omega1 * (1:N)) + sin(2*pi*omega2 * (1:N))
s <- ssa(F, L)
ios <- iossa(s, nested.groups = list(1:2, 3:4), kappa = NULL, maxIter = 200, tol = 1e-8)

p.wcor <- plot(wcor(ios, groups = list(1:2, 3:4)))
p.owcor <- plot(owcor(ios, groups = list(1:2, 3:4)), main = "OW-correlation matrix")
print(p.wcor, split = c(1, 1, 2, 1), more = TRUE)
print(p.owcor, split = c(2, 1, 2, 1))

Run the code above in your browser using DataLab