Learn R Programming

randtoolbox (version 2.0.5)

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. tools:::Rd_expr_doi("10.1109/WSC.2001.977250")

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

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