Wavelet coherence and partial coherence of an evolutionary wavelet spectrum.
methods
coherence(object, partial =FALSE)
Arguments
object: Multivariate evolutionary wavelet spectrum as a mvLSW object.
partial: Logical, should the partial coherence be calculated. Set as FALSE by default.
Details
Given the evolutionary wavelet spectrum of a multivariate locally stationary time series, denoted by the matrix sequence Sj,k, then the coherence matrix for level j and location k is:
Rj,k=Dj,kSj,kDj,k
where Dj,k=diag{(Sj,k(p,p))−0.5:p=1,…,P}. This measures the linear cross-dependence between different channels at a particular level.
Notate the inverse spectrum matrix as Gj,k=Sj,k−1, then the partial coherence matrix for level j and location k is derived as follows:
Γj,k=−Hj,kGj,kHj,k
where Hj,k=diag{(Gj,k(p,p))−0.5:p=1,…,P}. This measures the coherence between channels after removing the linear effects if all other channels and so enable the distinction between direct and indirect linear dependency between channels.
For valid calculations of (partial) coherence, values within [-1,1], it is important that the spectral matrices are positive definite.
Returns
An object of class mvLSW, invisibly.
References
Taylor, S.A.C., Park, T.A. and Eckley, I. (2019) Multivariate locally stationary wavelet analysis with the mvLSW R package. Journal of statistical software 90 (11) pp. 1--16, doi: 10.18637/jss.v090.i11.
Park, T., Eckley, I. and Ombao, H.C. (2014) Estimating time-evolving partial coherence between signals via multivariate locally stationary wavelet processes. Signal Processing, IEEE Transactions on 62 (20) pp. 5240-5250.
See Also
as.mvLSW, mvEWS.
Examples
## Sample tri-variate time series## Series 2 & 3 are dependent indirectly via Series 1set.seed(100)X <- matrix(rnorm(3*2^8), ncol =3)X[1:192,2]<- X[1:192,2]+0.95* X[1:192,1]X[65:256,3]<- X[65:256,3]-0.95* X[65:256,1]X <- as.ts(X)## Evolutionary Wavelet SpectrumEWS <- mvEWS(X, filter.number =4, kernel.name ="daniell", kernel.param =20)## CoherenceRHO <- coherence(EWS, partial =FALSE)plot(RHO, style =2, info =1, ylab ="Coherence", diag =FALSE)## Partial CoherencePRHO <- coherence(EWS, partial =TRUE)plot(PRHO, style =2, info =1, ylab ="P. Coh.", diag =FALSE)#series 2&3 are closer to 0