Fractional Gaussian Noise Test of Intrinsic Mode Functions
assessFractionalNoise.RdCompares the energy of each intrinsic mode function, from the second on, with the threshold that fractional Gaussian noise of a tabulated Hurst exponent gives at a tabulated level, with the first function as the noise scale.
Details
The energy of function \(k\) is \(W[k] = \sum_n c_k[n]^2\). From \(k = 2\) on, the reference energy is $$W_H[k] = \frac{W[1]}{\beta_H} \rho_H^{-2(1-H)k}, \quad \rho_H = 2.01 + 0.2 (H - 0.5) + 0.12 (H - 0.5)^2,$$ and the threshold is \(T_{H,p}[k] = W_H[k] \, 2^{2^{a_{H,p} k + b_{H,p}}}\), with \(\beta_H\), \(a_{H,p}\) and \(b_{H,p}\) of table 3.1 of Flandrin et al. (2005). A function lies outside when \(W[k] > T_{H,p}[k]\). The coefficients come from simulations of 10000 realizations of 2048 samples and are not interpolated to other exponents nor recalibrated for other lengths. The first function is taken to carry mainly noise; the function does not verify it.
The result is conditional on that noise model and calibration. Exceeding the threshold does not prove that a component is free of noise or identify its physical source.
Value
A list of vectors with one element per function:
- energy
The energies \(W[k]\).
- reference
The reference energies \(W_H[k]\),
NAfor the first function.- upper
The thresholds \(T_{H,p}[k]\),
NAfor the first function.- outside
Logical,
energy > upper,NAfor the first function.
Conditions
A first function of zero energy stops the function with an error of class
xemdZeroEnergy.
References
Flandrin, P., Gonçalvès, P. and Rilling, G. (2004). Detrending and denoising with empirical mode decompositions. EUSIPCO 2004, 1581–1584.
Flandrin, P., Gonçalvès, P. and Rilling, G. (2005). EMD equivalent filter banks, from interpretation to applications. In N. E. Huang and S. S. P. Shen (eds.), Hilbert-Huang Transform and Its Applications, World Scientific, 57–74.
Examples
Time <- seq_len(2048) / 1000
Tones <- cbind(cos(2 * pi * 2 * Time), 0.25 * cos(2 * pi * 24 * Time),
0.0625 * cos(2 * pi * 288 * Time))
assessFractionalNoise(Tones, hurst = 0.5, probability = 0.95)
#> $energy
#> [1] 1042.42601 64.07614 3.99863
#>
#> $reference
#> [1] NA 358.8593 178.5370
#>
#> $upper
#> [1] NA 458.4381 250.8722
#>
#> $outside
#> [1] NA FALSE FALSE
#>
# The third tone as the noise scale.
assessFractionalNoise(Tones[, c(3, 1, 2)], hurst = 0.5,
probability = 0.95)$outside
#> [1] NA TRUE TRUE