Generacion de Variables Aleatorias

download Generacion de Variables Aleatorias

of 16

Transcript of Generacion de Variables Aleatorias

  • 2006-2007Lenguajes de simulacin

    Generacin de variables aleatorias

    Introduccin

    Mtodos de generacin:

    Transformada InversaAceptacin-RechazoComposicinConvolucin

    Referencias

    2006-2007Lenguajes de simulacin

    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:

    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.

    Generar uno a ms nmeros aleatorios

    U(0,1)

    Transformacin dependiente de la

    distribucin

    Obtener X de la distribucin

    deseada

    Generacin de variables aleatorias. Introduccin

  • 2006-2007Lenguajes de simulacin

    Algunas distribuciones utilizadas

    2006-2007Lenguajes de simulacin

    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)

  • 2006-2007Lenguajes de simulacin

    Mtodo de la transformada inversa (II)

    2006-2007Lenguajes de simulacin

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

    F(x) = = x2 , 0 x 1 Ahora hacemos F(x) = U ==> U = x2

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

    x tdt02

    Mtodo de la transformada inversa (ejemplo 1)

  • 2006-2007Lenguajes de simulacin

    Mtodo de la transformada inversa (ejemplo 2)

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

    0 xx < 0

    Solucin: 0 xx < 0

    ==

    01dt f(t))(

    xx exF

    =

    0 f(x)

    xe

    Se hace F(x) = USe busca la solucin para x, ==>

    1 - e-x = Ue-x = 1 - U- x = ln(1 - U)

    x = - {ln(1 - U)} / o - {ln(U)} /

    2006-2007Lenguajes de simulacin

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

    pdf:

    Ten en cuenta que a es el parmetro de forma y b el parmetro de escala.

    =

    otherwisexexxf

    x

    ,00,}/{)(

    )/(1

    Ahora, para generar variables Weibull:

    Step 1. cdf: , x 0Step 2.

    Step 3. 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.

    Ue x = )/(1 )/(1)( xexF =

    Mtodo de la transformada inversa (ejemplo 3)

  • 2006-2007Lenguajes de simulacin

    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 aquellasen 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 distribucinWeibull(1.5, 6)

    Mtodo de la transformada inversa (ejemplo 3)

    2006-2007Lenguajes de simulacin

    Distribucin UniformeConsideremos una variable aleatoria x que est distribuidauniformemente en el intervalo [a, b]

    a x bpdf:

    en el resto de los casos =0

    )/(1 f(x)

    ab

    Mtodo de la transformada inversa (ejemplo 4)

    Para generar variables aleatorias:Paso 1. x < a

    a x bx > b

    Paso 2. F(x) = (x - a) / (b - a) = UPaso 3. x = a + (b - a) U

    =1

    )/()(0

    F(x) abax

  • 2006-2007Lenguajes de simulacin

    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 31 0.31 0.310.5 x 1.0 10 0.10 0.411.0 x 1.5 25 0.25 0.661.5 x 2.0 34 0.34 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)

    Mtodo de la transformada inversa (Datos discretos)

    2006-2007Lenguajes de simulacin

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

    Mtodo de la transformada inversa (Datos discretos)

  • 2006-2007Lenguajes de simulacin

    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 obtieneX1 del grfico anterior.

    De forma simblica esto se escribe como X1 = F-1(R1) peroalgebraicamente, puesto que R1 est entre 0.66 y 1.00, X1 se calcula medianteuna 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 X1estar a la distancia mitad entre 1.5 y 2.0 ya que R1 est a la distancia mitadentre 0.66 y 1.00

    El algoritmo es: Paso 1. Generar RPaso 2. Encontrar el intervalo i en el que cae R, es decir,

    encontrar i de forma que ri R ri+1Paso 3. Calcular X mediante X = xi + ai (R - ri)

    Mtodo de la transformada inversa (Datos discretos)

    2006-2007Lenguajes de simulacin

    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,7128 0,1 0,8512 0,2 1,0

    La funcin de distribucin acumulada y la inversa estn dadas por:

    0 x 64 0 u 0,764 x 128 0,7 u 0,8

    128 x 512 0,8 u 1512 x

    =0,18,07,00,0

    )( xF

    =51212864

    )(1 uF

  • 2006-2007Lenguajes de simulacin

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

    Distribucin Normal Estndar

    - < x < ,*)2(

    1)( 22

    dtextx

    = Eje Z2

    Eje Z1

    (Z1,Z2)

    0

    Z2

    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

    21

    2

    )ln2(

    )ln2(

    UB

    UB

    ==

    Caso de la distribucin normal (I)

    2006-2007Lenguajes de simulacin

    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,22X2 = 10 + 2(1,50) = 13,00

  • 2006-2007Lenguajes de simulacin

    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

    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.

    1)()( == dxxfdxxgc

    2006-2007Lenguajes de simulacin

    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 1El 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. Generar Y y U de U(0,1).

    2. Si

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

    0736,2)1(60 23 Y

    U Y

  • 2006-2007Lenguajes de simulacin

    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 a x b

    2. Se define una funcin lineal de U, x = a + (b-a) U3. 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) c

    a x b

    2006-2007Lenguajes de simulacin

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

    Ten en cuenta: x = 0 + (1) U = U, y adems g(U) = (1/2) f(U) = (1/2) (2U) = UPor 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.

    Mtodo de aceptacin-rechazo (IV)

    Antes de escalar Despus de escalar

    f(x) g(x)

    2

    1

    1

    1

    1

  • 2006-2007Lenguajes de simulacin

    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:

    b

    c

    a x

    f(x)

    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 > 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 .

    =

    0

    ).()()(1 xex

    xf

    2006-2007Lenguajes de simulacin

    Funciones densidad para varias distribuciones gamma cuando = 1

    Mtodo de aceptacin-rechazo (VI)

  • 2006-2007Lenguajes de simulacin

    La media y la varianza de la distribucin gamma son:E(X) = 1 / yV(X) = 1 / (2)

    La funcin de distribucin de X est dada por

    x > 0

    x 0Paso 1. Se calcula a = (2 - 1)1/2, b = 2 -ln4 + 1/aPaso 2. Se generan U1 y U2Paso 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 ,entoncesPaso 5. Reemplazar X por X/.

    =

    0

    ).()(1)(1 dtet

    xFx

    t

    Mtodo de aceptacin-rechazo (VII)

    2006-2007Lenguajes de simulacin

    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.

    Mtodo de aceptacin-rechazo (VIII)

  • 2006-2007Lenguajes de simulacin

    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,..

    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

    =

    =r

    iii zFzF

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

    ==

    r

    ii

    11

    2006-2007Lenguajes de simulacin

    Mtodo de composicin (II)

    Ejemplo

    Distribucin doble exponencial (Laplace)

    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.

    = x

    x

    ee

    xf5,05,0

    )(si x < 0

    si x 0

  • 2006-2007Lenguajes de simulacin

    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+..+YrEjemplo: 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.

    Mtodo de convolucin

    2006-2007Lenguajes de simulacin

    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.

    Eleccin del mtodo adecuado

  • 2006-2007Lenguajes de simulacin

    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

    2006-2007Lenguajes de simulacin

    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

    Mtodos para generar variables aleatorias continuas

  • 2006-2007Lenguajes de simulacin

    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

    Referencias