5. Avantaje, limitări și controverse

Avantaje

  • Unic în suită: singurul test în domeniul frecvenței; detectează periodicități globale pe care testele din domeniul timpului le pot rata.
  • Intuiție clară: „vârf spectral peste prag”.
  • Practic la scară mare: cu o transformată O(nlogn)O(n\log n), milioane de biți în fracțiuni de secundă.

Controversa 1: documentația își contrazice propriul cod

Documentația NIST (§2.6.8) afirmă, pentru exemplul de 100 de biți, N1=46N_1 = 46 și p=0.168669p = 0.168669. Dar o transformată Fourier corectăN1=48N_1 = 48 și p=0.646355p = 0.646355. Nu e o eroare a implementării noastre: am compilat și rulat codul de referință NIST original (FFT-ul __ogg_fdrfftf) și acesta dă tot 4848; verificarea cu numpy confirmă.

Exemplul NIST 46 vs 48

Reproducerea valorii documentate ar necesita un prag sensibil mai mic decât cel specificat: două vârfuri de la limită (S[23]=16.81|S[23]| = 16.81, S[40]=17.20|S[40]| = 17.20) se află sub pragul corect T=17.31T = 17.31 (deci numărate, N1=48N_1 = 48), dar ar fi excluse de un prag cu 5%\approx 5\% mai mic (16.48\approx 16.48), caz în care N1=46N_1 = 46. Numărătoarea este foarte sensibilă la valoarea exactă a pragului, iar valoarea documentată 4646 nu corespunde pragului specificat - de aici nevoia de o corecție principială a parametrilor, în spiritul celei propuse de autorii care au studiat testul (controversele de mai jos). Vezi demonstrația interactivă.

Controversa 2: distribuția de referință nu a fost dedusă, ci estimată

Kim, Umeno și Hasegawa (2004) și Hamano (2005) au arătat că distribuția de referință nu a fost dedusă matematic, ci estimată numeric rulând un PRNG presupus „bun” - un raționament circular. Drept urmare, pragul a fost corectat de la 3n\sqrt{3n} la valoarea exactă ln(20)n\sqrt{\ln(20)\,n}, dar varianța a rămas.

Controversa 3: varianța de normalizare

Factorul n4\tfrac{n}{4} (jumătate din varianța binomială) ține cont de dependența spectrală indusă de Parseval, dar nu exact:

  • Pareschi, Rovatti și Setti (2012) au arătat că o constantă c3.8c \approx 3.8 (în loc de 44) se potrivește mai bine, iar rata reală de respingere diferă de cea nominală;
  • lucrări ulterioare au derivat varianța corectă din teorema lui Parseval și au arătat că dd nu urmează exact N(0,1)\mathcal{N}(0,1).

Simularea noastră confirmă: Var(d)1.056\operatorname{Var}(d) \approx 1.056, în acord cu 4/3.81.054/3.8 \approx 1.05; rata de respingere urcă la 0.012\approx 0.012.

Alte limitări

  • Bug istoric în codul original (citire în afara limitelor: X[n]), corectat ulterior.
  • Alegerea componentelor (DC inclus, Nyquist exclus) e o convenție subtilă; multe reimplementări o inversează și obțin alt N1N_1.
  • Componentele de capăt: vârful unei periodicități de perioadă 2 cade pe Nyquist (exclus); secvența e totuși respinsă, dar indirect.
  • Testele de nivel 2 (proporție/uniformitate) au putere redusă; au fost propuse variante mai fiabile.

Concluzie

Testul spectral are o calitate reală - este singurul din suită care privește secvența în domeniul frecvenței - dar trebuie folosit cu rezerve: distribuția de referință nu a fost dedusă analitic, exemplul din documentație contrazice codul, iar varianța e doar aproximativ corectă. În practică: folosit alături de alte teste, nu izolat, cu verdictul interpretat ținând cont de abaterea sistematică măsurată. Vezi referințele pentru sursele complete.