Learn R Programming

randtoolbox (version 2.0.2)

freq.test: the Frequency test

Description

The Frequency test for testing random number generators.

Usage

freq.test(u, seq = 0:15, echo = TRUE)

Value

a list with the following components :

statistic the value of the chi-squared statistic.

p.value the p-value of the test.

observed the observed counts.

expected the expected counts under the null hypothesis.

residuals the Pearson residuals, (observed - expected) / sqrt(expected).

Arguments

u

sample of random numbers in ]0,1[.

echo

logical to plot detailed results, default TRUE

seq

a vector of contiguous integers, default 0:15.

Author

Christophe Dutang.

Details

We consider a vector u, realisation of i.i.d. uniform random variables \(U_1, \dots, U_n\).

The frequency test works on a serie seq of ordered contiguous integers (\(s_1,\dots,s_d\)), where \(s_j\in Z\!\!Z\). From the sample u, we compute observed integers as $$d_i = \lfloor u_i * ( s_d + 1 ) + s_1 \rfloor, $$ (i.e. \(d_i\) are uniformely distributed in \(\{s_1,\dots,s_d\}\)). The expected number of integers equals to \(j\) is \(m= \frac{1}{s_d - s_1+1}\times n\). Finally, the chi-squared statistic is $$ S = \sum_{j=1}^d \frac{(card(d_i=s_j) - m)^2}{m}. $$

References

Planchet F., Jacquemin J. (2003), L'utilisation de methodes de simulation en assurance. Bulletin Francais d'Actuariat, vol. 6, 11, 3-69. (available online)

L'Ecuyer P. (2001), Software for uniform random number generation distinguishing the good and the bad. Proceedings of the 2001 Winter Simulation Conference. (available online)

L'Ecuyer P. (2007), Test U01: a C library for empirical testing of random number generators. ACM Trans. on Mathematical Software 33(4), 22.

See Also

other tests of this package gap.test, serial.test, poker.test, order.test and coll.test

ks.test for the Kolmogorov Smirnov test and acf for the autocorrelation function.

Examples

Run this code
# (1) 
#
freq.test(runif(1000))
print( freq.test( runif(10000), echo=FALSE) )

# (2) 
#
freq.test(runif(1000), 1:4)

freq.test(runif(1000), 10:40)

Run the code above in your browser using DataLab