Generación de variables aleatorias discretas Método de la

Anuncio
Generación de variables aleatorias discretas
Método de la Transformada Inversa
Georgina Flesia
FaMAF
3 de abril, 2012
Generación de v.a. discretas
Existen diversos métodos para generar v.a. discretas:
I
Transformada Inversa
I
De aceptación-rechazo, o método de rechazo.
I
De composición.
I
Métodos mejorados según la distribución.
Método de la Transformada Inversa
I
X : una variable aleatoria discreta con probabilidad de masa
P(X = xj ) = pj ,
j = 0, 1, . . . .
I
U ∼ U(0, 1): simulación de una v.a. con distribución uniforme.
I
Método de la transformada inversa:


x0 si U < p0



x1 si p0 ≤ U < p0 + p1


.
X = ..



xj
si p0 + · · · + pj−1 ≤ U < p0 + · · · + pj−1 + pj




..
.
P(X = xj ) = P(p0 + · · · + pj−1 ≤ U < p0 + · · · + pj−1 + pj ) = pj .
Método de la Transformada Inversa
F (x) = P(X ≤ x) : Función de distribución acumulada
I
F es una función creciente, escalonada, que toma valores entre
0 y 1.
I
Si se ordenan los valores de la variable en forma creciente:
x0 < x1 < · · · < xn < . . . ,
entonces
F (xj ) =
j
X
k =0
pk = p0 + p1 + · · · + pj .
Gráficamente
y = F (x)
1
p3
p2
p1
p0
x0
x1
x2
x3
x4
p0 + p1 < U < p0 + p1 + p2
F (x)
1
p3
p2
p1
p0
x0
x1
x2
x3
X = x2
x4
Algoritmo
Si la v.a. toma un número finito de valores, el algoritmo es el
siguiente:
Algorithm 1: Transformada Inversa
Generar U ∼ U(0, 1);
if U < p0 then
X ← x0 y terminar.
end
if U < p0 + p1 then
X ← x1 y terminar.
end
if U < p0 + p1 + p2 then
X ← x2 y terminar.
end
..
.
Algoritmo de la Transformada Inversa
Si x0 < x1 < x2 < . . . , entonces F (xj ) =
Pj
i=0
pi , y por lo tanto
X ← x0
si
U < p0 = F (x0 )
X ← xj
si
F (xj−1 ) ≤ U < F (xj )
Se trata de hallar el intervalo [F (xj−1 ), F (xj )) donde se ubica U:
U ∈ [F (xj−1 ), F (xj ))
⇐=
Transformada Inversa
Ejemplo
X : {1, 2, 3, 4}.
p1 = 0.20,
Algorithm 2:
Generar U;
if U < 0.2 then
X ← 1 y terminar.
end
if U < 0.35 then
X ← 2 y terminar.
end
if U < 0.6 then
X ←3
else
X ←4
end
p2 = 0.15,
p3 = 0.25,
p4 = 0.40
Orden decreciente de pi
Si se ordenan de manera decreciente las probabilidades de masa
p0 , p1 , . . . , se puede obtener un algoritmo más eficiente:
Algorithm 3: Ordenando pi
Generar U;
if U < 0.4 then
X ← 4 y terminar.
end
if U < 0.65 then
X ← 3 y terminar.
end
if U < 0.85 then
X ←1
else
X ←2
end
Generación de una v.a. uniforme discreta
Si X ∼ U[1, n], entonces p1 = p2 = · · · = pn =
X =j
si
1
.
n
j −1
j
≤U<
n
n
j − 1 ≤ nU < j
X = bnUc + 1
siendo bxc la parte entera (inferior) de x.
Ejemplo
Generar una variable aleatoria discreta X , con distribución uniforme
en [5, 15].
I
El intervalo entero [5, 15] contiene 11 números enteros.
I
b11 Uc es un entero en [0, 10].
I
b11 Uc + 5 es un entero en [5, 15].
Algorithm 4: ]
X ∼ U [5,15] Generar U;
X ← b11Uc + 5
Generación de una permutación aleatoria
Aplicación: Generación de permutaciones aleatorias equiprobables
de un conjunto de n elementos.
Sea P1 , P2 , . . . , Pn una permutación de 1,2,. . . , n.
Algorithm 5: Permutación aleatoria de P1 , P2 , . . . , Pn
k ← n;
while k > 1 do
Generar U;
I ← [kU] + 1;
Intercambiar los valores de PI y Pk ;
k ←k −1
end
Ejemplo
I
Conjunto de 5 elementos: a, b, c, d, e.
I
k recorre el vector, de la posición n = 5 hasta 2.
I
I: selecciona un elemento entre las posiciones 1 y k para
intercambiar.
k
5
4
3
2
I
4
2
3
1
−→
−→
−→
−→
ae
bea
c
deb
ed
←−
←−
←−
←−
Subconjuntos aleatorios
I
I
I
Si el algoritmo anterior se ejecuta para
k = n, n − 1, . . . , n − (r − 1), se obtiene un subconjunto aleatorio
de cardinal r .
Si r > n/2, conviene tomar el complemento de un subconjunto
aleatorio de n − r elementos.
Aplicaciones:
I
I
Técnica del doble ciego.
Simulación: Problema de las dos muestras.
Permutaciones aleatorias
Otro método para generar una permutación aleatoria de un conjunto
de tamaño n consiste en
I
generar n números aleatorios U1 , U2 , . . . , Un ,
I
ordenarlos: Ui1 < Ui2 < · · · < Uin ,
I
utilizar los índices de los valores ordenados para hacer la
permutación.
Permutaciones aleatorias
Ejemplo
Obtener una permutación aleatoria de (a, b, c, d).
I
U1 = 0.4, U2 = 0.1, U3 = 0.8, U4 = 0.7.
I
U2 < U1 < U4 < U3 .
I
La permutación es (b, a, d, c).
Desventaja: Se requieren O(n log(n)) comparaciones.
Cálculo de promedios
Ejemplo
Aproximación del valor de
a=
n
X
a(i)
i=1
n
siendo que n 1.
I
I
Tomamos X uniforme discreta en [1, n].
a(X ) es una v.a. discreta con media
a = E[a(X )] =
n
X
a(i)P(X = i) =
i=1
I
I
n
X
a(i)
i=1
n
.
Generamos U1 , U2 , . . . , Uk aleatorios en (0, 1), Xi = bnUi c + 1.
Ley fuerte de los grandes números:
a≈
k
X
a(Xi )
i=1
k
k grande
Cálculo de promedios
Ejemplo
Utilizar 100 números aleatorios para aproximar
S=
10000
X
i=1
Algorithm 6: Promedio
S ← 0;
for i = 1 to 100 do
Generar U;
I ← b10000 Uc + 1;
S ← S + exp(I/10000)
end
S ← S ∗ 100
i
e 10000 .
Variable aleatoria geométrica
P(X = i) = pq i−1 ,
i ≥ 1,
q = (1 − p).
Tenemos que F (j − 1) = P(X ≤ j − 1) = 1 − P(X > j − 1) = 1 − q j−1 .
I
Método de la Transformada Inversa:
X ←j
si
1 − q j−1 ≤ U < 1 − q j
q j < 1 − U ≤ q j−1
I
Esto equivale a encontrar el menor j tal que q j < 1 − U.
X = min{j : q j < 1 − U}
Variable aleatoria geométrica
Propiedades:
I
El logaritmo es una función creciente,
I
log(q) es negativo,
I
V = 1 − U también es uniforme en (0, 1):
X
X
= min j : q j < 1 − U
= min {j : j log(q) < log(1 − U)}
log(1 − U)
= min j : j >
log(q)
log(1 − U)
=
+1
log(q)
log(V )
=
+1
log(q)
Variable Aleatoria Poisson
pi = P(X = i) = e−λ
λi
,
i!
i = 0, 1, . . .
Algorithm 7: Generación de una v.a. Poisson P(λ)
Generar U ∼ U(0, 1);
i ← 0, p ← e−λ , F ← p;
while U ≥ F do
p = (λ · p)/(i + 1);
F = F + p;
i =i +1
end
X ←i
Inconvenientes del Algoritmo 1
I
El algoritmo chequea desde 0 en adelante hasta obtener el valor
deseado.
I
El número de comparaciones es 1 más que el valor generado.
I
El valor generado esperado es λ. Luego, el promedio de
comparaciones es λ + 1.
I
Si λ 1, el algoritmo anterior realiza muchas comparaciones.
Mejora al Algoritmo 1
Para mejorar el algoritmo se utilizan las siguientes propiedades de la
distribución de Poisson:
λ
I Definición recursiva de pi : pi+1 =
pi , i ≥ 0.
i +1
λ
I pi+1 ≥ pi si y sólo si
≥ 1, es decir, i + 1 ≤ λ.
i +1
I El valor máximo de pi es pbλc , es decir, valores de i cercanos a λ.
Algoritmo mejorado
Algorithm 8: Generación de una v.a. Poisson P(λ)
I ← bλc;
Calcular F (I) usando la definición recursiva de pi ;
Generar U ∼ U(0, 1);
if U ≤ F (I) then
generar X haciendo búsqueda descendente.
end
if U > F (I) then
generar X haciendo búsqueda ascendente.
end
Algoritmo mejorado
I
El promedio de búsquedas es
1 + E [|X − λ|] .
I
Si λ 1, X aproxima a una normal, N(λ,
√
λ).
X −λ
√
∼ N(0, 1).
λ
I
Promedio de búsquedas:
1+
√
λE
|X − λ|
√
λ
√
λE[|Z |]
√
= 1 + 0.798 λ.
= 1+
Variable Aleatoria Binomial B(n, p)
pi = P(X = i) =
I
n!
pi (1 − p)n−i ,
i!(n − i)!
i = 0, 1, . . . , n
Caso similar al de generación de una v. a. Poisson.
I
E[X ] = n p
I
Var[X ] = n p(1 − p).
Conviene utilizar la fórmula recursiva:
pi+1 =
n−i p
pi ,
i +11−p
0 ≤ i < n.
Algoritmo para una Binomial
Algorithm 9: A: Generación de una v.a. Binomial B(n, p)
Generar U ∼ U(0, 1);
i ← 0;
c ← p/(1 − p);
Pr ← (1 − p)n ;
F ← Pr ;
while U ≥ F do
Pr ← [c(n − i)/(i + 1)]Pr ;
F ← F + Pr ;
i ←i +1
end
X ←i
Inconvenientes del algoritmo
I
El algoritmo chequea desde 0 en adelante hasta obtener el valor
deseado.
I
El número de comparaciones es 1 más que el valor generado.
I
El promedio de comparaciones es np + 1.
I
Existen métodos alternativos más eficientes.
Métodos alternativos para generar una Binomial
B(n, p)
I
Si p > 1/2, generar n − B(n, 1 − p). (menor número de
comparaciones).
I
Generar U1 , . . . , Un , y contabilizar cuántas son menores que p.
Es menos eficiente pues requiere n comparaciones.
Utilizar la sugerencia análoga para Poisson. (menor número de
comparaciones).
I
I
I
Valor más probable: i = bn pc.p
Promedio de búsquedas: 1 + np(1 − p) 0.798.
Descargar