Calculate generalized (oblique) W-correlation matrix

Share:

Description

Function calculates oblique W-correlation matrix for the series.

Usage

1
  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.

Details

Matrix of oblique weighted correlations will be computed. For two series, oblique W-covariation is defined as follows:

owcov(F_1, F_2) = <L* X_1 (R*)^T, L* X_2 (R*)^T>_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, …, \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:

owcor(F_1, F_2) = owcov(F_1, F_2) / sqrt(owcov(F_1, F_1) 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.

Value

Object of class ‘wcor.matrix’

References

Golyandina N. and Shlemov A. (2015): Variations of Singular Spectrum Analysis for separability improvement: non-orthogonal decompositions of time series, Statistics and Its Interface. Vol.8, No 3, P.277-294. http://arxiv.org/abs/1308.4022

See Also

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

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 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))

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.