# Determining the “whiteness” of noise

How does one quantify how "white" some noise is? Are there any statistical measures, or any other measures (FFTs for example) that can quantify how close to white noise a particular sample is?

-
Are you interested in suggestions on how to compare different noise sources/signals or are you looking for a "industry standard" metric that applies to the amount of "color" in a noise source? I am not aware of a general metric that applies, but you can compare the amount of coloration by looking at the noise power distribution in an FFT or PSD (flatter = whiter) or you can compare autocorrelation fucitons (narrower = flatter). – user2718 Jan 29 '13 at 13:44
If I understand you correctly you are looking for an automatic black box calculator of 'whiteness', correct? – Mohammad Jan 29 '13 at 15:31
+1 for computing the Power Spectral Density of the source. For the record, I would like to add that white noise can't be sampled in practice, as its PSD is flat in -∞ < f < ∞. – Serge Jan 29 '13 at 21:04
@Mohammad - Not necessarily a black box to calculate. I'm just curious if there's a mathematical estimator of whiteness. – Kitchi Jan 30 '13 at 6:21
@BruceZenone - For a real sample of data, as Serge pointed out, the PSD will never be completely flat, no? But I'm still guessing that the flatter it is, the closer it comes to being "true" white noise. – Kitchi Jan 30 '13 at 6:22

You could form a statistical test, based on the autocorrelation of the potentially-white sequence. The Digital Signal Processing Handbook suggests the following.

This may be implemented in scilab as below.

Running this function over two noise sequences: a white noise one, and a lightly filtered white noise one, then the following plot results. Script for generation of each realization of the noise sequences is at the end.

The mean of the statistic for the white noise is 9.79; the mean of the statistic for the filtered noise is 343.3.

Looking at a chi-squared table for 10 degrees of freedom, we get:

and we see that there is no significance level at which 9.79 (in the table) that the white noise isn't white. We also see that the value of 343.3 is very likely to be non-white (comparing it to the 31.42 value in the $p=0.0005$ significance column).

function R = whiteness_test(x,m)
N = length(x);
XC = xcorr(x);
len = length(XC);
lags = len/2+1 + [1:m];
R = N*sum(XC(lags).^2)/XC(len/2+1).^2;
endfunction


X = rand(1,1000,'normal');
Y = filter(1,[1 -0.5],X)
R = [R; whiteness_test(X,10)];
R2 = [R2; whiteness_test(Y,10)];

-

I would use the signal's autocorrelation properties or flatness of PSD to determine this. The autocorrelation of theoretical white noise is an impulse at lag 0. Furthermore, the PSD of the fourier transform of the autocorrelation function, the PSD of theoretical white noise is constant.

Either of these should give you a good idea of the whiteness of your noise.

-