Pruebas de Numeros Aleatorios - Moshe.
Pruebas de Numeros Aleatorios - Moshe.
Pruebas de Numeros Aleatorios - Moshe.
Es importante asegurarse de que el generador usado produzca una secuencia suficientemente aleatoria.
Para esto se somete el generador a pruebas estadísticas. Si no pasa una prueba, podemos asumir que el
generador es malo. Pasar una prueba es una condición necesaria pero no suficiente. Un generador puede
pasar una prueba y luego no pasarla si se usa otra semilla u otro segmento del ciclo.
Describiremos pruebas para números aleatorios uniformemente distribuidos, aunque muchas de las
pruebas también pueden ser usadas para probar variables aleatorias.
Lo primero en la prueba de un generador, es graficar y observar las distribuciones de un histograma y la
frecuencia acumulada. Para el generador programado anteriormente (el cual usaremos para ilustrar todas las
pruebas):
xn = 75 xn −1 mod (2 31 − 1)
y usando x0 = 1, se obtiene la siguiente tabla de frecuencias, el histograma, y gráfico de la frecuencias
acumuladas, a partir de una secuencia de 200 de números aleatorios:
Tabla de Frecuencias
<.05 <.10 <.15 <.20 <.25 <.30 <.35 <.40 <.45 <.50 <.55 <.60 <.65 <.70 <.75 <.80 <.85 <.90 <.95 <1.0
10 11 11 8 9 11 6 10 10 15 12 8 8 12 8 9 12 8 13 9
0,100
0,090
0,080
0,070
0,060
0,050
0,040
0,030
0,020
0,010
0,000
0,05 0,15 0,25 0,35 0,45 0,55 0,65 0,75 0,85 0,95
Intervalo (<)
0,9 00
0,8 00
0,7 00
0,6 00
0,5 00
0,4 00
0,3 00
0,2 00
0,1 00
0,0 00
0 ,0 5 0 ,1 0 ,1 5 0 ,2 0,2 5 0 ,3 0 ,3 5 0 ,4 0,4 5 0 ,5 0 ,5 5 0,6 0 ,65 0 ,7 0 ,7 5 0,8 0 ,85 0 ,9 0 ,9 5 1
Intervalo (<)
I. PRUEBA DE CHI-CUADRADO
Esta es la prueba más comúnmente usada. En general, puede ser usada para cualquier distribución. A
partir de un histograma, se comparan las frecuencias observadas con las frecuencias obtenidas de la
distribución específica (frecuencias esperadas). Si el histograma tiene k celdas o intervalos, y Oi y Ei son las
frecuencias observadas y esperadas respectivamente para la i-esima celda, la prueba consiste en calcular
k
(Oi − Ei ) 2
χ 02 = ∑
i =1 Ei
Si el ajuste es exacto, χ 02 es cero, pero por aleatoriedad no lo será. Se puede demostrar que χ 02 tiene
distribución chi-cuadrado con k-1 grados de libertad. Se aceptara que los datos tienen la distribución en
prueba con un nivel de significancia de α * si χ 02 < χ [2α ; k −1] .
Para los datos anteriores, todas las frecuencias esperadas son de 200/20= 10. El valor de χ 02 es 8,80 y la
χ [20.10 ; 19 ] = 27,2; por lo tanto no hay evidencia de que los números no son uniformes a un nivel de α=0.10.
Estrictamente hablando, la prueba de chi-cuadrado esta diseñada para distribuciones discretas y para
muestras grandes. Para distribuciones continuas la chi-cuadrado es solo una aproximación y el nivel de
significación se aplica solo si n → ∞. Para muestras finitas el nivel de significación es algo menor. Si en un
caso particular una celda contiene menos de 5 observaciones esperadas, diversos autores recomiendan que se
combinen celdas adyacentes a fin de que cada celda tenga al menos 5 observaciones esperadas. Uno de los
problemas de esta prueba es la selección de los límites de las celdas. Esto puede afectar las conclusiones y no
hay reglas exactas para seleccionar su tamaño. Para darnos cuenta de la situación, consideremos los dos
histogramas siguientes, ambos construidos a partir de los mismos datos. En el de la izquierda difícilmente se
puede llegar a la conclusión de que los datos provienen de una población uniforme. Si vamos al de la
derecha, en donde tenemos los mismos datos pero reagrupados, la historia es otra y en este caso no tenemos
dudas de la uniformidad; la prueba de chi-cuadrado da un ajuste perfecto.
30
20
10
a1 b1 a2 b2 a3 b3 b1 b2 b3
*
Recordemos que α es la probabilidad de cometer Error de Tipo I: rechazar H0 cuando es verdadera.
Notese que para el ejemplo anterior con 200 observaciones, el número de intervalos debería estar
entre 200 y 200 o entre 15 y 40. Hay 20 intervalos, asi que se estra dentro del rango sugerido.
5
Otro problema es el hecho de que la frecuencia esperada esta dividiendo, lo que implica que errores en
celdas con frecuencias esperadas pequeñas afectan más el valor de χ 02 que errores en celdas con frecuencias
esperadas grandes.
La prueba K-S nos permite decidir si una muestra de n observaciones es de una distribución continua
particular. Se basa en que la diferencia entre la FDA (Función de Distribución Acumulada) observada Sn(x) y
la FDA esperada FX(x) debe ser pequeña. Sn(x) viene dada por:
número de observaciones ≤ x
S n ( x) =
n
Los símbolos D+ y D- son usados para denotar las desviaciones observadas máximas sobre y bajo la FDA
esperada en una muestra de tamaño n:
D + = max[ S n ( x ) − FX ( x)] D − = max[ FX ( x ) − S n ( x )]
x x
D+ mide la desviación máxima cuando la FDA observada esta sobre la FDA esperada, y D- mide la
desviación máxima cuando la FDA observada esta bajo la FDA esperada. Si los valores de D+ y D- son
menores que D[1-α;n] entonces se dice que las observaciones provienen de la distribución respectiva con un
nivel de significación de α.
Un error común calculando D- consiste en encontrar el máximo de FX(xj)- Sn(xj). Esto es incorrecto ya que
Sn consiste de un segmento horizontal a Sn(xj) en el intervalo [xj , xj+1 ) y el máximo ocurre justo antes de
j/n FX(x)=x
+
D
xj
D-
(j-1)/n
Sn(x)
xj-1 xj
Ejemplo
Para el generador que hemos venido usando, una muestra de tamaño 30 partiendo de x0 = 1 es:
0.000008, 0.131538, 0.755605, 0.458650, 0.532767, 0.218959, 0.047045, 0.678865,
de donde obtenemos los siguientes valores: D+ = 0.14137 y D- = 0.08342. D[0.1 ; 30] = 0.22 y por lo
tanto decimos que no hay evidencia de que los números no sean uniformes.
La prueba K-S esta diseñada para distribuciones continuas, muestras pequeñas, y usas todas las
observaciones sin hacer agrupaciones haciendo mejor uso de los datos que la chi-cuadrado.
Un método para probar si hay dependencia entre dos variables es calculando su covarianza. Si esta es
distinta de cero, entonces son dependientes. En inverso no es cierto; si la covarianza es cero no implica que
sean independientes.
Dada una secuencia de números aleatorios uniformes entre 0 y 1 ( U(0,1) ), se puede calcular la
covarianza entre números k-distantes, es decir, entre xi y xi+k . Esto es llamado autocovarianza con
desplazamiento k denotada como Rk y dada por:
1 n−k ⎛ 1⎞ ⎛ 1⎞
Rk = ∑ ⎜Ui − ⎟ ⎜Ui + k − ⎟
n − k i =1 ⎝ 2⎠ ⎝ 2⎠
Si este intervalo no incluye el cero, podemos decir que la secuencia tiene correlación significativa. Esto se
aplica solo para k ≥ 1. Si k = 0, R0 es la varianza de la muestra que se espera sea 1/12 para una secuencia
independiente idénticamente distribuida (IID) de U(0,1).
Ejemplo
Para la muestra anterior con 10000 números:
Todos los intervalos incluyen el cero y podemos asumir todas las covarianzas como
estadísticamente no significativas al nivel de confianza α=0.05 o Z0.975=1.958
En las pruebas anteriores, si la muestra es muy pequeña, los resultados son locales y no se aplican a todo
el ciclo (no son globales). Similarmente, resultados globales pueden que no se apliquen localmente ya que
puede haber muy poca aleatoriedad en ciertos segmentos del ciclo.
Para resolver este problema se propone usar pruebas de dos niveles. Por ejemplo, usar chi-cuadrado en n
muestras de tamaño k y después usar chi-cuadrado en las n chi-cuadrados obtenidas. Similarmente se puede
hacer con la prueba K-S.
Usando pruebas de este tipo se han encontrado segmentos “no aleatorios” en secuencias que de otra forma
son aleatorias.
Las pruebas anteriores aseguran uniformidad en una dimensión. El concepto de uniformidad puede ser
extendido a k dimensiones.
Supongamos que un es el n-esimo número en una secuencia distribuida uniformemente entre 0 y 1. Dados
dos números reales a1 y b1 , también entre 0 y 1 y tal que b1 > a1 , la probabilidad de que un este en el
intervalo [a1 , b1 ) es b1 - a1 :
P ( a1 ≤ un < b1 ) = b1 − a1 ∀b1 > a1
Esta es la propiedad 1-distributiva de un .
La 2-distributividad es una generalización de esta propiedad en dos dimensiones y requiere que un par de
valores un-1 y un satisfagan la siguiente condición:
P ( a1 ≤ un − 1 < b1 y a 2 ≤ un < b2 ) = (b1 − a1 )(b2 − a 2 ) ∀b1 > a1 y ∀b2 − a 2
Note que una secuencia k-distributiva es (k-1)-distributiva, pero el inverso no es cierto. Una secuencia
puede ser uniforme en una dimensión inferior y no en una superior. Dado un grupo de generadores, es
preferible aquel que produzca más uniformidad en la mayor dimensión. A continuación veremos una forma
de chequear k-distributividad: prueba serial.
Antes de conducir estas pruebas, es conveniente chequear si la secuencia es uniforme en dos dimensiones
graficando pares solapados sucesivos: (xn-1 , xn ), (xn , xn+1 ).
Esta prueba es usada para probar uniformidad en dos o más dimensiones. En dos dimensiones, se divide el
espacio entre 0 y 1 en K2 celdas de igual área. Si tenemos una muestra de tamaño n, podemos construir n/2
pares no solapados (x1 , x2 ), (x3 , x4 ), ..., y contar los puntos que caen en cada celda. Idealmente se esperan
Ejemplo:
Para el generador ejemplo, usando una muestra de tamaño 500, y dividiendo en 52 = 25 celdas
que dan 250 pares no solapados, obtenemos:
1
0.8
0.6
Xn+1
0.4
0.2
0
0 0.2 0.4 0.6 0.8 1
Xn
11 12 10 11 7
8 10 13 9 8
9 11 13 21 10
7 14 10 6 8
10 9 8 6 9
Con 250 pares esperamos 10 observaciones por celda. El valor de χ 02 es 23,2 y la χ [20.10 ; 24 ] = 33,2;
por lo tanto aceptamos que los números son uniformes en dos dimensiones a un nivel de α=0.10.
No se deben usar pares solapados. Si se usan pares solapados, el número de puntos por celda no es
independiente y no se puede usar la prueba chi-cuadrado. La dependencia entre números sucesivos aparece
como no-uniformidad en dimensiones más grandes. Por ejemplo, si números sucesivos tienen correlación de
primer orden negativa, es muy probable un valor alto xn sea seguido de un valor bajo xn+1 . Si graficamos
los pares no solapados, los puntos tienden a concentrarse derecha-y-abajo e izquierda-y-arriba y no se pasará
la prueba.
0.00001 0.00770 0.03457 0.04704 0.04746 0.05346 0.06684 0.09196 0.13154 0.21896
0.26245 0.32823 0.36534 0.38342 0.38350 0.41600 0.41749 0.45865 0.51942 0.52693
0.52970 0.53277 0.58898 0.63264 0.65392 0.67115 0.67886 0.67930 0.68677 0.70119
0.73608 0.75561 0.75641 0.76220 0.83097 0.84617 0.91032 0.93044 0.93469 0.99104
difícilmente se puede decir que esta secuencia es aleatoria (los número están ordenados), sin embargo, pasan
las pruebas de uniformidad chi-cuadrado y Kolmogorov-Smirnov:
Para la prueba chi-cuadrado tenemos las siguientes frecuencias observadas y esperadas:
Intervalo Oi Ei
0.000<= x <0.200 9 8
0.200<= x <0.400 6 8
0.400<= x <0.600 8 8
0.600<= x <0.800 11 8
0.800<= x <1.000 6 8
Total: 40 40
Una racha creciente es aquella en que un número esta seguido por un número mayor, mientras que en la
decreciente un número esta seguido por un número menor. Consideremos la siguiente secuencia, que
proviene del generador que hemos usado de ejemplo y que si los ordenamos da la secuencia al comienzo de
la sección:
0.00001 0.13154 0.75561 0.45865 0.53277 0.21896 0.04704 0.67886 0.67930 0.93469
0.38350 0.51942 0.83097 0.03457 0.05346 0.52970 0.67115 0.00770 0.38342 0.06684
0.41749 0.68677 0.58898 0.93044 0.84617 0.52693 0.09196 0.65392 0.41600 0.70119
0.91032 0.76220 0.26245 0.04746 0.73608 0.32823 0.63264 0.75641 0.99104 0.36534
+ + - + + + - + - +
+ - + - - - + - + +
- - - + - + + + -
Sea N (N>20) la longitud de la secuencia y a el número de rachas en la misma, si los números
efectivamente son aleatorios, a se distribuye normalmente y:
2N − 1 16 N − 29 a − μa
μa = , σ a2 = , Z0 = ~ N (0,1)
3 90 σa
Nótese que el número máximo de rachas es N-1 (con el último número de la secuencia no se puede decidir a
que tipo de racha pertenece por ser precisamente el último), mientras que el mínimo es 1.
Para nuestro ejemplo a = 24, μ a = 26 .33, σ a2 = 6.79, Z 0 = −0.896 , Z 0.05 = 1.645 y por lo tanto no
rechazamos la hipótesis de independencia.
Una racha bajo la media es aquella en que el número es menor o igual a 0.5 (la media de la uniforme),
mientras que es sobre si el número es mayor a 0.5. Consideremos la misma secuencia anterior y si usamos
signos más y menos para identificar si un número esta sobre o bajo la media, tenemos:
- - + - + - - + + +
- + + - - + + - - -
- + + + + + - + - +
+ + - - + - + + + -
Sean n1 y n2 la cantidad de números sobre y debajo de la media respectivamente, N = n1 + n2 la longitud
de la secuencia y b el número de rachas en la misma, si los números efectivamente son aleatorios y n1 o n2 es
mayor que 20, b se distribuye normalmente y:
No es importante solamente el tipo de rachas que se tiene, sino también cuanto es su longitud. Muchas
rachas muy pequeñas o rachas muy largas producen serias sospechas. Sea Yi la cantidad de rachas de
longitud i en una secuencia de N números.
Para una secuencia independiente de rachas crecientes/decrecientes los valores esperados de Yi están
dados por:
E (Yi ) =
2
[
(i + 3)!
]
N (i 2 + 3i + 1) − (i 3 + 3i 2 − i − 4) si i ≤ N − 2
2
E (Yi ) = si i = N − 1
N!
Para las rachas sobre y bajo la media tenemos:
Nwi
E (Yi ) =
E(I )
i i
⎛ n ⎞ ⎛ n ⎞ ⎛ n ⎞⎛ n ⎞
wi = ⎜ 1 ⎟ ⎜ 2 ⎟ + ⎜ 1 ⎟⎜ 2 ⎟
⎝ N ⎠ ⎝ N ⎠ ⎝ N ⎠⎝ N ⎠
n n
E(I ) = 1 + 2
n2 n1
N
E ( A) =
E(I )
Donde wi es la probabilidad aproximada de que una racha tenga longitud i, E(I) es la longitud promedio
esperada de las rachas y E(A) es el número esperado aproximado de rachas (de cualquier longitud) en la
secuencia.
Con esto podemos aplicar la prueba de chi-cuadrado usando
(Oi − E (Yi )) 2
L
χ =∑
2
0
i =1 E (Yi )
donde L = N-1 para rachas creciente/decrecientes y L = N para rachas sobre/bajo la media. Comparamos y se
acepta que los datos son independientes sí, con un nivel de significancia de α, χ 02 < χ [2α ; L −1] .
y como la última clase tiene un valor esperado menor que 5 la agrupamos con la segunda. Obsérvese que no
hay rachas de longitud mayor que 3, por lo tanto la frecuencia esperada de la clase “≥ 3” se calcula como (μa
- 16.750 - 7.100). Reagrupando da:
y nuevamente hay que reagrupar intervalos dado que tenemos frecuencias esperadas menores a 5. También,
dado que no hay rachas de longitud mayor que 5, la frecuencia esperada de la clase “≥ 5” se calcula como
(E(A) – suma de las frecuencias esperadas anteriores). Reagrupando da:
Nuestros 40 números aleatorios del generador xn = 75 xn −1 mod (2 31 − 1) con x0 = 1 pasan todas las
pruebas, inclusive la de autocorrelación serial:
VIII.PRUEBA DE BRECHAS
Se usa para determinar si los intervalos (brechas) entre la ocurrencia del mismo digito son o no aleatorios.
El siguiente ejemplo ilustra las berchas asociadas al digito 3.
4, 1, 3, 5, 1, 7, 2, 8, 2, 0, 7, 9, 1, 3, 5, 2, 7, 9, 4, 1, 6, 3
3, 9, 6, 3, 4, 8, 2, 3, 1, 9, 4, 4, 6, 8, 4, 1, 3, 8, 9, 5, 5, 7
3, 9, 5, 9, 8, 5, 3, 2, 2, 3, 7, 4, 7, 0, 3, 6, 3, 5, 9, 9, 5, 5
5, 0, 4, 6, 8, 0, 4, 7, 0, 3, 3, 0, 9, 5, 7, 9, 5, 1, 6, 6, 3, 8
8, 8, 9, 2, 9, 1, 8, 5, 4, 4, 5, 0, 2, 3, 9, 7, 1, 2, 0, 3, 6, 3
Hay dieciocho 3 y por lo tanto tenemos 17 brechas asociadas a este digito. La primera brecha tiene una
longitud de 10 y su probabilidad, asumiendo independencia, viene dada por:
P(brecha de 10) = P(no3)P(no3)P(no3)P(no3)P(no3)P(no3)P(no3)P(no3)P(no3)P(no3)P(3) = (0.9)10(0.1)
Para aplicar la prueba a números aleatorios asociamos los digitos 0, 1, … a los intervalos [0, 0.1), [0.1,
0.2), …
Para el ejemplo anterior con 110 números, tenemos 100 brechas (los números menos la cantidad de
digitos distintos) y podemos comparar la distribución observada contra la teórica usando la prueba de
Kolmogorov-Smirnov. Para α=0.05, tenemos que el valor crítico es:
1.36
D0.05 = = 0.136
100
De la tabla observamos que la diferencia maxima entre la distribución observada (S(x)) y la teorica (F(x))
es 0.0224 que es inferior al valor critico (0.136) por lo que no podemos rechazar la hipótesis de
independencia de los digitos.
Esta es una prueba de independencia basada en la frecuencia con que ciertos digitos se repiten en una
serie de números. Su nombre se debe al popular juego de cartas Poker. Consideremos la siguiente serie de
números con una repetición inusal de digitos:
0.255, 0.577, 0.331, 0.414, 0.828, 0.909, 0.033, 0.010
En cada caso aparecen uno de los tres digitos repetido y las posibilidades para este caso son:
• Los tres digitos distintos
• Los tres digitos iguales
• Un par de digitos iguales
y las probabilidades asociadas son:
P(todos distintos) = P(segundo distinto del primero)P(tercero distnto del segundo) = (0.9)(0.8) = 0.72
P(todos iguales) = P(segundo igual al primero)P(tercero igual al segundo) = (0.1)(0.1) = 0.01
P(un par) = 1 – 0.72 – 0.01 = 0.27
Supongamos una secuencia de 1000 números aleatorios en donde se analizan los tres primeros digitos y se
tiene que 680 tienen los 3 digitos distintos, 289 contienen exactamente un par y 31 tienen todos iguales. Los
calculos respectivos usando la prueba Chi-Cuadrado son:
Observamos que 47.66 > χ 02.05; 2 = 5.99 y por lo tanto rtechazamos la hipótesis de independencia de los
números.
Esta prueba se puede extender a más digitos pero a su vez las posibilidades aumentan y olos calculos se
complican. Por ejemplo, para 5 digitos, podriamos tener, todos iguales, todos distintos, exactamente un par,
exactamente un trio, un trio y un par, dos pares, etc.