Sei sulla pagina 1di 4

Copyright c © © 2007 por Karl Sigman

1 Método de aceptación-rechazo

Como ya sabemos, encontrar una fórmula explícita para F - 1 ( y) para el cdf de un rv X deseamos generar, F (x) = P (X ≤ X), No
siempre es posible. Además, incluso si es así, puede haber métodos alternativos para generar un rv distribuido como F eso es
más eficiente que el método de transformación inversa u otros métodos que hemos encontrado. Aquí presentamos un método
muy inteligente conocido como el método de aceptación-rechazo.

Comenzamos asumiendo que el F queremos simular desde tiene una función de densidad de probabilidad
f (x); es decir, el caso continuo. Más adelante también daremos una versión discreta, que es muy similar.
La idea básica es encontrar una distribución de probabilidad alternativa SOL, con función de densidad g (x),
desde el cual ya tenemos un algoritmo eficiente para generar desde (por ejemplo, método de transformación inversa o lo que sea),
pero también de modo que la función g (x) esta cerca de f (x). En particular, suponemos que la relación f (x) / g (x) está limitado por
una constante c> 0; cenar X{ f (x) / g (x)} ≤ C. ( Y en la práctica nos gustaría C lo más cerca posible de 1)

Aquí está el algoritmo para generar X distribuido como F:

Algoritmo de aceptación-rechazo para variables aleatorias continuas

1. Generar un rv Y distribuido como SOL.

2. Generar U ( independiente de Y)

3. Si

U ≤ f (Y)
cg (Y) ,

luego establecer X = Y ( "Aceptar"); de lo contrario, vuelva a 1 ("rechazar"). Antes de

demostrar esto y dar ejemplos, cabe destacar varias cosas:

• f (Y) y g (Y) son rvs, por lo tanto, también lo es la relación f (Y) cg (Y) y esta relación es independiente de U en
Paso 2).

• La relación está limitada entre 0 y 1; 0 < f (Y) cg (Y) ≤ 1)

• La cantidad de veces norte que los pasos 1 y 2 deben llamarse (por ejemplo, la cantidad de iteraciones necesarias para
generar con éxito X ) es en sí un rv y tiene una distribución geométrica con probabilidad de "éxito" p = P (U ≤ f (Y)

cg (Y); P (N = n) = ( 1 - pags) norte - 1 p, n ≥ 1. Así, en promedio


el número de iteraciones requeridas viene dado por E (N) = 1 / pags.

• Al final obtenemos nuestro X como teniendo la distribución condicional de un Y dado que el evento { U ≤ f (Y)

cg (Y)} ocurre.

Un cálculo directo produce que p = 1 / C, primero condicionando Y: P (U ≤ f (Y)

cg (Y) | Y = y) = f (y) cg (y); por lo tanto, descondicionando y recordando que Y tiene densidad g (y) rendimientos

∫ ∞ −∞
f (y) cg (y) × g (y) dy
p=

1
∫ ∞ −∞ f (y) dy
=1
C

=1
C,

donde sigue la última igualdad desde F es una función de densidad (por lo tanto, por definición se integra a
1) Así E (N) = C, la constante límite, y ahora podemos ver que es deseable elegir nuestra densidad alternativa gramo para
minimizar esta constante c = cenar X{ f (x) / g (x)}. Por supuesto, la función óptima sería g (x) = f (x) lo cual no es lo que tenemos
en mente ya que el objetivo es elegir una alternativa diferente (fácil de simular) de F. En resumen, es un poco arte encontrar
una adecuada sol. En cualquier caso, resumimos con

El número esperado de iteraciones del algoritmo requerido hasta un X se genera con éxito es exactamente la
constante delimitadora c = cenar X{ f (x) / g (x)}.

Prueba de que el algoritmo funciona

Prueba: Debemos demostrar que la distribución condicional de Y Dado que U ≤ f (Y) cg (Y) , es de hecho F;
eso es eso P (Y ≤ y | U ≤ f (Y) cg (Y) ) = F (y). Dejando B = {U ≤ f (Y) cg (Y)}, A = {Y ≤ y}, recordando
ese P (B) = p = 1 / C, y luego usando el hecho básico de que P (A | B) = P (B | A) P (A) / P (B) rendimientos

P (U ≤ f (Y)
cg (Y) | Y ≤ y) × G (y) 1 / c = F (y)
cG (y) × G (y)1 / c = F (y),

donde usamos el siguiente cálculo:

cg (Y) , Y ≤ y) G (y)
P (U ≤ f (Y)
cg (Y) | Y ≤ y) = P (U ≤ f (Y)
∫y
P (U ≤ f (y) cg (y) | Y = w ≤ y) G (y)
= g (w) dw
−∞
∫y
f (w) cg (w) g (w)
=1 dw
G (y) −∞
∫y
1
=
cG (y) −∞ f (w) dw

= F (y)
cG (y) .

2 Aplicaciones del método de aceptación-rechazo

2.1 Distribución normal

Si deseamos un X ∼ N (µ, σ 2) entonces podemos expresarlo como X = σZ + µ, dónde Z denota un rv con el NORTE( 0, 1) distribución. Por lo
tanto, basta con encontrar un algoritmo para generar Z ∼ NORTE( 0, 1) Además, si podemos generar a partir del valor absoluto, | Z | entonces
por simetría podemos obtener nuestro
Z generando independientemente un rv S ( para firmar) que es ± 1 con probabilidad 1/2 y ajuste

2
Z = S | Z |. En otras palabras, generamos un U y establecer Z = | Z | Si U ≤ 0.5 y establecer Z = - | Z | Si
U> 0.5.
El | Z | no es negativo y tiene densidad

f (x) = 2 √ 2 πe - X 2 / 2, X ≥ 0.

Para nuestra alternativa elegiremos g (x) = e - X, X ≥ 0, la densidad exponencial con tasa


1, algo que ya sabemos cómo simular fácilmente (método de transformación inversa, por ejemplo). Señalando que h (x) def

= f (x) / g (x) = e X - X 2 / 2 √ 2 / π, simplemente usamos cálculo para calcular su


máximo (resolver h ′ ( x) = 0); que debe ocurrir a ese valor de X que maximiza el exponente
X - X 2 / 2; es decir, al valor x = 1. Así c = √ 2 e / π ≈ 1.32, y así f (y) / cg (y) = e - ( y - 1) 2 / 2)

El algoritmo para generar Z es entonces

1. Generar Y con una distribución exponencial a razón 1; es decir, generar U y establecer Y =


- ln ( U)

2. Generar U

3. Si U ≤ mi - ( Y - 1) 2 / 2, conjunto | Z | = Y; de lo contrario regrese a 1.

4. Generar U. Conjunto Z = | Z | Si U ≤ 0.5, conjunto Z = - | Z | Si U> 0.5.

Tenga en cuenta que en 3, U ≤ mi - ( Y - 1) 2 / 2 si y solo si - ln ( U) ≥ ( Y - 1) 2 / 2 y desde - ln ( U) es exponencial en la tasa 1, podemos


simplificar el algoritmo para

Algoritmo para generar Z ∼ NORTE( 0, 1)

1. Genere dos exponenciales independientes a la tasa 1; Y 1 = - ln ( U 1) y Y 2 = - ln ( U 2)

2. Si Y 2 ≥ ( Y 1 - 1) 2 / 2, conjunto | Z | = Y 1; de lo contrario regrese a 1.

3. Generar U. Conjunto Z = | Z | Si U ≤ 0.5, conjunto Z = - | Z | Si U> 0.5.

Como una buena idea de último momento, tenga en cuenta que por la propiedad sin memoria de la distribución exponencial, la cantidad
por la cual Y 2 excede ( Y - 1) 2 / 2 en el Paso 2 del algoritmo cuando Y 1 es aceptado, es decir, la cantidad Y def

= Y 2 - ( Y 1 - 1) 2 / 2, tiene la distribución exponencial con tasa 1 y


es independiente de Y 1) Por lo tanto, de forma gratuita, recuperamos un exponencial independiente que luego podría usarse como
uno de los dos necesarios en el Paso 1, si quisiéramos comenzar a generar otro independiente NORTE( 0, 1) rv. Por lo tanto,
después del uso repetido de este algoritmo, el número esperado de uniformes necesarios para generar uno Z es (2 c + 1) - 1 = 2 c = 2.64.
Uno podría preguntar si podríamos mejorar nuestro algoritmo para Z cambiando la tasa del exponencial; es decir, usando una
densidad exponencial g (x) = λe - λx para algunos λ 6 = 1. La respuesta es no: λ = 1 minimiza el valor de C obtenido (como se puede
probar usando cálculo elemental).

3
2.2 Distribución beta

En general, una distribución beta en el intervalo de la unidad, X ∈ ( 0, 1), tiene una densidad de la forma
f (x) = bx norte( 1 - X) metro con norte y metro no negativo (enteros o no). El constante si es la constante de normalización

] - 1)
b=[∫1 X norte( 1 - X) metro dx
00

(Tales distribuciones generalizan la distribución uniforme y son útiles para modelar proporciones aleatorias).

Consideremos un caso especial de esto: f (x) = bx norte( 1 - X) n = b (x ( 1 - X)) norte. Como la distribución uniforme en (0, 1), esto tiene
una media de 1/2, pero su masa está más concentrada cerca de 1/2 que cerca de 0 o 1; Tiene una variación menor que el uniforme.
Si usamos g (x) = 1, X ∈ ( 0, 1) (la densidad uniforme), entonces f (x) / g (x) = f (x) y como se verifica fácilmente, c = cenar X f (x) se logra
en x = 1/2;
c = b ( 1/4) norte.
Así podemos generar desde f (x) = b (x ( 1 - X)) norte como sigue:

1. Generar U 1 y U 2)

2. Si U 2 ≤ 4 4 norte( U 1 ( 1 - U 1)) norte, luego establecer X = U 1; de lo contrario, vuelva a 1. Es interesante observar que en este ejemplo, y de

hecho en cualquier ejemplo beta que use g (x) = 1,


no necesitamos saber (o calcular de antemano) el valor de si; se cancela en la proporción
f (x) / cg (x). Por supuesto, si deseamos saber el valor de C, necesitaríamos saber el valor de
si. En el caso cuando norte y metro son enteros si es dado por b = (n + m + 1)! / ¡Nuevo Méjico!, que en nuestro ejemplo produce b = ( 2 n + 1
) )
, y entonces c = ( 2 n + 1 / / 4 4 norte. Para grandes valores de norte, esto no es tan eficiente,
norte norte
como debe quedar claro ya que en ese caso las dos densidades F y gramo No son muy parecidos.
Hay otras formas de generar la distribución beta. Por ejemplo, uno puede usar el hecho básico (¿puede probar esto?) Que
si X 1 es un gamma rv con parámetro de forma n + 1 e independientemente X 2 es un gamma rv con parámetro de forma m + 1 (y
ambos tienen el mismo parámetro de escala), luego X = X 1 / ( X 1 + X 2) es beta con densidad f (x) = bx norte( 1 - X) metro. Por lo tanto, es
suficiente tener un algoritmo eficiente para generar la distribución gamma. En general, cuando norte y metro

son enteros, los gammas se convierten en Erlang (representados por sumas de iid exponenciales); por ejemplo, si X 1 y X 2 son iid
exponenciales, entonces X = X 1 / ( X 1 + X 2) es uniforme en (0, 1) La distribución gamma siempre se puede simular usando el
rechazo de aceptación usando la densidad exponencial g (x) = λe - λx en el que 1 / λ se elige como la media de la gamma (se
puede demostrar que este valor de λ es óptimo)

3 Caso discreto

El caso discreto es análogo al caso continuo. Supongamos que queremos generar un X


ese es un rv discreto con función de masa de probabilidad (pmf) p (k) = P (X = k) Supongamos además que ya podemos
generar fácilmente un rv discreto Y con pmf q (k) = P (Y = k) tal que sup k { p (k) / q (k)} ≤ c < ∞. El siguiente algoritmo produce
nuestro X:

Algoritmo de aceptación-rechazo para variables aleatorias discretas

1. Generar un rv Y distribuido como q (k).

2. Generar U ( independiente de Y)

3. Si U ≤ p (Y) cq (Y) , luego establecer X = Y; de lo contrario regrese a 1.

44

Potrebbero piacerti anche