Skip to contents

Compares the energy of each mode with reference bounds from a white-noise model at the mode's mean period (test of Wu and Huang).

Usage

assessWhiteNoise(modes, probabilities, bound, rescalingMode)

Arguments

modes

Finite numeric matrix, samples by modes. The caller supplies the components of a normalized signal; see Details for the assumptions of the reference distribution.

probabilities

Two numbers \(0 < p_- < p_+ < 1\), the probabilities of the lower and upper bounds. No default; PyEMD uses \(\alpha = 0.95\), that is \((1 \mp \alpha)/2\).

bound

"gaussian", the line of the logarithmic quantile, or "chiSquare", the quantile of the energy. No default; PyEMD has only the gaussian bound.

rescalingMode

NULL for the test without rescaling, or the index \(r\) of the column whose energy is placed on its upper bound. No default; PyEMD rescales on the first component.

Details

The energy of mode \(k\) is \(E_k = \sum_n c_k[n]^2 / N\) and its mean period \(T_k\) is \(N\) divided by its number of maxima, or \(N\) without maxima. The bound of probability \(p\) is, with "gaussian" and \(z_p\) the standard normal quantile, $$\ln E_p = -\ln T + z_p \sqrt{2/N}\, T^{1/2},$$ and with "chiSquare" \(E_p = q(p; r) / N\), the chi-square quantile with \(r = N / T\) degrees of freedom. With rescalingMode = r, the energy of component \(r\) is placed on its upper bound and every other energy is multiplied by \(E_{p_+}(T_r) / E_r\). A mode lies outside when its energy is below the lower bound or above the upper one.

The reference distribution is conditional on the noise model, normalization and EMD procedure. Interpreting the rescaled test assumes that the component selected by rescalingMode is dominated by noise; its mode index does not establish that assumption. Exceeding a bound does not identify a physical source or prove that a component is free of noise. A white-noise interpretation of an acceleration record does not transfer unchanged to modes of its integrated displacement.

Value

A list of vectors with one element per mode:

energy

The energies, rescaled when rescalingMode is given.

period

The mean periods, in samples.

lower, upper

The bounds at those periods.

outside

Logical, energy < lower | energy > upper.

Conditions

A column of zero energy stops the function with an error of class xemdZeroEnergy.

Examples

Time <- seq(0, 9, length.out = 3000)
Signal <- sin(pi * Time) + sin(2 * pi * Time) + sin(6 * pi * Time) +
    0.5 * Time
# The four summands of the signal, divided by its population deviation.
Summands <- cbind(sin(pi * Time), sin(2 * pi * Time), sin(6 * pi * Time),
                  0.5 * Time) / sqrt(mean((Signal - mean(Signal))^2))
assessWhiteNoise(Summands, probabilities = c(0.025, 0.975),
                 bound = "gaussian", rescalingMode = NULL)$outside
#> [1] TRUE TRUE TRUE TRUE
assessWhiteNoise(Summands, probabilities = c(0.025, 0.975),
                 bound = "chiSquare", rescalingMode = 1)$outside
#> [1] FALSE FALSE  TRUE  TRUE