Generación de variables aleatorias discretas Método de

Anuncio
Generación de variables aleatorias discretas
Método de aceptación y rechazo
Método de composición
Método de la urna
Método de tablas
Georgina Flesia
FaMAF
10 de abril, 2012
Método de Aceptación y Rechazo
I
Se desea simular una v. a. X discreta, con probabilidad de masa
pj = P(X = j), j = 0, 1, 2, . . . .
I
Hipótesis: Se conoce un método eficiente para generar una v.a.
Y , con probabilidad de masa qj = P(Y = j), j = 0, 1, 2, . . . , que
verifica
I
I
Si pj 6= 0 entonces qj 6= 0.
Existe una constante c (c > 1) tal que
pj
≤c
qj
para todo j tal que pj > 0
Método de Aceptación y Rechazo
Generar Y
Generar U
1
U
R
a
ech
cqY
za
Acepta
pY
Método de Aceptación y Rechazo
Algorithm 1: Método de aceptación y rechazo
repeat
Simular Y , con probabilidad de masa qY ;
Generar U ∼ U(0, 1)
until U < pY /cqY ;
X ←Y
Teorema
El algoritmo de aceptación y rechazo genera una variable aleatoria
tal que
P(Xj ) = pj ,
j = 0, 1, . . . .
Además, el número de iteraciones requeridas para obtener X es una
v.a. geométrica con media c.
Demostración
I
X = j si y sólo si Y = j y el algoritmo lo acepta en alguna
iteración:
X
P(X = j) =
P(j es aceptado en la iteración k )
k ≥1
I
j es aceptado en la iteración k significa que hay k iteraciones
donde en las k − 1 primeras el algoritmo rechaza j y en la ultima,
la k esima, lo acepta:
P(j aceptado en la iteración k ) =
P( j es rechazado k − 1 veces ) P((Y = j) ∧ j es aceptado en la k )
por la independencia de las iteraciones
= P( j es rechazado)k −1 P((Y = j) ∧ j es aceptado)
En una iteración fija
I
Probabilidad de que el algoritmo acepte el valor j
P((Y = j) ∧ j es aceptado)
I
= P(j es aceptado | (Y = j))P(Y = j)
pj
=
qj
cqj
pj
=
c
Probabilidad de que el algoritmo acepte en una iteración
P( el algoritmo acepte) =
X
P((Y = j)∧ j es aceptado) =
j
P( el algoritmo rechace) = 1 −
I
X pj
j
1
c
G es la variable que mira el número de iteraciones necesarias,
entonces G es geométrica de parámetro 1/c.
c
=
1
c
P(X = j)
P(X = j)
= P(j sea aceptado en alguna iteración)
∞
X
=
P(j sea aceptado en la iteración k )
k =1
=
∞
X
P( j es rechazado)k −1 P((Y = j) ∧ j es aceptado)
k =1
=
∞ X
k =1
= pj
1−
1
c
k −1
pj
c
Ejemplo: Método de rechazo
Ejemplo
Generar una v.a. X con valores en {1, 2, . . . , 10} y probabilidades
0.11, 0.12, 0.09, 0.08, 0.12, 0.10, 0.09, 0.09, 0.10, 0.10
I
Método de la transformada inversa: implica una media (mínima)
de 5,04 iteraciones.
I
Método de aceptación y rechazo: c = 1.2. La media de
iteraciones es 1,2.
Método de Composición
Se tienen métodos eficientes para generar valores de v. a. X1 y X2 ,
con funciones de probabilidad de masa
X1 :{pj
j = 0, 1, . . . }
X2 : {qj
j = 0, 1, . . . .}
El método de composición permite generar una v.a. X con función de
probabilidad de masa
P(X = j) = αpj + (1 − α)qj
(
X =
X1
X2
j = 0, 1, . . . ,
con probabilidad α
con probabilidad 1 − α
0<α<1
Método de Composición
Algorithm 2: Método de composición para dos v.a.
Generar U ∼ U(0, 1);
if U < α then
X ← X1
else
X ← X2
end
P(X = j)
= P(U < α, X1 = j) + P(α < U < 1, X2 = j)
= P(U < α) P(X1 = j) + P(α < U < 1) P(X2 = j)
= α pj + (1 − α) qj
Método de composición
Ejemplo
Generar X tal que
(
pj = P(X = j) =
0.05
0.15
para j = 1, 2, 3, 4, 5
para j = 6, 7, 8, 9, 10
Algorithm 3:
(0.05)· 5=0.25
(0.15)· 5=0.75
Generar U ∼ U(0, 1);
if U <0.75 then
Generar V ∼ U(0, 1);
X ← b5V c + 6
else
Generar V ∼ U(0, 1);
X ← b5V c + 1
end
Método de composición
Ejemplo
Generar X tal que
(
pj = P(X = j) =
0.05
0.15
para j = 1, 2, 3, 4, 5
para j = 6, 7, 8, 9, 10
Algorithm 4: Otra solución
(0.05)·10=0.5
(0.10)·5=0.5
Generar U ∼ U(0, 1);
if U <0.5 then
Generar V ∼ U(0, 1);
X ← b10V c + 1
else
Generar V ∼ U(0, 1);
X ← b5V c + 6
end
Método de la transformada inversa
X : {x0 , x1 , . . . }, con P(X = xi ) = pi .
Algorithm 5: Transformada Inversa
F ← p0 , i ← 0;
Generar U ∼ U(0, 1);
while U > F do
i ← i + 1;
F ← F + pi ;
end
X ← xi
I
El algoritmo recorre desde un valor en adelante.
I
Para una v.a. discreta en general, realiza muchas búsquedas.
Veamos algunas alternativas.
Método de la Urna
I
X toma un número finito de valores: {x1 , x2 , . . . , xn }
I
Cada pi = ki 10−q , con ki entero y q fijo. Esto es:
n
X
ki = 10q
i=1
q: es el número máximo de dígitos decimales.
I
v : un vector de tamaño 10q que contiene ki veces cada
elemento xi .
v = x1 . . . x1 x2 . . . x2 . . . xn . . . xn
| {z } | {z } | {z }
k1
Algorithm 6: Variante A
Generar U ∼ U(0, 1);
J ← b10q Uc + 1;
X ← vJ
k2
kn
Método de la Urna
Ejemplo
X toma valores x1 = 8, x2 = 9, x3 = 10 y x4 = 11, con probabilidades
p1 = 0.2, p2 = 0.1, p3 = 0.4 y p4 = 0.3.
q=1
p1 = 2 · 10−1 , p2 = 1 · 10−1 , p3 = 4 · 10−1 , p4 = 3 · 10−1 .
v= 8
8
9
U = 0.378
10
⇒
10
10
10
11
11
J=4
⇒
X ← 10
11
Método de la Urna
¿Por qué funciona?
P(X = j)
=
=
P(k1 + . . . kj−1 < b10q Uc ≤ k1 + . . . kj−1 + kj )
kj
= pj
10q
I
Desventaja: Necesita 10q lugares de almacenamiento.
I
Advertencia: Si se redondean
los datos para utilizar un q más
P
chico, recordar que
ki debe resultar 1.
Método de la Tabla
Marsaglia (1963) propone la siguiente mejora el método de la urna.
I
Se utiliza un vector vk , para cada posición decimal:
k = 1, 2, . . . , q.
I
En vk se almacena xi tantas veces como indique su posición
decimal k -ésima.
I
Se calcula dk la probabilidad de ocurrencia del dígito de orden k :
dk =
suma de los dígitos de orden k en las probabilidades
10k
Método de la Tabla
Ejemplo
Sea X con distribución p(1) = 0.15, p(2) = 0.20, p(3) = 0.43,
p(4) = 0.22,
v= 1
w= 1
d1 =
2
1
2
1
3
1
3
1
1+2+4+2
= 0.9
10
3
3
3
3
d2 =
4
3
4
4
m=9
4
n = 10
5+0+3+2
= 0.1
100
Método de la tabla
m=9
n = 10
d1 = 0.9
d2 = 0.1
Algorithm 8: Método de la tabla (Ejemplo)
Input: v , w, m, n
Generar U ∼ U(0, 1);
if U < 0.9 then
Generar V ∼ U(0, 1);
J ← bmV c;
X ← vJ
else
Generar V ∼ U(0, 1);
J ← bnV c;
X ← wJ
end
Método de la tabla
¿Por qué funciona el algoritmo?
P(X = 3)
= P(X = 3 | elegir decenas)P(elegir decenas)
+ P(X = 3 | elegir centenas)P(elegir centenas)
4
3
=
0.9 +
0.1
9
10
= 0.43
I
Ventaja sobre el anterior: mucho menor costo de
almacenamiento. (19 lugares en lugar de 100).
I
Desventaja: "Mayor" tiempo de ejecución.
Descargar