Learn R Programming

multiwave (version 1.0)

mww_wav_eval: multivariate wavelet Whittle estimation for data as wavelet coefficients

Description

Evaluates the multivariate wavelet Whittle criterion at a given long-memory parameter vector d for the already wavelet decomposed data.

Usage

mww_wav_eval(d, xwav, index, LU = NULL)

Arguments

d
vector of long-memory parameters (dimension should match dimension of x).
xwav
wavelet coefficients matrix (with scales in rows and variables in columns).
index
vector containing the largest index of each band, i.e. for $j>1$ the wavelet coefficients of scale $j$ are $\code{dwt}(k)$ for $k \in [\code{indmaxband}(j-1)+1,\code{indmaxband}(j)]$ and for $j=1$, $\code{dwt}(k)$ for $k \in [1,\code{indmaxband}(1)]$.
LU
bivariate vector (optional) containing L, the lowest resolution in wavelet decomposition U, the maximal resolution in wavelet decomposition. (Default values are set to L=1, and U=Jmax.)

Value

multivariate wavelet Whittle criterion.

Details

L is fixing the lower limit of wavelet scales. L can be increased to avoid finest frequencies that can be corrupted by the presence of high frequency phenomena.

U is fixing the upper limit of wavelet scales. U can be decreased when highest frequencies have to be discarded.

References

E. Moulines, F. Roueff, M. S. Taqqu (2009) A wavelet whittle estimator of the memory parameter of a nonstationary Gaussian time series. Annals of statistics, vol. 36, N. 4, pages 1925-1956

S. Achard, I. Gannaz (2014) Multivariate wavelet Whittle estimation in long-range dependence. arXiv, http://arxiv.org/abs/1412.0391

See Also

mww, mww_cov_eval,mww_wav,mww_eval,mww_wav_cov_eval

Examples

Run this code
### Simulation of ARFIMA(0,d,0)
rho <- 0.4
cov <- matrix(c(1,rho,rho,1),2,2)
d <- c(0.4,0.2)
J <- 9
N <- 2^J

resp <- varfima(N, d, cov_matrix=cov)
x <- resp$x
long_run_cov <- resp$long_run_cov

## wavelet coefficients definition
res_filter <- scaling_filter('Daubechies',8);
filter <- res_filter$h

LU <- c(2,11)

### wavelet decomposition

if(is.matrix(x)){
     N <- dim(x)[1]
     k <- dim(x)[2]
}else{
     N <- length(x)
     k <- 1
}
x <- as.matrix(x,dim=c(N,k))

     ## Wavelet decomposition
     xwav <- matrix(0,N,k)
     for(j in 1:k){
          xx <- x[,j]
             
          resw <- DWTexact(xx,filter)
          xwav_temp <- resw$dwt
          index <- resw$indmaxband
          Jmax <- resw$Jmax
          xwav[1:index[Jmax],j] <- xwav_temp;
     }
     ## we free some memory
     new_xwav <- matrix(0,min(index[Jmax],N),k)
     if(index[Jmax]<N){
          new_xwav[(1:(index[Jmax])),] <- xwav[(1:(index[Jmax])),]
     }
     xwav <- new_xwav
     index <- c(0,index)

res_mww <- mww_wav_eval(d,xwav,index,LU)
res_d <- optim(rep(0,k),mww_wav_eval,xwav=xwav,index=index,LU=LU,
          method='Nelder-Mead',lower=-Inf,upper=Inf)$par

Run the code above in your browser using DataLab