SURE_MSEthresh: Stein's Unbiased Risk Estimate with MSE

View source: R/SURE_MSEthresh.R

SURE_MSEthreshR Documentation

Stein's Unbiased Risk Estimate with MSE

Description

Adaptive Threshold Selection Using Principle of SURE with the inclusion of Mean Squared Error (MSE) for comparison.

Usage

SURE_MSEthresh(
  wcn,
  wcf,
  thresh,
  diagWWt,
  beta = 2,
  sigma,
  hatsigma = NA,
  policy = "uniform",
  keepwc = TRUE
)

Arguments

wcn

Numeric vector of the noisy spectral graph wavelet coefficients.

wcf

Numeric vector of the true spectral graph wavelet coefficients.

thresh

Numeric vector of threshold values.

diagWWt

Numeric vector of weights typically derived from the diagonal elements of the wavelet frame matrix.

beta

A numeric value specifying the type of thresholding to be used, for example:

  • 1 for soft thresholding.

  • 2 for James-Stein thresholding.

sigma

A numeric value representing the standard deviation (sd) of the noise.

hatsigma

An optional numeric value providing an estimate of the noise standard deviation (default is NA).

policy

A character string determining the thresholding policy. Valid options include:

  • "uniform" for a global threshold applied uniformly across all coefficients.

  • "dependent" for threshold values that adaptively depend on the corresponding 'diagWWt' weights.

keepwc

A logical value determining if the thresholded wavelet coefficients should be returned (Default is TRUE).

Details

SURE_MSEthresh function extends the SUREthresh function by providing an MSE between the true coefficients and their thresholded versions for a given thresholding function h. This allows for a more comprehensive evaluation of the denoising quality in simulated scenarios where the true function is known.

Value

A list containing:

  • A dataframe with calculated MSE, SURE, and hatSURE values.

  • Minima of SURE, hatSURE, and MSE, and their corresponding optimal thresholds.

  • Thresholded wavelet coefficients (if keepwc = TRUE).

References

Donoho, D. L., & Johnstone, I. M. (1995). Adapting to unknown smoothness via wavelet shrinkage. Journal of the american statistical association, 90(432), 1200-1224.

de Loynes, B., Navarro, F., Olivier, B. (2021). Data-driven thresholding in denoising with Spectral Graph Wavelet Transform. Journal of Computational and Applied Mathematics, Vol. 389.

Stein, C. M. (1981). Estimation of the mean of a multivariate normal distribution. The annals of Statistics, 1135-1151.

See Also

SUREthresh, GVN, HPFVN

Examples

## Not run: 
# Compute the Laplacian matrix and its eigen-decomposition
L <- laplacian_mat(grid1$sA)
U <- eigensort(L)

# Compute the tight frame coefficients
tf <- tight_frame(U$evalues, U$evectors)

# Generate some noisy observation
n <- nrow(L)
f <- randsignal(0.01, 3, grid1$sA)
sigma <- 0.01
noise <- rnorm(n, sd = sigma)
tilde_f <- f + noise

# Compute the transform coefficients
wcn <- analysis(tilde_f, tf)
wcf <- analysis(f, tf)

# Compute the weights and use DJ trick for the SURE evaluation
diagWWt <- colSums(t(tf)^2)
thresh <- sort(abs(wcn))

# Compute to optimal threshold
opt_thresh_u <- SURE_MSEthresh(wcn,
                               wcf,
                               thresh,
                               diagWWt,
                               beta=2,
                               sigma,
                               NA,
                               policy = "uniform",
                               keepwc = TRUE)
# Extract corresponding wavelet coefficients
wc_oracle_u <- opt_thresh_u$wc[, opt_thresh_u$min["xminMSE"]]
wc_SURE_u <- opt_thresh_u$wc[, opt_thresh_u$min["xminSURE"]]

# Get the graph signal estimators
hatf_oracle_u <- synthesis(wc_oracle_u, tf)
hatf_SURE_u  <- synthesis(wc_SURE_u, tf)

# Compare the perfomance according to SNR measure
round(SNR(f, hatf_oracle_u), 2)
round(SNR(f, hatf_SURE_u), 2)

## End(Not run)


gasper documentation built on May 29, 2024, 8:32 a.m.