White-Noise Significance Test of Modes
assessWhiteNoise.RdCompares the energy of each mode with reference bounds from a white-noise model at the mode's mean period (test of Wu and Huang).
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
NULLfor 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
rescalingModeis given.- period
The mean periods, in samples.
- lower, upper
The bounds at those periods.
- outside
Logical,
energy < lower | energy > upper.
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