Generación de variables aleatorias continuas Método de rechazo Georgina Flesia FaMAF
18 de abril, 2013
Método de Aceptación y Rechazo
Repaso
Se desea simular una v. a. X discreta, discreta, con probabilid probabilidad ad de masa p j = P (X = j ), j = 0 , 1, 2, . . . .
Hipótesis: Hipótesis: Se conoce un método eficiente para generar una v.a. Y , Y , con probabilidad de masa q masa q j = P (Y = j ), j = 0 , 1, 2, . . . , que verifica
= 0 entonces q = 0 . Si p Si p j j entonces q j j Existe una constante c constante c (c > 1) 1) tal tal que p j ≤ c q j
para todo todo j j tal tal que p que p j j > 0
Método de Aceptación y Rechazo
Algoritmo: Método de aceptación y rechazo repeat Simular Y , con probabilidad de masa q Y ; (0, 1) Generar U until U < p Y /cq Y ; X Y
∼ U
←
Teorema El algoritmo de aceptación y rechazo genera una variable aleatoria discreta tal que P (X j ) = p j , j = 0 , 1, . . . . Además, el número de iteraciones requeridas para obtener X es una v.a. geométrica con media c .
El método de rechazo
Veamos la version para variables continuas
Sea X una v. a. con densidad f : F (x ) = P (X
x
) = −∞ ( )
≤ x
f t dt .
Supongamos que se tiene un método para generar Y , con densidad g , y que f (y ) g (y )
≤ c ,
∈ R tal que f (y ) = 0.
para todo y
El método de rechazo para generar X a partir de Y tiene el siguiente algoritmo:
Método de rechazo
Algoritmo: Método de aceptación y rechazo repeat Generar Y , con densidad g ; (0, 1) Generar U until U < f (Y )/(cg (Y )); X Y
∼ U
←
Teorema 1. La v. a. generada por el método de rechazo tiene densidad f . 2. El número de iteraciones del algoritmo es una variable aleatoria geométrica con media c .
Cálculo de la cota c
h (x ) =
f (x ) g (x )
≤ c
¿Es h acotada superiormente? ¿Existe un máximo de h ? Determinar puntos críticos de h . Un punto crítico x es un máximo local de h si en un entorno 0 (a , b ) de x 0 ocurre:
h (x ) > 0 para x < x 0 y h (x ) < 0 para x > x 0 , o h (x 0 ) < 0.
Evaluar h en los extremos del intervalo.
Ejemplo Utilizar el método de rechazo para generar una v. a. con función de densidad f (x ) = 20x (1 x )3 , 0 < x < 1 .
−
f (x ) =
Γ(α + β ) α−1 (1 x Γ(α)Γ(β )
− x )β− I( , )(x ) 1
01
Variable β
X es una v. a. Beta ( 2, 4).
Está acotada en ( 0, 1).
Se puede aplicar el método de rechazo con g (x ) = 1, 0 < x < 1.
Hallar c tal que f (x ) f (x ) = g (x ) 1
≤ c
Ejemplo
h (x ) = h (x )
=
f (x ) = 20x (1 x )3 , 1 20(1 x )2 (1 4x )
−
− · −
0 < x < 1
Puntos críticos: x = 1 y x = 1 /4. h (0) = h (1) = 0, luego 0 y 1, los extremos del intervalo, no son máximos.
h (1/4) = 135 /64 > 0 por lo cual x = 1 /4 es un máximo.
h (1/4) = f (1/4) = 135 /64 es el valor máximo de h c =
135 = 2 .109375 64
Ejemplo
Puntos críticos: x = 1 y x = 1 /4. f (1) = 0, luego no es un máximo. x = 1 /4 es un máximo. h (1/4) = f (1/4) = 135 /64 es el valor máximo: c .
Ejemplo
1280 f (x ) f (x ) = = x (1 c g (x ) 135/64 135
−
x )3 =
256 x (1 27
Algoritmo: Método de aceptación y rechazo repeat (0, 1); Generar V (0, 1) Generar U until U < 256 ( V )3 ; 27 V 1 X V
←
∼ U ∼ U −
135 El promedio del número de ciclos es c = 64
3
− x )
≈ 2.11.
Ejemplo Generar una v. a. con densidad gamma ( 32 , 1): f (x ) = Kx 1/2 e −x , con K
= 1 /Γ( 32 )
x > 0 ,
√ = 2 / π . X
∼
β α −β x α−1 . gamma(α, β ) = e x Γ(α) E [X ] = α /β.
X toma valores reales, no negativos. En el ejemplo, la media es 3 /2. Es razonable rechazar con una exponencial de igual media. Pero podemos despues verificar si no podemos hacer un algoritmo mejor.
Ejemplo: generación de gamma ( 32 1) ,
∼ E (
Y
g (x ) =
2 ) 3 2 2/3 x , 3 e
−
h (x ) = f (x )/g (x ) = 3K 1/2 −x /3 e 2 x c = 3
1/2 3 2π e
x > 0 .
Ejemplo
h (x )
=
h (x )
=
0
=
|x |
=
f (x ) = CTE x 1/2 e −x /3 , 0 < x ( ) g x 1 1 −x /3 ] CTE [ x −1/2 e −x /3 + x 1/2 e 2 3 1 −1/2 −x /3 1/2 1 −x /3 + x x e e 2 3 3 2
−
−
Puntos críticos: 32 cuando x>0. h (0) < h ( 32 ); h (2) < h ( 32 ), luego 0 extremo del intervalo, no es máximo y h ( 32 es el máximo. h ( 32
=3
1/2 3 2π e
por lo cual 1/2
3
Generación de una v. a. exponencial Sabemos que
∼ E (λ), entonces c · X también es exponencial. λ c · X ∼ E ( ). c Si X
∼ E (1):
Calculamos la inversa de la función de distribución de X
= 1 e −x u = 1 e −x u = e −x x = loge (1
F X (x ) 1
∼ E (1)
−
− −
−
− u ) ∼ E (λ)
X
X
Generar U; X log (U )
Generar U; 1
← −
Ejemplo: generación de gamma ( 32 1) ,
f (x ) = cg (x )
2e 3
1/2
x 1/2 e −x /3
Algoritmo: Método de rechazo repeat (0, 1); Generar V 3 ( ) Y 2 log V ; (0, 1) Generar U
∼ U ← − ∼ U
until U < X Y
←
2e 1/2 3
Y 1/2 e −Y /3 ;
c = 3
1/2
3 2π e
≈ 1.257
Ejemplo
¿Es cierto que es ”razonable” rechazar con una exponencial de igual media que la gamma?
Tomamos g (x ) = λ e −λx , exponencial con razón λ , media 1/λ. Obtenemos: f (x ) Kx 1/2 e −(1−λ)x = , λ g (x )
Máximo en
→
Valor máximo
λ =
→ 2
x =
0 < λ < 1
1
, 0 < λ < 1 . ( λ) 21 K c = (2(1 λ))−1/2 e −1/2 . λ
−
−
minimiza el valor de c
Generación de una v. a. normal
Ejemplo Generar una v. a. normal estándar, es decir, Z con densidad f (x ) =
1
√ π
− x 2 /2 . e
2 2
x 2 2
2
|Z | tiene densidad f | | (x ) = √ π e − / , en 0 < x < ∞. Si sabemos generar |Z |, generamos Z por composición. Z
Generación de una v. a. normal
Para generar Z :
| |
Elegimos g (x ) = e −x , 0 < x < .
∞
Resulta c
c 1 .32.
≈
= /π 2e
Generación de una v. a. normal
f (x ) = exp cg (x )
2
)
(x
− 1 − 2
.
Generación de Z
| |
repeat (0, 1); Generar V Y log(V ); (0, 1) Generar U
∼ U ← − ∼ U − ) }; until U < exp {− ( |Z | ← Y Y 1 2
2
U < exp
{−
(Y 1)2 2 (Y 1)2 2
−
}
− log(U ) > − Y = − log(U ) ∼ E (1). 2
Generación de una v. a. normal
Generación de Z repeat Generar Y 1 Generar Y 2 until Y 2 > ( Y 1 Z Y 1
| |←
| |
∼ E (1); ∼ E (1) − 1) /2}; 2
Si Y 2 > ( Y 1 1)2 /2 , entonces X = Y 2 (Y 1 1)2 /2 es exponencial con media 1, por la propiedad de falta de memoria .
−
}
−
−
Luego podemos generar la normal y también una exponencial.
Generación de una v. a. normal
Generación de Z normal y X exponencial repeat (1); Generar Y 1 (1) Generar Y 2 until Y 2 (Y 1 1)2 /2 > 0; X Y 2 (Y 1 1)2 /2; Generar U (0, 1); if U < 0 .5 then Z = Y 1 else Z = Y 1 end
∼ E ∼ E − − ← − − ∼ U −
Generación de una v. a. normal
Observaciones.
c 1 .32.
≈
Para generar una secuencia de normales, se puede utilizar X como siguiente exponencial: en promedio, se necesitan generar 1.64 exponenciales y calcular 1.32 cuadrados.