Simulación Computacional. Tema 1: Generación de números aleatorios

Texto completo

(1)

Tema 1: Generación de números aleatorios

Irene Tischer

Escuela de Ingeniería y Computación Universidad del Valle, Cali

(2)

Contenido

1. Secuencias pseudoaleatorias con distribución uniforme 2. Pruebas de bondad de generadores

(3)

1. Secuencias pseudoaleatorias con distribución uniforme

Justicación:

Uso en simulación de sistemas con componente estocástica

Uso en algoritmos probabilísticos (algoritmos genéticos, redes neuronales, ...)

Algoritmos probabilísticos son a veces la única manera viable de resolver problemas complejos

(4)

Números aleatorios

Si se habla de números aleatorios, generalmente se reere a observaciones provenientes de una variable aleatoria, con frecuencia con distribución uniforme en [0,1].

Apariencia de números aleatorias en sistemas naturales: Ruido blanco

Movimiento de esporas de helecho

Resultados del lanzamiento de un dado o una moneda...

Para usar números aleatorios en el computador, se debe hacer el experimento y copiar los datos al computador (existen grandes bases de datos de números aleatorios) o conectar el computador a un sistema externo con componente aleatorio.

(5)

Números pseudoaleatorios

Cada intento de generar datos aleatorios por computador resulta en números pseudoalea-torios

la máquina tiene un número nito de estados, en algún momento repite exactamente el estado y por eso se vuelve periódico

cada algoritmo de generación consiste de un conjunto nito de reglas, por eso el resultado es predecible

(6)

Problemas que se pueden presentar con el generador

Números aleatorios Números pseudoaleatorios

Son datos continuos Puede resultar en datos discretos

Siguen distribución uniforme

U(0,1) Si se divide el intervalo [0,1] en subintervalos igualespueden resultar intervalos donde caen signicativamen-te más o menos datos que el número esperado

media 1/2 media por encima o por debajo de 1/2

varianza 1/12 varianza por encima o por debajo de 1/12

Los datos son independientes: una observación no depende de las observaciones

anteriores

Se pueden presentar regularidades como: periodicidad

autocorrelación

patrones en cuanto a crecimiento

patrones en cuanto a valores encima o por de bajo del valor medio

(7)

Exigencias a un generador de números pseudoaleatorios

En cuanto a los datos generados:

el número de observaciones en un subintervalo depende solo de la longitud período largo

no hay regularidad En cuanto al algoritmo:

rápido (generalmente se necesitan muchos números) poca memoria requerida

(8)

Generador linear congruente

Denido por la relación de recurrencia

Xn+1 = (a · Xn + c)mod m; X0 : semilla

Rn = Xn

m

donde a se llama el multiplicador; c es el incremento y m el módulo.

Se tiene 0 Xn < m, por eso 0 Rn < 1.

Las características de un generador linear congruente dependen fuertemente de la selección

(9)

Ejemplo

X0 = 27, a = 17, c = 43, m = 100. n Xn Xn+1 = (a · Xn + c)mod 100 R = X m 0 27 (17 · 27 + 43)mod 100=502 mod 100=2 0.02 1 2 (17 · 2 + 43)mod 100=77 mod 100=77 0.77 2 77 (17 · 77 + 43)mod 100=1352 mod 100=52 0.52 3 52 (17 · 52 + 43)mod 100=927 mod 100=27 0.27 4 27 ...

Obviamente la recurrencia genera números entre 0 y 99, por eso, el período del generado

(10)

Ejercicio en clase

Generar números pseudoaleatorios usando un generador lineal congruente con

X0 = 5, a = 5, c = 13, m = 7.

(11)

Ejemplos

100 números aleatorios generados con diferentes generadores lineales congruentes

X0 = 5 a = 255 c = 100 m = 1032 2.5 5 7.5 10 12.5 15 17.5 20 X0 = 5 a = 255 c = 100 m = 1031 2.5 5 7.5 10 12.5 15 17.5 20

(12)

Ejemplos

Aplicando los mismos generadores para generar 10.000 números

X0 = 5 a = 255 c = 100 m = 1032 50 100 150 200 250 300 X0 = 5 a = 255 c = 100 m = 1031 50 100 150 200 250 300

(13)

Ejemplo: Un generador linear congruente bueno

a = 106 c = 1283 m = 6075 X0 = 5 20 40 60 80 100 120 Ventajas:

El generador parece dar números con distribución uniforme en [0,1] (luego se dispondrá de una prueba más cuantitativa). Para cualquier semilla genera todos los números (período

m = 6075).

Limitaciones:

Por su período relativamente pequeño, el ge-nerador sirve sólo si se requiere pocos números aleatorios.

Parece tener regularidades (luego veremos una

prueba de independencia), como se nota del 0.2

0.4 0.6 0.8 1

(14)

Algunas reglas para un buen generador

1. Seleccionar m muy grande (m limita el período), seleccionar c tal que c y m son primos

relativos.

2. Si se toma para m una potencia de 2 o un valor cercano a una potencia de 2, el cálculo

módulo es muy eciente por la representación binaria de los números en el computador. 3. Si m = 2b y c 6= 0 el período más largo posible es igual a m y se obtiene para c impar

y a = 1 + 4k para un entero k.

Si m = 2b y c = 0 el período más largo posible es igual a m/4 y se obtiene para X0

impar y a = ±3 + 8k para un entero k.

½De todas formas se deben realizar pruebas

(15)

El generador de estándar mínimo

Propuesto por Park y Miller (1988)

a = 75 = 16.807

c = 0

m = 231 1 = 2147'483.641

Como m es grande, tiene un período grande

(de hecho es m 1 = 231 2;

se usan todos los números del rango con excepción de 0)

No es perfecto, pero pasa la mayoría de las pruebas teóricas de aleatoriedad Requiere un procesamiento especial para no producir un overow

(16)

El generador de estándar mínimo: Desempeño

Se generaron 10.000 puntos con el generador de estándar mínimo. Histograma: 20 40 60 80 100 120

Histograma con valores centrados en 100, con varianza razonable

Plot de puntos generados:

2000 4000 6000 8000 10000 0.2 0.4 0.6 0.8 1

Plot de puntos generados sin regularida-des visibles

(17)

El generador de estándar mínimo: evitando overow:

Factorización aproximada de

m

La relación de recurrencia para generadores lineales congruentes

Xn+1 = (a · Xn)mod m; X0 : semilla

puede producir un overow si m se dene cercano a MAXINT.

Se evita el overow si se utiliza una factorización aproximada de m (Schrage, 1983):

m a · q + r

donde q = bm/ac; r = mmoda.

Ejemplos:

a = 10; m = 73 q = 7; r = 3; a · q + r = 73

(18)

El generador de estándar mínimo: cálculo modular con

factorización aproximada de

m

Aplicando la factorización aproximada y cálculo modular se puede hallar la recurrencia

Xn+1 = (a · Xn)mod m; X0 : semilla por (a · Xn)modm = ½ a · (Xnmodq r · bXn/qc si esto es 0 a · (Xnmodq r · bXn/qc + m si no

(19)

Ejemplos:

a = 10; m = 73 q = 7; r = 3;

para Xn = 72 se tiene (a · Xn)modm = 63; por el otro lado:

a · (Xn modq) r · bXn/qc = 10 · (72mod7) 3 · b72/7c =

10 · 2 3 · 10 = 10; y sumando m se obtiene 63

a = 75; m = 231 1 q = 127773; r = 2836;

para Xn =123'456.789 se tiene (a · Xn)modm = 4690049,721; por el otro lado:

(20)

El generador de estándar mínimo: Se evita overow

Para r < q; 0 < z < m 1 se puede mostrar:

0 a · (z modq) m 1 0 r · bz/qc ≤ m 1

Es decir, durante el cálculo nunca se pasa por encima de m..

Ejemplos:

a = 10; m = 73; q = 7; r = 3;

para z = 72 se tiene: a · (z modq) = 10 · (72mod7) = 10 · 2 = 20

a = 75; m = 231 1 q = 127773; r = 2836;

para z = 123'456.789 se tiene:

(21)

Conclusiones

1. De un buen generador de números aleatorios se espera: la generación de datos uniformes en [0,1]

con período grande

sin evidencia de regularidades

2. El generador de estándar mínimo tiene estas propiedades, y es por ende apropiado para situaciones donde se depende de la generación de muchos datos (ej.: algoritmos probabilísticos)

3. Para cualquier generador nuevo se deben realizar pruebas cuantitativas (estadísticas) para vericar que tiene estas propiedades.

(22)

2. Pruebas de bondad para un generador

Números aleatorios tienen la propiedad de uniformidad y de independencia. Los pseudo-aleatorios generados deben tener (estadísticamente) estas propiedades.

Pruebas de uniformidad Prueba χ2

Prueba de Kolmogorov - Smirnov Pruebas de independencia

Pruebas de corridas Pruebas de serie Pruebas de poker

(23)

Ejercicio en clase: Pruebas de uniformidad

El generador del ejemplo anterior (a = 106,

c = 1283, m = 6075), clasicado como

bueno pasa la pruebas uniformidad? frecuencia rango X0 = 5 X0 = 13 X0 = 112 0-0.1 91 98 99 0.1-0.2 102 107 92 0.2-0.3 113 87 90 0.3-0.4 110 112 98 0.4-0.5 87 99 101 0.5-0.6 95 97 105 0.6-0.7 98 118 99 0.7-0.8 104 75 94 0.8-0.9 117 98 105 0.9-1 83 109 117

El generador linear congruente con a =

106, c = 1283, m = 6075, X0 = 5

pasa la pruebas uniformidad? rango frecuencia 0-0.1 166 0.1-0.2 95 0.2-0.3 47 0.3-0.4 118 0.4-0.5 95 0.5-0.6 48 0.6-0.7 95 0.7-0.8 144 0.8-0.9 120 0.9-1 72

(24)

Solución (1)

1. Generador lineal congruente con a = 106, c = 1283, m = 6075, X0 = 5.

Prueba χ2 para un nivel de conanza de α = 0,05

rango F O F E (F E F O)2 F E 0-0.1 91 100 0.81 0.1-0.2 102 100 0.04 0.2-0.3 113 100 1.69 0.3-0.4 110 100 1.0 0.4-0.5 87 100 1.69 0.5-0.6 95 100 0.25 0.6-0.7 98 100 0.04 0.7-0.8 104 100 0.16 0.8-0.9 117 100 2.89 0.9-1 83 100 2.89 χ2calc 11.46 Grados de libertad gl:

Como no se usa los datos para estimar parámetros de la distribución, se tiene gl = 9.

El valor crítico de la χ2con 9 grados de libertad

con α = 0,05 es: χ2crit = 16,92

Decisión:

Como χ2calc χ2crit se acepta la hipótesis que los

datos tienen distribución U(0,1).

Conclusión:

(25)

Prueba Kolmogorov -Smirnov para un nivel de conanza de α = 0,05 rango F O F OA P OA P EA |P EA P OA| 0-0.1 91 91 0.091 0.1 0.009 0.1-0.2 102 193 0.193 0.2 0.007 0.2-0.3 113 306 0.306 0.3 0.006 0.3-0.4 110 416 0.416 0.4 0.016 0.4-0.5 87 503 0.503 0.5 0.003 0.5-0.6 95 598 0.598 0.6 0.002 0.6-0.7 98 696 0.696 0.7 0.004 0.7-0.8 104 800 0.800 0.8 0 0.8-0.9 117 917 0.917 0.9 0.017 0.9-1 83 1000 1 1 0 DMcalc 0.017 Grados de libertad gl = 999.

El valor crítico de la DM con 999 grados de libertad con α = 0,05 es:

DMcrit 1,36/

1000 = 0,043

(26)

Solución (2)

2. Generador lineal congruente con a = 106, c = 1283, m = 6075, X0 = 5.

Prueba χ2 para un nivel de conanza de α = 0,05

rango F O F E (F E F O)2 F E 0-0.1 166 100 43.56 0.1-0.2 95 100 0.25 0.2-0.3 47 100 28.09 0.3-0.4 118 100 3.24 0.4-0.5 95 100 0.25 0.5-0.6 48 100 27.04 0.6-0.7 95 100 0.25 0.7-0.8 144 100 19.36 0.8-0.9 120 100 4.00 0.9-1 72 100 7.84 χ2calc 133.88 Grados de libertad gl:

Como no se usa los datos para estimar parámetros de la distribución, se tiene gl = 9.

El valor crítico de la χ2con 9 grados de libertad

con α = 0,05 es: χ2crit = 16,92

Decisión:

Como χ2calc > χ2crit se rechaza la hipótesis que los

datos tienen distribución U(0,1).

Conclusión:

(27)

Prueba Kolmogorov -Smirnov para un nivel de conanza de α = 0,05 rango F O F OA P OA P EA |P EA P OA| 0-0.1 166 166 0.166 0.1 0.066 0.1-0.2 95 261 0.261 0.2 0.061 0.2-0.3 47 308 0.308 0.3 0.008 0.3-0.4 118 426 0.426 0.4 0.026 0.4-0.5 95 521 0.521 0.5 0.021 0.5-0.6 48 569 0.569 0.6 0.031 0.6-0.7 95 664 0.664 0.7 0.036 0.7-0.8 144 808 0.808 0.8 0.008 0.8-0.9 120 928 0.928 0.9 0.028 0.9-1 72 1000 1 1 0 DMcalc 0.066 Grados de libertad gl = 999.

El valor crítico de la DM con 999 grados de libertad con α = 0,05 es:

DMcrit 1,36/

1000 = 0,043

(28)

Pruebas de independencia

El diagrama de frecuencia de 100 pseudoaleatorios resulta en 10 datos en el intervalo

[0,0,1), 10 datos en [0,1,0,2), etc.

Entonces los números pasan las pruebas de uniformidad sin problema.

Pero si se revisa los datos especícos, se encuentra que los primeros 10 números están entre 0 y 0.1, los segundos 10 entre 0.1 y 0.2 etc.

Obviamente NO son aleatorios por falta de independencia.

Existen muchas pruebas para la independencia que analizan si hay estructura o regularidad en los datos.

(29)

Corridas

Una corrida es una sucesión de eventos similares. La longitud de una corrida es el número de eventos similares en la corrida.

Ejemplo:

Se lanza una moneda 10 veces, observando

C S S C C S S S C S Las corridas son los sucesiones de eventos C y de eventos S.

En el experimento obtenemos 6 corridas (3 corridas de longitud 1, 2 corridas de longitud 2 y 1 corrida de longitud 3).

El número de corridas es una variable aleatoria con distribución conocida (construido a partir del experimento Bernoulli)

(30)

Pruebas de corridas: Principio

A partir de una secuencia de números pseudoaleatorios, se construye una secuencia de eventos provenientes de un experimento Bernoulli.

Se determina el valor de la variable aleatoria número de corridas , que se obtiene con la secuencia de pseudoaleatorios (corridas observadas)

Dado que se conoce teóricamente esta variable aleatoria, se determina si el valor observado está suciente suciente cercano al a la media de esta variable aleatoria (dentro de un intervalo con alta signicancia)

Existen varias pruebas de corrida, por ejemplo:

respecto al crecimiento o decrecimiento observado en la secuencia de pseudoaleatorios respecto a obtener valores encima o por debajo de la media (1/2)

(31)

Pruebas de corridas: Ejemplo

Consideramos los datos

0.08 0.09 0.23 0.29 0.42 0.55 0.58 0.72 0.89 0.91 0.11 0.16 0.18 0.31 0.41 0.53 0.71 0.73 0.74 0.84 0.01 0.09 0.30 0.32 0.45 0.47 0.69 0.74 0.91 0.95 0.12 0.13 0.29 0.36 0.38 0.54 0.68 0.86 0.88 0.91 Son independientes?

Corridas respecto al crecimiento o decrecimiento: * + + + + + + + + +

- + + + + + + + + + - + + + + + + + + + - + + + + + + + + +

(32)

Desarrollo

Es poco probable que una secuencia de aleatorios tiene muchas o que tiene pocas corridas: El número mínimo de corridas es 1 (secuencia creciente)

El número máximo de corridas en una secuencia de N números es N 1 (cambia cada

vez)

Sea a la variable aleatoria que describe el número de corridas en una secuencia. Se conoce

teóricamente la media µa y la varianza σa2:

µa = 2N 1

3

σa2 = 16N 29 90

(33)

Si N > 20, la distribución de a se aproxima a la distribución normal N(µa, σa), es decir Z = a µa σa = a 2N31 q 16N29 90

sigue la distribución normal centralizado N(0,1).

Dado un nivel de signicancia α, se determinan los

valores críticos −Zα/2 y Zα/2.

Se determina el números de corridas observadas aobs

Se calcula Zobs = aobs µa σa -Z alfa 2 Zalfa 2 alfa 2 alfa 2

Si Zobs se encuentra en el intervalo [−Zα/2, Zα/2], no se puede rechazar la hipótesis que los datos

son independientes. Se tiene un indicio para independencia, pero sólo en el aspecto de la corridas.

(34)

Ejemplo (1)

Aplicar una prueba de corridas en cuanto a crecimiento-decrecimiento a la secuencia de los 40 datos siguientes para determinar si se puede rechazar la hipótesis de independencia (usando α = 0,05). Secuencia 0.41 0.68 0.89 0.94 0.74 0.91 0.55 0.62 0.36 0.27 0.19 0.72 0.75 0.08 0.54 0.02 0.01 0.36 0.16 0.28 0.18 0.01 0.95 0.69 0.18 0.47 0.23 0.32 0.82 0.53 0.31 0.42 0.73 0.04 0.83 0.45 0.13 0.57 0.63 0.29 Comportamiento de crecimiento-decrecimiento * + + + + + -- + + -- + -- -- + -- + + + + + + + + + + -Hay 26 corridas, es decir, aobs = 26.

µa = 2N31 = 2(40)3 1 = 26,33

σa2 = 16N9029 = 16(40)9029 = 6,79 ; por eso Zobs =

2626,33

6,79 = 0,13

El valor crítico es Z0,025 = ±1,96, es decir se obtiene Zobs [−Z0,025, Z0,025]

(35)

Ejemplo (2)

Aplicar la prueba de corridas a los datos del ejemplo introductorio: Secuencia 0.08 0.09 0.23 0.29 0.42 0.55 0.58 0.72 0.89 0.91 0.11 0.16 0.18 0.31 0.41 0.53 0.71 0.73 0.74 0.84 0.01 0.09 0.30 0.32 0.45 0.47 0.69 0.74 0.91 0.95 0.12 0.13 0.29 0.36 0.38 0.54 0.68 0.86 0.88 0.91 Comportamiento de crecimiento-decrecimiento * + + + + + + + + + - + + + + + + + + + - + + + + + + + + + - + + + + + + + + + Hay 7 corridas, por eso se obtiene Zobs = 7−√26,336,79 = 7,42.

Otra vez se tiene 40 datos, por eso µa y σa2 son los del ejemplo anterior.

Se encuentra Zobs < −Z0,025.

(36)

Prueba de serie

Supone que se tiene una secuencia de números aleatorios. Si se agrupa la secuencia en pares, los pares deben ser uniformes en I2. Si no son uniformes, los datos originales no son independientes.

Se hace una tabla de frecuencias dos dimensional, se contrasta con la uniforme bidimensional por una prueba χ2.

Conclusión: Si se acepta la hipótesis que los datos siguen una distribución normal, no hay evidencia para dependencia en los datos. En el otro caso se encontró dependencia en los datos.

(37)

Ejemplo

Se tiene 1200 datos pseudoaleatorios:

0.41 0.68 0.89 0.94 0.74 0.91 0.55 0.62 0.36 0.27 0.19 0.72 0.75 0.08 0.54 0.02 0.01 0.36 ... Se forman los 600 pares:

(0.41, 0.68), (0.89, 0.94), (0.74, 0.91), (0.55, 0.62), (0.36, 0.27), (0.19, 0.72) ... Tabla de frecuencias de 2 dimensiones:

0-0.2 0.2-0.4 0.4-0.6 0.6-0.8 0.8-1 0-0.2 18 30 20 21 25 0.2-0.4 30 21 26 18 31 0.4-0.6 22 19 22 32 25 0.6-0.8 29 26 24 17 22 0.8-1 25 26 21 27 23

La probabilidad teórica de cada celda es 1/25,

por eso la frecuencia esperada F E es 600/25= 24.

(38)

En la tabla se muestra el valor de (F EF E F O)2 0.2-0.4 0.4-0.6 0.6-0.8 0.8-1 0.8-1 0-0.2 1.5 1.5 0.67 0.38 0.04 0.2-0.4 1.5 0.38 0.17 1.5 2.04 0.4-0.6 0.17 1.04 0.17 2.67 0.04 0.6-0.8 1.04 0.17 0 2.04 0.17 0.8-1 0.04 0.17 0.38 0.38 0.04 Se obtiene χ2calc = 18,17

Grados de libertad gl: Como no se usa los datos para estimar parámetros de la

distribución, se tiene gl = 24.

El valor crítico de la χ2con 24 grados de libertad con α = 0,05 es: χ2crit = 36,42

Decisión: Como χ2calc χ2crit se acepta la hipótesis que los datos tienen distribución

uniforme bidimensional Conclusión:

(39)

Prueba de Poker

Se interpreta los n dígitos decimales de un número pseudoaleatorio como una mano de un

juego de cartas, que están numeradas de 0 a 9, teniendo n cartas de cada número. Si los

números son independientes, se deben obtener las mismas probabilidades como las teóricas en el juego.

Por ejemplo:

Sea n = 3.

Tenemos los eventos teóricos del juego:

3 cartas iguales probabilidad: 10/103 = 0,01

2 iguales, 1 diferente probabilidad: 10 · 9 · 3/103 = 0,27

3 diferentes probabilidad: 10 · 9 · 8/103 = 0,72

Con esto se puede calcular las frecuencias teóricas de N manos y contrastarlas con las

frecuencias observadas en los N números aleatorios por una prueba χ2.

Si se acepta la hipótesis que los datos observados siguen la distribución teórica, no se tiene evidencia de una dependencia en los números pseudoaleatorios.

(40)

Conclusión

1. Las pruebas principales para revisar la uniformidad de un generador son la prueba χ2

y la prueba de Kolmogorov-Smirnov (sirven generalmente para vericar si una variable aleatoria sigue una distribución potencial)

2. Existen muchas pruebas de independencia para poder excluir determinadas regula-ridades en los datos generados; cada prueba chequea un solo aspecto de una posible dependencia.

(41)

3. Secuencias con otras distribuciones

Principio:

Se generan pseudoaleatorios con distribución uniforme U(0,1);

luego se convierten para seguir la distribución deseada. Métodos:

Método de la transformada inversa Método de la convolución

(42)

Método de la transformada inversa

Idea:

Sea F la función de distribución acumulada de la distribución que se quiere generar.

Sea F(a) = r.

Sea pU([0, r]) la probabilidad del intervalo [0, r], suponiendo distribución la uniforme,

y pF((−∞, a]) la probabilidad del intervalo (−∞, a], suponiendo distribución deseada:

pU([0, r]) = pF((−∞, a]) = r

Es decir:

si ri es una secuencia de aleatorios U[0,1],

entonces

ai = F−1(ri) es una secuencia de números

que siguen la distribución deseada F.

a r

1

(43)

Método de la transformada inversa

para la distribución exponencial

La función de distribución acumulada de la distribución exponencial con parámetro λ está

dada por:

F(x) = 1 e−λx F(a) = r 1 e−λa = r a = F−1(r) = 1

λln (1 r)

Nota: Se puede simplicar la generación del dato exponencial, teniendo en cuenta que la secuencia de aleatorios (1 rn)n∈N tiene las mismas propiedades respecto a uniformidad

y independencia que la secuencia (rn)n∈N. Por eso se puede simplicar la generación del

dato exponencial por:

a = 1

λln r

(44)

Ejemplo:

Generar datos con distribución exponencial con

λ

= 1

,

5

Para r = 0,5520, se obtiene a = F−1(0,5520) = 1 1,5ln (0,5520) = 0,3961 r a 0.5520 0.3961 0.4881 0.4782 0.7512 0.1907 0.3124 0.7756 0.5696 0.3752 0.7238 0.2155 0.9438 0.0386

Diagrama de frecuencias de 100 números pseudoaleatorios con distribución exponencial

0.125 0.625 1.125 1.625 2.125 10

20 30

(45)

Método de la transformada inversa

para la distribución uniforme

U

(

A, B

)

La función de distribución acumulada de la distribución uniforme U(A, B) está dada por:

F(x) = x A

B A

F(a) = r Ba−AA = r a = F−1(r) = r(B A) + A

Es decir, simplemente se multiplica el aleatorio en [0,1] con la longitud B A y se suma

el punto inicial A de la uniforme U(A,B).

a = (B A)r + A

(46)

Ejemplo: Generar datos con distribución uniforme

U

(10

,

20)

Para r = 0,5520, se obtiene a = F−1(0,5520) = 0,5520 · 10 + 10 r a 0.5520 15.520 0.4881 14.881 0.7512 17.512 0.3124 13.124 0.5696 15.696 0.7238 17.238 0.9438 19.438

Diagrama de frecuencias de 100 números pseudoaleatorios con distribución U(10,20)

10.5 12.5 14.5 16.5 18.5 2 4 6 8 10 12 14

(47)

Método de la transformada inversa para la distribución

Normal estandarizada

N

(0

,

1)

La función de distribución acumulada de la normal FN(0,1)(x) = 1

R x

−∞ e−

1

2t2 dt ,

se tiene que determinar por integración numérica. Como resultado se obtiene una tabla de puntos, las valores intermedios se obtiene por interpolación lineal. A esta aproximación de la función de distribución acumulada se puede aplicar el método de la transformada inversa. Ejemplo: x F(x) -3 0.0013 -2 0.0228 -1 0.1586 0 0.5 1 0.8413 2 0.9772 3 0.9987

Método de la inversa transformada, aplicada

para la aproximación de F -2 -1 a 1 2 0.2 0.4 0.6 r 1

(48)

Método de la transformada inversa para la distribución

Normal estandarizada

N

(0

,

1)

(cont.)

Para r U(0,1) se busca en la tabla el intervalo [F(xk), F(xk+1)] que contiene r. r es combinación de las extremos del intervalo: r = λF(xk) + (1 λ)F(xk+1);

despejando λ se obtiene λ = F(xk+1)−r

F(xk+1)−F(xk).

a es la combinación correspondiente de xk y xk+1:

(49)

Ejemplo: Generar datos con distribución normal

N

(0

,

1)

Para r = 0,5520, se obtiene r [0,5520,0,8413]; λ = 0,84130,84130,55200,5 = 0,847642, por eso a = 0,847642 · 0 + (1 0,847642) · 1 =0.152359 r intervalo de r λ intervalo de a a 0.5520 [0,5520,0,8413] 0,847641 [0,1] 0.152359 0.4881 [0,1586,0,5] 0.0348667 [1,0] -0.0348667 0.7512 [0,5520,0,8413] 0.263991 [0,1] 0.736009 0.3124 [0,1586,0,5] 0.549663 [1,0] -0.549663 0.5696 [0,5520,0,8413] 0.796074 [0,1] 0.203926 0.7238 [0,5520,0,8413] 0.344272 [0,1] 0.655728 0.9438 [0,8413,0,9772] 0.245769 [1,2] 1.75423

(50)

Ejemplo: Generar datos con distribución normal

N

(0

,

1)

(cont.)

Diagrama de frecuencias de 100 números pseudoaleatorios con la distribución que aproximaN(0,1): -2.5 -1.5 -0.5 0.5 1.5 2.5 10 20 30 Notas:

Obsérvese que esta aproximación no es buena dado que se usa muy pocos puntos. Para aplicaciones prácticas se deberían usar mucho más puntos tabulados.

(51)

Generación de otras distribuciones normales a partir de la

normal centralizada

Si se tiene datos que siguen la distribución normal estandarizada, se pueden convertir a datos con distribución N(µ, σ), aplicando la transformación

aN(µ,σ) = aN(0,1) · σ + µ .

Ejemplo: Convertir los datos del ejemplo anterior a datos con distribución N(10,2) r aN(0,1) aN(10,2) 0.5520 0.152359 10.3047 0.4881 -0.0348667 9.93027 0.7512 0.736009 11.472 0.3124 -0.549663 8.90067 0.5696 0.203926 10.4079 0.7238 0.655728 11.3115 0.9438 1.75423 13.5085

(52)

Método de la transformada inversa para distribuciones

discretas

Aunque la función de distribución acumulada de una distribución discreta no tiene inversa, se puede aplicar un procedimiento parecido al método de la transformada inversa para generar distribuciones discretas.

Para la distribución discreta dada por sus valores y su probabilidad (vi, pi) se determina la

probabilidad acumulada:

valor probabilidad probabilidad

vi pi acumulada pai v1 p1 p1 v2 p2 P2 i=1 pi ... ... vn1 pn1 Pni=11 pi vn pn Pni=1 pi = 1 Para r U[0,1] se dene a = vi si r [pai−1, pai)

(53)

Ejemplo 1: una distribución discreta empírica

valor probabilidad probabilidad acumulada 1 0.2 0.2 5 0.1 0.3 8 0.5 0.8 10 0.2 1 Para r U[0,1] se dene: a =        1 si r < 0,2 5 si 0,2 r < 0,3 8 si 0,3 r < 0,8 10 si 0,8 r < 1 Por ejemplo: r a 0.5520 8 0.4881 8 0.7512 8 0.3124 5 0.5696 8 0.7238 8 0.9438 10

(54)

Ejemplo 2: la distribución Bernoulli

La generación de datos con distribución Bernoulli con parámetro p es muy sencillo y rápido: a =

½

éxito si r < p

fracaso en el otro caso

Ejemplo para p = 0,7 r a 0.5520 éxito 0.4881 éxito 0.7512 fracaso 0.3124 éxito 0.5696 éxito 0.7238 fracaso 0.9438 fracaso

(55)

Ejemplo 3: la distribución Binomial

El método de la inversa transformada para generar una binomial (n, p) es eciente, si n es

pequeño.

Ejemplo: n = 6, p = 0,7

Denición de las probabilidades, usando

p(i) = µ n i ¶ 0,7i0,3n−i, 0 i n

valor probabilidad probabilidad acumulada

0 0.000729 0.000729 1 0.010206 0.010935 2 0.059535 0.07047 3 0.18522 0.25569 4 0.324135 0.579825 5 0.302526 0.882351 6 0.117649 1 Datos a con distribución binomial (0,3,6): r a 0.5520 4 0.4881 4 0.7512 5 0.3124 4 0.5696 3 0.7238 5 0.9438 6

Nota: El método de convolución para generar la distribución binomial no requiere el

(56)

Método de convolución

Principio:

Se expresa la variable aleatoria con distribución deseada como función de otras con distribuciones que se generan fácilmente.

Se generan estas variables aleatorias y se aplica la función. El resultado es un valor de la variable aleatoria deseada.

(57)

Método de convolución para la distribución binomial

Dado un experimento Bernoulli con probabilidad de éxito p, la variable aleatoria X: número

de éxitos en n repeticiones del experimento Bernoulli sigue una distribución binomial con

parámetros p y n.

Es decir, generando n números con distribución Bernoulli, y contando el número de éxitos

se obtiene un número con distribución binomial.

Ejemplo: La binomial con parámetros p = 0,7; n = 6.

r1, r2, ..., r6 a

0.0530374 0.808378 0.903386 0.538051 0.875958 0.513395 3 0.932824 0.261447 0.879235 0.456081 0.851364 0.566246 3 0.926326 0.648505 0.0858267 0.603867 0.297316 0.126606 5 0.990079 0.367285 0.693317 0.125736 0.434217 0.300056 5

(58)

Método de convolución para la distribución normal

El promedio de n datos con igual distribución cualquiera tiende a una distribución normal

(teorema central de límite). El método de convolución usa este teorema para generar datos normalmente distribuidos con promedio de datos U[0,1].

La distribución uniforme U[0,1] tiene media 1/2 y varianza 1/12, por eso: la suma de 12

datos U[0,1] tiene media 6 y varianza 1, por eso

a = Ã 12 X i=1 ri ! 6 N[0,1] Ejemplo: r1, r2, ..., r12 a 0.0530374 0.808378 0.903386 0.538051 0.875958 0.513395 0.932824 0.261447 0.879235 0.456081 0.851364 0.566246 1.6394 0.926326 0.648505 0.0858267 0.603867 0.297316 0.126606 0.990079 0.367285 0.693317 0.125736 0.434217 0.300056 -0.400863

(59)

Método de rechazo y aceptación para la distribución

Poisson

La distribución Poisson está denida para los enteros 0 por: p(i) = e−αα

i

i! , es decir,

no se pueden tabular las probabilidades discretas. Por eso se vuelve sumamente lento un método de de transformada inversa.

En su vez, se usa la relación entre la distribución Poisson y Exponencial: Si el tiempo entre

llegadas sigue una distribución exponencial con parámetro α, entonces la probabilidad de

obtener i llegadas en un intervalo de tiempo de longitud 1 sigue una distribución Poisson

con parámetro α.

Entonces: para generar un número de llegadas de acuerdo con la probabilidad Poisson, se generan y suman la cantidad necesaria de números con distribución exponencial hasta pasar por el intervalo unitario.

(60)

Ejemplo: Generación de la distribución Poisson con

α

= 2

r tiempo entre llegadas tiempo de llegada n (Poisson)

0.5520 2.97104 2.97104 0 0.4881 0.358617 0.358617 0.7512 0.143062 0.501679 0.3124 0.581735 1.08341 2 0.5696 0.28141 0.28141 0.7238 0.16162 0.443031 0.9438 0.0289205 0.471951 0.9725 0.0139426 0.485894 0.2739 0.647496 1.13339 4 0.4004 0.457646 0.457646 0.7213 0.16335 0.620996 0.0031 2.88818 3.50917 2

(61)

Para calcular más ecientemente se usa que la exponencial con parámetro α se genera por a = α1ln(r); r U{0,1]

Se busca n tal que tal que

α1 (ln(r1) + ln(r2) + ... + ln(rn)) 1 < α1 (ln(r1) + ln(r2) + ... + ln(rn+1))

ln(r1) + ln(r2) + ... + ln(rn) ≥ −α > ln(r1) + ln(r2) + ... + ln(rn+1)

ln(r1 · r2 · ... · rn) ≥ −α > ln(r1 · r2 · ... · rn+1)

r1 · r2 · ... · rn e−α > r1 · r2 · ... · rn+1

Algoritmo (generación de números con distribución Poisson):

A e−α; n 0; R 1;

while R A

R R · random[0,1]; n++ (random[0,1] llama generador de uniforme)

(62)

Conclusión

1. Basado en un generador de aleatorios uniformes en [0,1] se pueden generar datos que siguen otras distribuciones de probabilidad.

2. Se aplican procesos especícos de transformación de los datos uniformes generados, apoyándose en conceptos generales estadísticos.

3. Por ende, la calidad de las distribuciones generadas depende de la calidad del generador original. Otra vez se recomienda el generador de estándar mínimo.

4. Para vericar si la distribución generada por este procedimiento es la deseada, se puede

aplicar una prueba χ2 o de Kolmogorov-Smirnov (reemplazando FE y PEA resp. por los

Figure

Actualización...

Referencias

Actualización...

Related subjects :