Está en la página 1de 16

Generacin de variables aleatorias

Introduccin Mtodos de generacin: Transformada Inversa Aceptacin-Rechazo Composicin Convolucin Referencias

Lenguajes de simulacin

2006-2007

Generacin de variables aleatorias. Introduccin


De forma general, el proceso de simulacin necesita la generacin de datos semejantes a los que se producen en la realidad, lo que precisa la posibilidad de generar variables aleatorias de varias distribuciones, por ejemplo la exponencial. El algoritmo concreto a utilizar depender de la distribucin a generar, pero de forma general tendr las siguientes etapas:
Generar uno a ms nmeros aleatorios U(0,1) Transformacin dependiente de la distribucin Obtener X de la distribucin deseada

Caractersticas deseables: Exacto, si es posible (existen mtodos aproximados). Eficiente: Poco almacenamiento, rpido, robusto. Sencillo, fcil de comprender y de implementar. Que precise solo nmeros U(0,1) y, si es posible un nmero genere una variable.
Lenguajes de simulacin 2006-2007

Algunas distribuciones utilizadas

Lenguajes de simulacin

2006-2007

Mtodo de la transformada inversa (I)


Teorema: Sea {F(z), a z b} una funcin de distribucin con funcin de distribucin inversa F-1(u):=inf{z[a,b]: F(z) u, 0 u 1} Sea U una variable aleatoria de U(0,1). Entonces Z=F-1(U) tiene la funcin de distribucin F. Prueba: Pr(Z z) = Pr(F-1(U) z) = Pr (U F(z)) = F(z) Algoritmo 1. Generar un U aleatorio de U(0,1) 2. Z F-1(U) 3. Devolver Z requiere la posibilidad de evaluar F-1(U)

Lenguajes de simulacin

2006-2007

Mtodo de la transformada inversa (II)

Lenguajes de simulacin

2006-2007

Mtodo de la transformada inversa (ejemplo 1)


Consideremos el caso de generar variables aleatorias con una funcion densidad f(x) = 2x, 0 x 1 Solucin: F(x) =

2tdt
0

=x ,0x1
2

Ahora hacemos F(x) = U ==>

U=x
-1

A continuacin, se obtiene x, ==> x = F (U) = U, 0 U 1 Por tanto, se pueden obtener valores de x con pdf f(x) = 2x calculando la raiz cuadrada de un nmero aleatorio U.

Lenguajes de simulacin

2006-2007

Mtodo de la transformada inversa (ejemplo 2)


Sea el caso de generar variables aleatorias x con funcin densidad:

e x f(x) = 0
Solucin:

0x x<0

1 e x F ( x) = f(t) dt = 0
x

0x x<0

Se hace F(x) = U Se busca la solucin para x, ==> 1 - e-x = U e-x = 1 - U - x = ln(1 - U) x = - {ln(1 - U)} / o - {ln(U)} /
Lenguajes de simulacin 2006-2007

Mtodo de la transformada inversa (ejemplo 3)


Distribucin Weibull buena para modelar el tiempo para fallo de mquinas, componentes, etc. pdf:

{ / f ( x) =

} x 1 e ( x / ) , x 0 0 , otherwise

Ten en cuenta que a es el parmetro de forma y b el parmetro de escala. Ahora, para generar variables Weibull: Step 1. Step 2. Step 3.

F ( x) = 1 e 1 e ( x / ) = U
cdf:

( x / )

x0

X = [-ln(1-U)] 1/ or X = [-ln(U)] 1/ Nota: La funcin densidad f(x) de una variable aleatoria continua se puede interpretar como la oportunidad relativa de observar variables en diferentes partes del rango.
Lenguajes de simulacin 2006-2007

Mtodo de la transformada inversa (ejemplo 3)


Distribucin Weibull (continuacin). En las regiones del eje x en las que f(x) es alto, se espera observar una gran cantidad de variables y en aquellas en las que f(x) es baja encontraremos solo unas pocas. Se puede considerar f(x) como la funcin pendiente de F en x.

Intervalos para U y X, transformada inversa de una distribucin Weibull(1.5, 6)


Lenguajes de simulacin 2006-2007

Mtodo de la transformada inversa (ejemplo 4)


Distribucin Uniforme Consideremos una variable aleatoria x que est distribuida uniformemente en el intervalo [a, b]

1 /(b a) pdf: f(x) = 0

axb en el resto de los casos

Para generar variables aleatorias: Paso 1. 0

F(x) = ( x a ) /(b a ) 1

x<a axb x>b

Paso 2. Paso 3.
Lenguajes de simulacin

F(x) = (x - a) / (b - a) = U x = a + (b - a) U
2006-2007

Mtodo de la transformada inversa (Datos discretos)


Si el modelador ha sido incapaz de encontrar una distribucin terica que proporcione un buen modelo para los datos de entrada, puede ser necesario utilizar una distribucin de datos emprica. Ejemplo: Supongamos que se han recogido los tiempos de reparacin de 100 aparatos estropeados. Los datos se resumen en la tabla siguiente en funcin del nmero de observaciones de los distintos intervalos. Por ejemplo, hubo 31 observaciones entre 0 y 0.5 hora, 10 entre 0.5 y 1 hora, y as sucesivamente. Intervalo Frecuencia Frecuencia (Horas) Frecuencia Relativa acumulada

0 x 0.5 0.5 x 1.0 1.0 x 1.5 1.5 x 2.0

31 10 25 34

0.31 0.10 0.25 0.34

0.31 0.41 0.66 1.00

La distribucin verdadera, F(x), de tiempos de reparacin (la curva en la siguiente transparencia) se puede estimar mediante la cdf emprica, F(x)(la parte lineal a trozos)
Lenguajes de simulacin 2006-2007

Mtodo de la transformada inversa (Datos discretos)

Funciones de distribucin emprica y terica para los datos de los tiempos de reparacin (X 0)

Lenguajes de simulacin

2006-2007

Mtodo de la transformada inversa (Datos discretos)


La tcnica de la transformada inversa se aplica directamente para generar variables de tiempo de reparacin, X. Recordando la interpretacin grfica de la tcnica, primero se genera un nmero aleatorio R1, por ejemplo R1 = 0.83, y se obtiene X1 del grfico anterior. De forma simblica esto se escribe como X1 = F-1(R1) pero algebraicamente, puesto que R1 est entre 0.66 y 1.00, X1 se calcula mediante una interpolacin lineal entre 1.5 y 2.0, es decir X1 = 1.5 + {(R1 - 0.66) / (1 - 0.66)} (2.0 - 1.5) = 1.75 Cuando R1 = 0.83, se puede apreciar que (R1 - 0.66) / (1 - 0.66) = 0.5, por lo que X1 estar a la distancia mitad entre 1.5 y 2.0 ya que R1 est a la distancia mitad entre 0.66 y 1.00 El algoritmo es: Paso 1. Generar R Paso 2. Encontrar el intervalo i en el que cae R, es decir, encontrar i de forma que ri R ri+1 Paso 3. Calcular X mediante X = xi + ai (R - ri)
Lenguajes de simulacin 2006-2007

Mtodo de la transformada inversa (Datos discretos)


Si los valores de origen son discretos no se realiza interpolacin. Ejemplo: Consideremos el tamao de los paquetes de una red que puede tomar los valores siguientes: Tamao (bytes) Probabilidad Probabilidad acumulada 64 0,7 0,7 128 0,1 0,8 512 0,2 1,0 La funcin de distribucin acumulada y la inversa estn dadas por:

0 ,0 0 ,7 F ( x) = 0 ,8 1, 0

0 x 64 64 x 128 128 x 512 512 x

0 u 0,7 64 F 1 ( u ) = 128 0,7 u 0,8 512 0,8 u 1

Lenguajes de simulacin

2006-2007

Caso de la distribucin normal (I)


Distribucin Normal Estndar
( x) =

1 t 2 2 dt , - < x < *e ( 2 )
x

Eje Z2 (Z1,Z2) Z2 Z1 0 Eje Z1

Z1 = B cos Z2 = B sin Se sabe que B2 = Z12 + Z22 tiene una distribucin chi-cuadrado de dos grados de libertad, lo que es equivalente a una distribucin exponencial de media 2, por tanto el radio B se puede obtener mediante
B 2 = (2 ln U ) B = (2 ln U )
1 2

Representacin polar de un par de variables de una distribucin normal estndar

Lenguajes de simulacin

2006-2007

Caso de la distribucin normal (II)


Por simetra con la distribucin normal, parece razonable suponer que el ngulo est distribuido uniformemente entre 0 y 2 radianes. Adems, el radio, B, y el ngulo, , son mutuamente independientes. Combinando las dos ecuaciones anteriores se obtiene un mtodo directo de generar dos variables de la distribucin normal estndar, Z1 y Z2, a partir de dos nmeros aleatorios U1 and U2: Z1 = (-2lnU1)1/2 cos(2 U2) Z2 = (-2lnU1)1/2 sin(2 U2) Para obtener variables normales Xi con media y varianza 2 se aplica Xi = + Zi Ejemplo, supongamos que se han obtenido dos nmeros aleatorios U1=0,1758 y U2=0,1489, las variables aleatorias de la normal estndar generadas son: Z1 = (-2ln 0,1758)1/2 cos(2 0,1489) = 1,11 Z2 = (-2ln 0,1758)1/2 sin (2 0,1489) = 1,50 Si hubiera que generar variables de una normal con media = 10 y varianza 2 = 4 se obtendra: X1 = 10 + 2(1,11) = 12,22 X2 = 10 + 2(1,50) = 13,00
Lenguajes de simulacin 2006-2007

Mtodo de aceptacin-rechazo (I)


Se utiliza cuando es imposible o extremadamente difcil expresar x en funcin de la transformada inversa F-1(U). Sea f la funcin densidad de probabilidad. Este mtodo precisa una funcin que sea mayor que f, tal que g(x) f(x) para todo x. g(x) no ser una funcin densidad puesto que

c = g ( x)dx f ( x)dx =1

Para c , entonces h(x)=g(x)/c es una funcin densidad. Algoritmo 1. Generar Y teniendo una densidad h. 2. Generar U de U(0,1), independiente de Y. 3. Si U f(Y)/g(Y), entonces hacer XY, sino volver al paso 1. El algoritmo contina haciendo este bucle sobre el paso 1 hasta que se genera un (Y,U) para el que U f(Y)/g(Y) (hasta que aceptamos el valor de Y para Z). La variable aleatoria Z generada por el algoritmo anterior tiene una funcin densidad f.
Lenguajes de simulacin 2006-2007

Mtodo de aceptacin-rechazo (II)


Cmo elegir g? Hay que intentar elegir g de modo que la variable aleatoria Y se pueda generar rpidamente, La probabilidad de aceptar Y debiera ser grande (c prxima a 1), lo que significa que g debe estar prxima a f. Ejemplo: La distribucin Beta(4,3) tiene una funcin densidad f(x) = 60 x3 ( 1 x)2 0 x 1 El valor mximo de f se alcanza para x=0,6 y f(0,6) = 2,0736. Si definimos g(x)=2,0736 para 0 x 1, entonces g es mayor que f. Algoritmo: 1. 2. Generar Y y U de U(0,1). Si

60Y (1 Y ) 2 U 2,0736
3

entonces hacer X=Y; sino rechazar el valor de Y y volver al paso 1.


Lenguajes de simulacin 2006-2007

Mtodo de aceptacin-rechazo (III)


En algunos textos se simplifica el mtodo de la forma siguiente. Pasos: 1. Normalizar el rango de f utilizando un factor de escala c tal que c.f(x) 1, estando x en el rango axb 2. Se define una funcin lineal de U, x = a + (b-a) U 3. Se generan un par de nmeros aleatorios (U1, U2) 4. Si U2 cf[a + (b-a) U1], entonces aceptar el par y utilizar x = a + (b - a) U1 como la variable aleatorio generada. 5. Volver al paso 3.

f(x)

a
Lenguajes de simulacin

b
2006-2007

Mtodo de aceptacin-rechazo (IV)


Ejemplo 1: Utilizar el mtodo de aceptacin-rechazo para generar variables aleatorias x con funcin densidad f(x) = 2x, 0 x 1

2
f(x)

1 1
Antes de escalar

g(x)

Despus de escalar

Ten en cuenta: x = 0 + (1) U = U, y adems g(U) = (1/2) f(U) = (1/2) (2U) = U Por lo tanto, en este ejemplo los pasos se pueden resumir en: 1 Generar U1 y calcular g(U1). 2 Generate U2 y compararlo con g(U1). 3 Si U2 g(U1), se acepta U1 como x con funcin densidad f(x). Si U2 > g(U1) se rechaza U1 y se vuelve al paso 1.
Lenguajes de simulacin 2006-2007

Mtodo de aceptacin-rechazo (V)


Nota: El mtodo de aceptacin-rechazo es muy ineficiente cuando c . (b-a) es muy grande, puesto que se deben generar una gran cantidad de nmeros aleatorios para generar cada variable aleatoria producida. Ejemplo:
c f(x) a x b

La distribucin se divide en partes y las partes se muestrean en proporcin a la cantidad del rea de la distribucin que contienen.

Una variable aleatoria X est distribuida de acuerdo con una gamma con parmetros y si su funcin densidad est dad por
.( x) 1 e x f ( x ) = ( ) 0

x>0 en el resto de los casos

El parmetro se llama parmetro de forma y de escala. En la siguiente transparencia se ven varias distribuciones para = 1 y distintos valores .
Lenguajes de simulacin 2006-2007

Mtodo de aceptacin-rechazo (VI)

Funciones densidad para varias distribuciones gamma cuando = 1


Lenguajes de simulacin 2006-2007

Mtodo de aceptacin-rechazo (VII)


La media y la varianza de la distribucin gamma son: E(X) = 1 / y 2) V(X) = 1 / ( La funcin de distribucin de X est dada por

.( t ) 1 e t dt 1 ( ) F ( x) = x 0

x>0 x0

Paso 1. Se calcula a = (2 - 1)1/2, b = 2 -ln4 + 1/a Paso 2. Se generan U1 y U2 Paso 3. Se calcula X = [U1 / (1 - U1)]a. Paso 4a. Si X > b - ln(U12 U2), se rechaza X y se vuelve al paso 2. Paso 4b. Si X b - ln(U12 U2), se utiliza X como la variable deseada. Las variables generadas en el paso 4b tendrn una media y una varianza iguales a . Si se desea tener una media 1/ y una varianza 1/2 ,entonces Paso 5. Reemplazar X por X/.

Lenguajes de simulacin

2006-2007

Mtodo de aceptacin-rechazo (VIII)


Ejemplo (Banks, Carson et all): Los tiempos de fallo para una mquina de dulces de elevada produccin estn distribuidos de acuerdo a una gamma con media 2,2 minutos y varianza 2,1 minutos2. Por tanto, 1/ = 2,2 y 1/2 = 2,10, lo que implica que =2,30 y = 0,4545. Paso 1. a = 1,90, b = 3,74 Paso 2. Se genera U1 = 0,832 y U2= 0,021 Paso 3. Se calcula X = 2,3[0,832 / 0,168]1.9 = 48,1 Paso 4. X = 48,1 > 3,74 - ln[(0,832)2(0,021)] = 7,97 , por lo que se rechaza X y se vuelve al paso 2. Paso 2. Se genera U1 = 0,434, y U2 = 0,716. Paso 3. Se calcula X = 2,3(0,434/0,566)1.9 = 1,389. Paso 4. Puesto que X = 1.389 3,74 - ln[(0,434)2 (0,716)] = 5,74, se acepta X. Paso 5. Se divide X por = 1.045 para obtener X = 1.329. Como promedio para generar 1000 variables gamma, se precisan entre 1130 y 1470 intentos lo que supone generar entre 2260 y 2940 nmeros aleatorios.
Lenguajes de simulacin 2006-2007

Mtodo de composicin (I)


Este mtodo se aplica cuando la funcin de distribucin F se puede expresar como una combinacin de otras funciones F1, F2,..

F ( z ) = i Fi ( z )
i =1

0 < i < 1 para i = 1,...,r

i =1

=1

Algoritmo 1. Generar aleatoriamente un entero aleatorio I tal que Pr(I=i) = i for i=1,..,r. 2. Generar aleatoriamente Z de la distribucin FI(Z). 3. Return Z

Lenguajes de simulacin

2006-2007

Mtodo de composicin (II)


Ejemplo Distribucin doble exponencial (Laplace)

0,5e x f ( x) = 0,5e x

si x < 0 si x 0

Generar inicialmente U1 y U2 de IID U(0,1). Si U1 < 0,5 devolver X=ln(1-U2). En caso contrario, devolver X=-ln(1-U2) Distribucin hiper-exponencial F(x) = 1F1(x) + 2F2(x) +..+kFk(x) donde Fi(x) es la distribucin exponencial con media bi, i=1,,k.

Lenguajes de simulacin

2006-2007

Mtodo de convolucin
En algunos casos, Z puede ser expresado como la suma de variables IID Y1,.., Yr, de forma que Z=Y1+Y2+..+Yr y generar las Yi puede ser ms fcil que generar Z. Algoritmo 1. Generar IID Y1,..,Yr. 2. Devolver Z=Y1+Y2+..+Yr Ejemplo: Si Z tiene una distribucin Erlang con parmetros r y , entonces Z puede ser expresado como una suma de r exponenciales independientes Yi, cada una con media . Un algoritmo ms eficiente para este ejemplo es Generar r nmeros aleatorios U(0,1). Colocar Z= - ln(U1U2..Ur)= -(lnU1+lnU2+... +lnUr) Nota: No hay que confundir el mtodo de convolucin con el de composicin. En el primero la variable aleatoria X se puede expresar como suma de variables aleatorias Yi mientras en el de composicin la funcin de distribucin de X, F(X), es una suma ponderada de otras funciones de distribucin.
Lenguajes de simulacin 2006-2007

Eleccin del mtodo adecuado


Si la funcin de distribucin se puede invertir utiliza inversin. Si la funcin de distribucin es la suma de otras funciones de distribucin utiliza composicin. Si la variable aleatoria es composicin de otras variables aleatorias utiliza convolucin Si existe una funcin que maximice la funcin densidad utiliza aceptacin rechazo. Si existe algn tipo de relacin utiliza mtodos especficos.

Lenguajes de simulacin

2006-2007

Criterios para la eleccin de un mtodo


1.- Certeza Certeza terica Errores aritmticos en los algoritmos 2.- Velocidad de ejecucin 3.- Facilidad de implementacin Esfuerzo de codificacin Soporte de rutinas necesarias 4.- Transportabilidad 5.- Necesidades de memoria 6.- Interaccin con tcnicas de reduccin de varianza

Lenguajes de simulacin

2006-2007

Mtodos para generar variables aleatorias continuas


Uniforme: Transformada inversa Exponential: Transformada inversa Erlang: Convolucin Gamma: Aceptacin-rechazo Weibull: Transformada inversa Normal: Transformacin directa Triangular: Transformada inversa Emprica: Transformada inversa Bernoulli: Transformada inversa Uniforme: Transformada inversa Discreta arbitraria: Transformada inversa Binomial: Convolucin Geomtrica: Transformada inversa Poisson: Aceptacin-rechazo
Lenguajes de simulacin 2006-2007

Referencias
Todos las expresiones y ejemplos estn obtenidos de los libros siguientes: Banks, Carson, Nelson, Nicol. Discrete event system simulation (third edition). Prentice-Hall 2001. El captulo 8 est dedicado al tema de generacin de variables aleatorias. Law and Kelton. Simulation Modeling and Analysis (third edition). McGraw-Hill 2000. Tambin es el captulo 8 es el que est dedicado al tema. George S. Fishman. Discrete-Event Simulation. Springer-Verlag 2001. Un enfoque ms estadstico, tambin el captulo 8 es el dedicado a la generacin de variables aleatorias. Existen algunos sitios Web, por ejemplo: http://www.iro.umontreal.ca/~vazquez/SimSpiders/GenerRV/Distributions.html http://cg.scs.carleton.ca/~luc/rnbookindex.html Pgina de Luc Devroye sobre generacin de variables aleatorias

Lenguajes de simulacin

2006-2007

También podría gustarte