threshold.wst {wavethresh} | R Documentation |
Threshold (NDWT) packet-ordered non-decimated wavelet decomposition object
Description
This function provides various ways to threshold a wst
class object
Usage
## S3 method for class 'wst'
threshold(wst, levels = 3:(nlevelsWT(wst) - 1), dev = madmad, policy =
"universal", value = 0, by.level = FALSE, type = "soft", verbose
= FALSE, return.threshold = FALSE, cvtol = 0.01, cvnorm = l2norm,
add.history = TRUE, ...)
Arguments
wst |
The packet ordered non-decimated wavelet decomposition object that you wish to threshold. |
levels |
a vector of integers which determines which scale levels are thresholded in the decomposition. Each integer in the vector must refer to a valid level in the |
dev |
this argument supplies the function to be used to compute the spread of the absolute values coefficients. The function supplied must return a value of spread on the variance scale (i.e. not standard deviation) such as the |
policy |
selects the technique by which the threshold value is selected. Each policy corresponds to a method in the literature. At present the different policies are: " |
value |
This argument conveys the user supplied threshold. If the |
by.level |
If FALSE then a global threshold is computed on and applied to all scale levels defined in |
type |
determines the type of thresholding this can be " |
verbose |
if TRUE then the function prints out informative messages as it progresses. |
return.threshold |
If this option is TRUE then the actual value of the threshold is returned. If this option is FALSE then a thresholded version of the input is returned. |
cvtol |
Parameter for the cross-validation " |
cvnorm |
A function to compute the distance between two vectors. Two useful possibilities are |
add.history |
If |
... |
any other arguments |
Details
This function thresholds or shrinks wavelet coefficients stored in a wst
object and returns the coefficients in a modified wst
object. The thresholding step is an essential component of denoising using the packet-ordered non-decimated wavelet transform
. If the denoising is carried out using the AvBasis
basis averaging technique then this software is an implementation of the Coifman and Donoho translation-invariant (TI) denoising. (Although it is the denoising technique which is translation invariant, not the packet ordered non-decimated transform, which is translation equivariant). However, the threshold.wst
algorithm can be used in other denoising techniques in conjunction with the basis selection and inversion functions MaNoVe
and InvBasis
.
The basic idea of thresholding is very simple. In a signal plus noise model the wavelet transform of signal is very sparse, the wavelet transform of noise is not (in particular, if the noise is iid Gaussian then so if the noise contained in the wavelet coefficients). Thus since the signal gets concentrated in the wavelet coefficients and the noise remains "spread" out it is "easy" to separate the signal from noise by keeping large coefficients (which correspond to signal) and delete the small ones (which correspond to noise). However, one has to have some idea of the noise level (computed using the dev option in threshold functions). If the noise level is very large then it is possible, as usual, that no signal "sticks up" above the noise.
Many of the pragmatic comments for successful thresholding given in the help for threshold.wd
hold true here: after all non-decimated wavelet transforms are merely organized collections of standard (decimated) discrete wavelet transforms. We reproduce some of the issues relevant to thresholding wst
objects.
Some issues to watch for:
- levels
The default of
levels = 3:(nlevelsWT(wd) - 1)
for thelevels
option most certainly does not work globally for all data problems and situations. The level at which thresholding begins (i.e. the given threshold and finer scale wavelets) is called theprimary resolution
and is unique to a particular problem. In some ways choice of the primary resolution is very similar to choosing the bandwidth in kernel regression albeit on a logarithmic scale. See Hall and Patil, (1995) and Hall and Nason (1997) for more information. For each data problem you need to work out which is the best primary resolution. This can be done by gaining experience at what works best, or using prior knowledge. It is possible to "automatically" choose a "best" primary resolution using cross-validation (but not yet in WaveThresh).Secondly the levels argument computes and applies the threshold at the levels specified in the
levels
argument. It does this for all the levels specified. Sometimes, in wavelet shrinkage, the threshold is computed using only the finest scale coefficients (or more precisely the estimate of the overall noise level). If you want your threshold variance estimate only to use the finest scale coefficients (e.g. with universal thresholding) then you will have to apply thethreshold.wd
function twice. Once (with levels set equal tonlevelsWT
(wd)-1 and withreturn.threshold=TRUE
to return the threshold computed on the finest scale and then apply the threshold function with themanual
option supplying the value of the previously computed threshold as thevalue
options.- by.level
for a
wd
object which has come from data with noise that is correlated then you should have a threshold computed for each resolution level. See the paper by Johnstone and Silverman, 1997.
Value
An object of class wst
. This object contains the thresholded wavelet coefficients. Note that if the return.threshold
option is set to TRUE then the threshold values will be returned rather than the thresholded object.
RELEASE
Version 3.6 Copyright Guy Nason 1997
Note
This section gives a brief description of the different thresholding policies available. For further details see the associated papers. If there is no paper available then a small description is provided here. More than one policy may be good for problem, so experiment! Some of the policies here were specifically adapted to the This section gives a brief description of the different thresholding policies available. For further details see the associated papers. If there is no paper available then a small description is provided here. More than one policy may be good for problem, so experiment! Some of the policies here were specifically adapted to the wst.object
but some weren't so beware. They are arranged here in alphabetical order:
- cv
See Nason, 1996.
- LSuniversal
See Nason, von Sachs and Kroisandt, 1998. This is used for smoothing of a wavelet periodogram and shouldn't be used generally.
- manual
specify a user supplied threshold using
value
to pass the value of the threshold. Thevalue
argument should be a vector. If it is of length 1 then it is replicated to be the same length as thelevels
vector, otherwise it is repeated as many times as is necessary to be the levels vector's length. In this way, different thresholds can be supplied for different levels. Note that theby.level
option has no effect with this policy.- sure
See Donoho and Johnstone, 1994 and Johnstone and Silverman, 1997.
- universal
See Donoho and Johnstone, 1995.
Author(s)
G P Nason
See Also
AvBasis
, AvBasis.wst
, InvBasis
, InvBasis.wst
, MaNoVe
,MaNoVe.wst
, wst
, wst.object
, threshold
.