Wavelet Analysis
Install the devtools package if you haven’t already.
install.packages("devtools")
To install the development package, type the following at the R command line:
devtools::install_github("fabnavarro/rwavelet")
library(rwavelet)
To install the CRAN version of the package, type the following:
install.packages("rwavelet")
- 1d, 2d and 3d MRA Forward/Inverse Wavelet Transforms Periodized Orthogonal (FWT_PO, IFWT_PO)
- 1d, 2d tensor Forward/Inverse Wavelet Transform Periodized Orthogonal (FTWT_PO, ITWT_PO)
- 1d, 2d Translation Invariant Forward/Inverse Wavelet Transform (FWT_TI, IWT_TI, also know as redundant wavelet transform, maximal overlap wavelet transform, undecimated wavelet transform or stationary wavelet transform)
- Linear wavelet estimation/approximation (using 2 fold cross validation, CVLinear)
- Non linear wavelet estimation/approximation (hard and soft thresholding, can be easily extended to other thresholding rules)
- 1d Wavelet Block Thresholding estimation/approximation
- …
To obtain the complete list of package functions, simply type
help(package = "rwavelet")
Here is an example of denoising of an experimental nuclear magnetic resonance (NMR) spectrum. We start by loading the data:
data("RaphNMR")
Y <- RaphNMR
n <- length(Y)
t <- seq(0, 1, length = n)
Then we specify the coarse decomposition scale
j0 <- 0
J <- log2(n)
qmf <- MakeONFilter('Symmlet', 6)
Ywd <- FWT_PO(Y, j0, qmf)
Ywnoise <- Ywd
We estimate
hatsigma <- MAD(Ywd[(2^(J-1)+1):2^J])
lambda <- sqrt(2*log(n))*hatsigma
Ywd[(2^(j0)+1):n] <- HardThresh(Ywd[(2^(j0)+1):n], lambda)
fhat <- IWT_PO(Ywd, j0, qmf)
Finally, we plot the resulting estimator:
par(mfrow=c(2,2), mgp = c(1.2, 0.5, 0), tcl = -0.2,
mar = .1 + c(2.5,2.5,1,1), oma = c(0,0,0,0))
plot(t,Y,xlab="", ylab="", main="Observations")
plot(t,Y,xlab="", ylab="", main="Observations and Estimator")
matlines(t, fhat, lwd=2, col="blue", lty=1)
plot(Ywnoise, ylim=c(-20, 20), xlab="", ylab="", main = "Noisy Coefficients")
matlines(rep(lambda, n), lwd=2,col="red",lty=1)
matlines(-rep(lambda, n), lwd=2,col="red",lty=1)
plot(Ywd, ylim=c(-20,20), xlab="", ylab="", main = "Estimated Coefficients")
See the package vignette or documentation for more details. You could also build and see the vignette associated with the package using the following lines of code
devtools::install_github("fabnavarro/rwavelet", build_vignettes = TRUE)
library(rwavelet)
Then, to view the vignette
vignette("rwaveletvignette")
citation("rwavelet")
#> To cite rwavelet in publications use:
#>
#> F. Navarro and C. Chesneau (2023). R package rwavelet: Wavelet
#> Analysis (Version 0.4.1.99999). Available from
#> https://github.com/fabnavarro/rwavelet
#>
#> A BibTeX entry for LaTeX users is
#>
#> @Manual{,
#> title = {R package {rwavelet}: Wavelet Analysis},
#> author = {F. Navarro and C. Chesneau},
#> year = {2023},
#> note = {(Version 0.4.1.99999)},
#> url = {https://github.com/fabnavarro/rwavelet},
#> }