GENERACIÓN DE NUMERO NUM ERO ALEA ALEATORIOS TORIOS GARCIA FERNANDEZ LEONARDO SILVA GUEVARA EDWIN TASAY ASAYCO CO ANTUCAR ANTUC AR POOL PO OL
Índice 1.-INTRODUCCIÓN 2.-GENENERACIÓN DE NÚMERO ALEATORIOS 2.1.-GENERADOR CONGRUENCIAL 2.2.-GENERACION CONGRUENCIAL ESTÁNDAR 2.3.-GENERACIÓN POR COMPUTADORA 3.-PRUEBAS DE CONFIABILIDAD 3.1.- CHI CUADRADO(χ 2) 3.2.- KOLMOGOROV-SMIRNOV (K-S) 4.-USO DE NÚMEROS ALEATORIOS PARA EVALUAR INTEGRALES
1.-INTRODUCCIÓN
Los números aleatorios son números elegidos al azar o sin seguir algún patrón o procedimiento; son útiles en diversas aplicaciones, entre las cuáles podemos mencionar: • Simulación o métodos de Monte Carlo • Muestreo
• Análisis Numérico • Programación
RESALTAR La disponibilidad de generadores de números aleatorios en muchos entornos y compiladores haría pensar que para un mero usuario de la Simulación no sería necesario estudiar estas cuestiones. Sin embargo, una lección que se deriva del estudio de algunos generadores comerciales es que debemos actuar con sumo cuidado con ellos (área de investigación bastante activa). Para verificar la confiabilidad de nuestra distribución existen métodos de contraste también ya estudiados para verificar estos.
2.-GENENERACIÓN DE NÚMERO ALEATORIOS Para la obtención de números aleatorios existen diversos métodos entre los cuales tenemos: - GENERADOR CONGRUENCIAL - GENERACION CONGRUENCIAL ESTANDAR - GENERACIÓN POR COMPUTADORA
2.1.-GENERADOR CONGRUENCIAL Los generadores más populares son probablemente los congruenciales debidos a Lehmer (1951). Siguen la fórmula de recursión: xn+1 = (a xn+ b) mod m, que proporciona números enteros en [0, m) pseudo aleatorios, para un multiplicador a, sesgo b, módulo m y semilla x 0. La utilización de la misma semilla llevará a la misma secuencia de números aleatorios (reproducibilidad y mutabilidad). Se convierten en números uniformes en [0,1) dividiendo por m, un= xn/ m Si b = 0, se denominan multiplicativos: xn+1 = (a xn) mod m, A pesar de su aparente simplicidad y previsibilidad, una selección cuidadosa de los parámetros (a, b, m) permite obtener de manera eficiente sucesiones de números suficientemente largas y aleatorias para muchos propósitos. Consideremos los generadores multiplicativos (b = 0):
Algunas observaciones son: a) Un generador congruencial tiene ciclos. b) La longitud del ciclo depende de la selección de los parámetros (comparar casos 1 y 3). c) Dentro de selecciones de parámetros que conducen a una misma longitud de ciclo, algunas salidas parecen más aleatorias que otras (comparar casos 1 y 2). d) La representación de los pares (x i, xi+1) sugiere que éstos se disponen en un número finito de hiperplanos. Trivialmente, el periodo máximo m se alcanza para a = b = 1. Además, cuando b = 0 (generador multiplicativo) el máximo periodo es m-1.
2.2.-GENERACION CONGRUENCIAL STANDAR Para una máquina con palabras de 32 bits(donde el primero es un bit de signo), Park y Miller (1988) proporcionó 3 criterios para elegir un generador multiplicativo de un mínimo estándar: 1) Ser de periodo máximo; 2) Que su salida parezca aleatoria; 3) Que se pueda implementar de forma eficiente en aritmética de 32 bits . Los generadores con m = presentan el inconveniente de la escasa aleatoriedad de los bits de menor orden. Elección en boga por la facilidad de implementación y por ser primo es m=2 31-1. Los 3 criterios limitan la elección de multiplicadores. El multiplicador que se ha convertido en estándar es el asociado a a=7 5=16807, 7 es una raíz primitiva de 231-1, por lo que se puede probar que el generador es de periodo máximo.
2
2.3.-GENERACIÓN POR COMPUTADORA
Los programas de computadora ocupan regularmente números aleatorios, especialmente para criptografía. Existen varios métodos en los que la deriva de reloj puede ser utilizada para construir generadores de números aleatorios. Se puede construir generadores de números aleatorios en hardware utilizando dos osciladores de cristal independientes que tengan diferente frecuencia, 100 oscilaciones por segundo y 1 millón, por ejemplo. El más rápido de los dos oscilará 10,000 veces por cada oscilación del más lento, sin embargo, existirá una variación debida a la deriva de reloj que se puede usar para producir bits aleatorios. Una forma sencilla sería escoger un 0 cuando el excedente es par y un 1 para un excedente impar. También se puede construir un generador de números aleatorios en software, para lo que se compara el reloj del sistema operativo (entre 100 –1000 pasos por segundo) y la velocidad del CPU. Si el tiempo de sistema y el CPU utilizan dos osciladores de cristal independientes la situación será muy similar al ejemplo anterior, en cambio, cuando utilizan el mismo oscilador de cristal el proceso (programa) que realiza las mediciones de la deriva de reloj es “perturbado” por
eventos impredecibles en el CPU como interrupciones y otros procesos y programas que se ejecutan al mismo tiempo, aún así el resultado será bastante bueno. Pueden ser considerados números pseudo aleatorios pero de cualquier modo satisfacen la mayoría de las necesidades en aplicaciones prácticas.
3.-PRUEBAS DE CONFIABILIDAD Son pruebas de hipótesis que permiten validar si la distribución de la frecuencia observada de conjunto de datos puede aproximarse a una distribución teórica dada. Las hipótesis que emplean estas pruebas son: - Chi Cuadrado (χ 2) - Kolmogorov-Smirnov (K-S)
3.1.- Chi Cuadrado (χ 2)
La prueba X 2 de Pearson es el más antiguo y válido para distribuciones continuas y discretas. Sin embargo, es poco potente, por lo que permite justificar el rechazo de una hipótesis, pero proporciona escaso soporte para su aceptación. Supongamos que tenemos una muestra x 1, x2,.., xn (n ≥ 25) de una población con función de distribución Fn (x) desconocida y deseamos contrastar la hipótesis H0: Fn(x)=F0(x), para todo x R, donde F 0(x) está completamente especificada (conocemos la distribución y los parámetros de la misma), frente a la alternativa H1: Fn(x) ≠ F0(x) para algún x. En nuestro caso, F 0(x) = U(0,1). a) Agrupamos los n datos en k clases mutuamente excluyentes, k ≥ 5, que cubran todo el rango posible de valores, siendo Oi la frecuencia observada en la clase i. b) Calculamos la frecuencia esperada E i, de la clase i de acuerdo con el modelo F0(x). Conociendo la probabilidad que asigna el modelo a la clase i tenemos Ei= n x pi c) Calculamos la dispersión entre las frecuencias observadas y las esperadas mediante el modelo F 0(x):
∈
=
que se distribuye aproximadamente como una X 2 cuando el modelo es correcto. d) Determinamos los grados de libertad: - Si el modelo especifica las probabilidades p i antes de tomar la muestra, entonces el número de grados de libertad es k – 1. - Si las pi se han calculado estimando r parámetros del modelo de máxima verosimilitud, entonces el número de grados de libertad es k – r – 1. e) Rechazamos el modelo cuando X 2 ≥ χ2α(k – r – 1) para un nivel de significación pequeño (0.05, 0.01, 0.001). En nuestro caso, para contrastar la uniformidad escogeremos k sub intervalos de [0,1] de la misma longitud, siendo p i= 1/k y, por lo tanto, Ei= n/k y r = 0, ya que no ha sido necesario estimar ningún parámetro de la distribución para obtener p i.
Ejemplo. Durante la segunda guerra mundial se dividió el mapa de Londres en cuadrículas de 1/4 km2 y se contabilizó el número de bombas caídas en cada cuadrícula durante un bombardeo alemán. Los resultados fueron: Cuadrícula 0 1 2 3 4 5 Frec. Impactos 229 211 93 35 7 1 Contrastar la hipótesis de que los datos siguen una distribución de Poisson. Solución. El número de clases es 6 y conocemos las frecuencias observadas. Para calcular las frecuencias esperadas necesitamos conocer la probabilidad de que un impacto se produzca en cada una de las clases. Dicha probabilidad toma la forma siguiente para una distribución de Poisson
− ! 535576 0.929
por lo tanto, necesitamos estimar un parámetro λ mediante el principio de máxima verosimilitud,
siendo r = 1. Hacemos
Obtenemos las frecuencias esperadas de las clases: E0=np0=227.5 E1=np1=211 E2=np2=98 E3=np3=30 E4=np4=7 E5=np5=1.5 La dispersión entre frecuencias observadas y esperadas es:
211211 ⋯ 1. 5 1 1.27 5 229227. 227.5 211 1
El número de grados de libertad es k – r – 1 = 4 y de la tabla de la χ2 obtenemos que χ20.25(4) = 1.92 y χ20.1(4) = 1.06 . Por lo tanto, χ20.25(4)> χ2(4)> χ20.1(4), no siendo α pequeño entonces aceptamos la
hipótesis.
3.2.- Kolmogorov-Smirnov (K-S)
: ()xx() ⋯xn 0, x ( ) ∈ →lim (() )() x x ⋯xn ≤≤n x , x 1
Es válido para distribuciones continuas, pero muy potente. Deseamos contrastar la hipótesis a) Ordenamos los valores muestrales de manera que b) Calculamos la función de distribución empírica de la muestra:
c) Calculamos la máxima discrepancia entre la función de distribución empírica y la teórica contrastada. Estadístico bilateral de K-S La distribución exacta de significación α.
está tabulada para valores seleccionados de n≤40 y del nivel de
Para muestras grandes, se utiliza la distribución asintótica de
, que viene dada, para todo z≥0, por
donde L(z) está tabulada y se comprueba que la aproximación es suficientemente buena para n ≥ 35.
Intuitivamente, esperamos que sea pequeño cuando la hipótesis nula es cierta. En nuestro caso particular de aleatoriedad, si designa al estadístico de orden, F0(xi)=xi y como Fn(xi)=i/n, resulta:
Ejemplo. Contrastar si la siguiente muestra de duraciones de vida puede suponerse exponencial: 16, 8, 10, 12, 6, 10, 20, 7, 2, 24. Ordenamos la muestra: 2, 6, 7, 8, 10, 10, 12, 16, 20, 24. Representamos la función empírica:
4.-Uso de los números aleatorios para evaluar integrales Un método usado es el de Monte Carlo, que consiste en una integración numérica, una aproximación a partir de números aleatorios. Supongamos que deseamos calcular , si se considera al conjunto de números como una aproximación una variable aleatoria uniforme ( ) en , entonces , se puede expresar de la siguiente manera indica la esperanza de siendo Si es que un conjunto de variables aleatorias uniformes e independientes, esto indicaría que serian variables independientes. Entonces: , esta relación seria más precisa cuando
() / ( 0 , 1 ) () () / (()) , , … . , , ,…. = ≈ () →∞ Si tenemos
−− →/() → ℎ( ) , ℎ ( ) () + → + − →0, →1;→∞, →0 − → 1(/) ( )() ℎ() , ℎ ( ) 1 ≈ = = Hacemos la siguiente sustitución
De manera análoga si se tiene la siguiente integral
Hacemos
,
Para una mejor aproximación de de la integral por el método de Monte Carlo Se debe tener en cuenta lo siguiente:
Donde indica el número de veces que se ha generado el conjunto de números aleatorios. Mientras sea más grande, la aproximación es más exacta.