Vous êtes sur la page 1sur 52

SIMULACIÓN

Capı́tulo 3. Generación de variables aleatorias continuas

M. Teresa Rodrı́guez

Dpto. Estadı́stica e I.O. I

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 1 / 52


Generación de variables continuas

En este capı́tulo vamos a simular de una variable aleatoria continua X, con


función de densidad f (x) y función de distribución F (x).

Utilizaremos los siguientes métodos generales:


Método de inversión o de la transformada inversa
Método de rechazo
Método de composición

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 2 / 52


Método de inversión
El método de la transformada inversa o de inversión para variables
continuas se basa en el siguiente resultado.

Proposición
Supongamos que X tiene función de distribución continua F (x) y
estrictamente creciente siempre que 0 < F (x) < 1. Sea U ∼ U (0, 1).
Entonces, la variable aleatoria F −1 (U ) tiene como función de distribución
a F.

Demostración. Sea FX la función de distribución de F −1 (U ).


Demostraremos entonces que FX (x) = F (x) para todo x.

FX (x) = P (F −1 (U ) ≤ x) = P (F (F −1 (U )) ≤ F (x))
= P (U ≤ F (x)) = F (x)
M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 3 / 52
Método de inversión

Entonces, el algoritmo para generar de X es

Generar U ∼ U (0, 1)
X = F −1 (U )

La condición mı́nima que requiere el método para poder aplicarse es que se


conozca de forma explı́cita F −1 , o bien se pueda calcular
aproximadamente.

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 4 / 52


Método de inversión

Ejemplo
Vamos a simular de la distribución uniforme continua.
1
Sea X ∼ U (a, b), de modo que f (x) = b−a para a < x < b. Entonces


 0 x<a
x−a
F (x) = b−a a≤x<b
1 x≥b

Primero genero U ∼ U (0, 1) y tomo como valor generado

x−a
U =
b−a
x = a + U (b − a)

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 5 / 52


Método de inversión

Ejemplo (continuación)
El algoritmo para generar un valor de X es

Generar U ∼ U (0, 1)
X = a + U (b − a)

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 6 / 52


Método de inversión

Ejemplo
Vamos simular de la distribución exponencial.

Si X ∼ Exp(λ), la función de densidad es

f (x) = λ exp{−λx} para x > 0


y la función de distribución es

F (x) = 1 − exp{−λx} para x > 0

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 7 / 52


Método de inversión

Ejemplo (continuación)
Entonces, genero U ∼ U (0, 1) y tomo

U = 1 − exp{−λx}
exp{−λx} = 1 − U
−λx = ln(1 − U )
ln(1 − U )
x = −
λ

o equivalentemente, x = − ln(U
λ
)

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 8 / 52


Método de inversión

Ejemplo (continuación)
El algoritmo para generar un valor de X es

Generar U ∼ U (0, 1)
X = − ln(U
λ
)

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 9 / 52


Método de inversión

Ejemplo
Vamos a simular de la distribución Gamma.

Si X ∼ Gamma(n, λ), la función de densidad es

λn
f (x) = exp{−λx}xn−1 para x > 0
(n − 1)!
y la función de distribución es
Zx
λn
F (x) = exp{−λy}y n−1 dy para x > 0
(n − 1)!
0

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 10 / 52


Método de inversión

Ejemplo (continuación)
Al no existir una fórmula explı́cita de la integral anterior, no resulta posible
aplicar directamente el método de inversión.

Sin embargo, si X1, . . . , Xn son independientes y tales que Xi ∼ Exp(λ)


para todo i, entonces

n
X
Xi ∼ Gamma(n, λ)
i=1

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 11 / 52


Método de inversión

Ejemplo (continuación)
Esto sugiere utilizar el siguiente algoritmo

Generar U1, . . . , Un independientes


X = − ln(U
λ
1)
− ··· − ln(Un )
λ = − ln(U1λ···Un )

A partir de esta distribución se puede generar la distribución de Poisson y


la geométrica.

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 12 / 52


Ejemplo. Distribución de Poisson

Vamos a simular de la distribución de Poisson.

El siguiente algoritmo se basa en la relación existente entre la distribución


de Poisson y la exponencial.

Si los tiempos entre sucesos de un proceso puntual son variables aleatorias


independientes distribuidas según una exponencial, entonces el número de
sucesos en un intervalo de duración 1 sigue una distribución de Poisson.

Es decir, si Ti ∼ Exp(λ) independientes, entonces

X = {número de sucesos en (0, 1)} ∼ P oisson(λ)

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 13 / 52


Ejemplo. Distribución de Poisson

Entonces, como

X
X X+1
X
Ti ≤ 1 < Ti
i=1 i=1

X+1
P
vamos a ir generando valores hasta que Ti > 1
i=1

Recordamos que para generar un valor de Ti ∼ Exp(λ), debemos generar


U ∼ U (0, 1) y hacemos Ti = − lnλU

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 14 / 52


Ejemplo. Distribución de Poisson

de forma que el algoritmo que utilizaremos es

Hacer t = 0, i = 0
Hasta que t > 1
Generar U ∼ U (0, 1)
t = t − λ1 ln U
i=i+1
X = i − 1 y salir

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 15 / 52


Ejemplo. Distribución de Poisson

Podemos escribir otro algoritmo observando que

X
X X+1
X
Ti ≤ 1 < Ti
i=1 i=1
X X+1
1X 1 X
− ln Ui ≤ 1 < − ln Ui
λ λ
i=1 i=1
X
Y X+1
Y
Ui ≥ e−λ > Ui
i=1 i=1

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 16 / 52


Ejemplo. Distribución de Poisson

Un algoritmo equivalente serı́a entonces


Hacer a = 1, i = 0
Hasta que a < e−λ
Generar U ∼ U (0, 1)
Hacer a = aU
i=i+1
X = i − 1 y salir

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 17 / 52


Ejemplo. Distribución Geométrica

A continuación vamos a generar de la distribución geométrica. Si


Y ∼ Exp(λ), entonces X = [Y ] ∼ Geom(p = 1 − e−λ ) ya que

P (X = r) = P ([Y ] = r) = P (r ≤ Y < r + 1)
r+1
Z
= λe−λs ds = (e−λ )r (1 − e−λ ) = (1 − p)r p
r

de donde p = 1 − e−λ , y por tanto λ = − ln(1 − p)

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 18 / 52


Ejemplo. Distribución Geométrica

Entonces, para simular X ∼ Geom(p) basta generar


Y ∼ Exp(− ln(1 − p)) y entonces X = [Y ]. El algoritmo que se utilizará es

Generar U ∼ U (0, 1)
h i
ln U
Hacer X = ln(1−p) y salir

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 19 / 52


Método del rechazo

Fue introducido por von Neumann en 1951.

Supongamos que queremos muestrear de una variabla aleatoria X ∼ f (x),


y supongamos además que podemos muestrear de Y ∼ g(y), tal que
f (x) ≤ ag(x) ∀x.

El método del rechazo sugiere utilizar el siguiente algoritmo:


f (Y )
Hasta que U ≤ ag(Y )
Generar U ∼ U (0, 1) y generar Y ∼ g(y)
Hacer X = Y y salir

El método del rechazo equivale a generar valores Ua = aU ∼ U (0, a),


generar Y ∼ g(y) y aceptar X = y si Ua ≤ fg(Y(Y )
).
A continuación vamos a demostrar que X ∼ f (x).

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 20 / 52


Método del rechazo

FX (x) = F (x|aceptar x) = P (X ≤ x|aceptar x)


P (X ≤ x, aceptar x) P (X ≤ x, Ua ≤ fg(x) (x)
)
= = f (x)
P (aceptar x) P (Ua ≤ g(x) )
 f (y) 
Rx g(y)
R g(y) Rx h f (y)
a dua dy
  i
−∞ 0
g(y) dy
g(y)
−∞
= =
 f (y)  R∞ hh f (y)
ii
R∞ g(y)
R g(y) g(y) g(y) dy
 dua  dy −∞
a
−∞ 0

Rx
f (y)dy Zx
−∞
= = f (y)dy = F (x)
R∞
f (y)dy −∞
−∞
M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 21 / 52
Método del rechazo

Observamos que
 f (y) 
f (x) R∞ g(y)
R g(y) 1
P (aceptar x) = P (Ua ≤ g(x) ) = 
a dua dy = a , es decir

−∞ 0
1
la eficiencia del método es a
Si W ={número de pruebas hasta aceptar un valor}, entonces
W ∼ Geom( a1 )
Además, E(W ) = a, es decir, el número medio de iteraciones
necesarias hasta conseguir aceptar un valor es a
Cuanto más pequeño sea a, es decir, más próximo esté a 1, mejor
será el método

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 22 / 52


Método del rechazo

Ejemplo
Vamos a generar de la distribución beta. Supongamos que queremos
generar X ∼ Beta(3, 4)

La función de densidad es

Γ(3 + 4) 3−1
f (x) = x (1 − x)4−1 = 60x2 (1 − x)3
Γ(3)Γ(4)

para 0 < x < 1

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 23 / 52


Método del rechazo

Ejemplo (continuación)
Sea Y ∼ U (0, 1), de forma que g(y) = 1 para 0 < y < 1

Entonces,

f (x) 2
arg max = arg max 60x2 (1 − x)3 =
0<x<1 g(x) 0<x<1 5
f (2/5) 1296 f (x) 625 2
y por tanto, a = g(2/5) = 625 y ag(x) = 1296 60x (1 − x)3

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 24 / 52


Método del rechazo

Ejemplo (continuación)
El algoritmo para generar X es

625 2
Hasta que U2 ≤ 1296 60U1 (1 − U1 )3
Generar U1 ∼ U (0, 1) y U2 ∼ U (0, 1)
Hacer X = U1 y salir

La eficiencia del método es a1 = 0.48 y el número medio de iteraciones


necesarias hasta aceptar un valor es a = 2.07

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 25 / 52


Método del rechazo

Ejemplo
Vamos a generar de la distribución Gamma. La función de densidad de
la distribución Gamma(α, 1) es

xα−1 e−x
f (x) =
Γ(α)
para 0 ≤ x < ∞ y α > 0

Si α < 1, se verifica que

xα−1 e−x ≤ xα−1 si 0 ≤ x ≤ 1


xα−1 e−x ≤ e−x si x > 1

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 26 / 52


Método del rechazo

Ejemplo (continuación)
Entonces, f (x) ≤ ag(x) si

xα−1 si 0 ≤ x ≤ 1

g(x) = k
e−x si x > 1

R1 R∞
donde k y α−1 dy + k e−y dy = 1, es decir k = 1
1
+ 1e
0 1 α

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 27 / 52


Método del rechazo

Ejemplo (continuación)
Si 0 ≤ x ≤ 1, entonces

f (x) xα−1 e−x e−x 1


= α−1
= ≤
g(x) Γ(α)kx Γ(α)k Γ(α)k

y si x > 1

f (x) xα−1 e−x xα−1 1


= −x
= ≤
g(x) Γ(α)ke Γ(α)k Γ(α)k

1
de donde a = Γ(α)k

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 28 / 52


Método del rechazo

Ejemplo (continuación)
Entonces

e−x

f (x) si 0 ≤ x ≤ 1
=
ag(x) xα−1 si x > 1

Para generar X ∼ f, se genera Y ∼ g utilizando el método de inversión, y


f (Y )
se acepta el valor generado con probabilidad ag(Y )

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 29 / 52


Método del rechazo

Ejemplo (continuación)
El algoritmo es

e−Y

si 0 ≤ Y ≤ 1
Hasta que U ≤
Y α−1 si Y > 1
Generar U ∼ U (0, 1)
Generar Y ∼ g
Hacer X = Y y salir

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 30 / 52


Método de composición

Vamos a utilizar el método de composición para generar de una mixtura


continua con función de densidad

Z
f (x) = g(x|y)dH(y)

donde g(x|y) es una familia de densidades dependientes de un parámetro


y, que a su vez tiene función de distribución H

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 31 / 52


Método de composición

El método de composición propone simular Y ∼ H(y) y a continuación


simular X ∼ g(x|Y )

Entonces el algoritmo que debemos utilizar es el siguiente

Generar Y ∼ H
Generar X ∼ g(·|Y ) y salir

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 32 / 52


Método de composición

Ejemplo
Vamos a simular la densidad predictiva de un modelo Bayesiano

Sea X ∼ f (x|θ) y θ ∼ π(θ), entonces la distribución predictiva es

Z
f (x) = f (x|θ)dπ(θ)

Para simular un valor de f (x), se simula un valor θ0 ∼ π(θ) y a


continuación se simula un valor X ∼ f (x|θ0 )

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 33 / 52


Método de composición

Ejemplo
Vamos a simular de una mixtura de exponenciales

Supongamos que X|Y = y ∼ Exp(y), es decir


X|Y = y ∼ g(x|y) = ye−xy si 0 < x < ∞

Supongamos además que Y ∼ H(y), donde H(y) = 1 − y −n para y > 1 y


n ≥ 1, es decir

f (y) = ny −n−1
si y > 1 y n ≥ 1

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 34 / 52


Método de composición
Ejemplo (continuación)
Entonces X ∼ f (x) con
Z∞ Z∞
f (x) = g(x|y)f (y)dy = n ye−xy y −n−1 dy
1 1

Por tanto, hay que generar Y ∼ H(y) y X ∼ Exp(Y ).


Para generar Y ∼ H(y), se utiliza el método de inversión. Para ello se
genera U ∼ U (0, 1) y entonces

Y = H −1 (U )
H(Y ) = U
1 − Y −n = U
Y = (1 − U )−1/n
M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 35 / 52
Método de composición

Ejemplo (continuación)
Es decir, genero U ∼ U (0, 1) y entonces Y = U −1/n

Ahora, hay que generar X ∼ Exp(Y ), es decir, se genera U ∼ U (0, 1) y


X = − Y1 ln U

El algoritmo es el siguiente

Generar U1 ∼ U (0, 1) y U2 ∼ U (0, 1)


1/n
Hacer X = −U1 ln U2 y salir

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 36 / 52


Método de composición
Ejemplo
Vamos a generar de una mixtura finita de distribuciones continuas

Supongamos que X ∼ f (x), donde

n
X n
X
f (x) = pi g(x|Y = i) = pi gi (x)
i=1 i=1
n
P
siendo pi = P (Y = i), pi = 1 y gi (x) funciones de densidad
i=1

El algoritmo para generar de f es

Generar Y ∼ {pi }
Generar X ∼ gY y salir
M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 37 / 52
Distribución normal

Método de inversión

No existe una fórmula explı́cita para la función de distribución F (x), pero


existe la siguiente aproximación a la inversa:

U 0.135 − (1 − U )0.135
X = F −1 (U ) ≈
0.1975

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 38 / 52


Distribución normal

Suma de doce uniformes

Se basa en el teorema central del lı́mite.


Si {Ui } ∼ U (0, 1) independientes para i = 1, . . . , n, de forma que
E(Ui ) = 1/2 y V (Ui ) = 1/12, entonces

n
Ui − n2
P

X = i=1
p
n/12
tiene como distribución asintótica una N (0, 1)

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 39 / 52


Distribución normal

Una buena aproximación se obtiene con n = 12, con lo que

n
Ui − n2
P
12
X = i=1
X
p = Ui − 6
n/12 i=1

El algoritmo para generar de la N (0, 1) es

Generar U1 , · · · , U12 ∼ U (0, 1)


12
P
Hacer X = Ui − 6 y salir
i=1

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 40 / 52


Distribución normal

Método de Box-Muller

Este método se utiliza para generar dos valores X, Y ∼ N (0, 1)


independientes.

La función de densidad conjunta es

1 x2 1 y2
f (x, y) = f (x)f (y) = √ exp{− } √ exp{− }
2π 2 2π 2
1 2
x +y 2
= exp{− }
2π 2

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 41 / 52


Distribución normal

Sean (R2 , θ) las coordenadas polares de (X, Y ), es decir

R2 = X 2 + Y 2
Y
tan θ =
X

Entonces

X = R cos θ
Y = R sin θ

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 42 / 52


Distribución normal

Para calcular la densidad de (R2 , θ), debemos calcular el jacobiano de la


transformación

∂X ∂X cos θ
−R sin θ cos2 θ + sin2 θ


∂R2 ∂θ

2R
1
J = ∂Y ∂Y
=
sin θ = =
∂R2 ∂θ

2R R cos θ 2 2

Entonces

1 1 −r2
f (r2 , θ) = exp{ }
2 2π 2

para r2 ≥ 0 y 0 ≤ θ ≤ 2π

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 43 / 52


Distribución normal

Además

1 1 −r2
f (r2 , θ) = exp{ } = f (θ)f (r2 )
2π 2 2

y por tanto R2 ∼ Exp(1/2) y θ ∼ U (0, 2π) independientes.

Para generar R2 ∼ Exp(1/2), debemos generar U1 ∼ U (0, 1) y hacer


R2 = − ln1/2
U1
= −2 ln U1

Para generar θ ∼ U (0, 2π), se genera U2 ∼ U (0, 1) y se hace θ = 2πU2

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 44 / 52


Distribución normal

El algoritmo para generar dos variables normales independientes es

Generar U1 , U2 ∼ U (0, 1)

Hacer X = −2 ln U1 cos{2πU2 }

Hacer Y = −2 ln U1 sin{2πU2 } y salir

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 45 / 52


Distribución normal

Variante de Marsaglia

La necesidad de calcular el seno y el coseno en el método de Box-Muller,


hace que existan métodos mas eficientes.

La variante de Marsaglia elimina el cálculo del seno y el coseno.

Si U ∼ U (0, 1), entonces 2U ∼ U (0, 2) y 2U − 1 ∼ U (−1, 1)

Si generamos U1 , U2 ∼ U (0, 1) y tomamos V1 = 2U1 − 1 y V2 = 2U2 − 1,


entonces (V1 , V2 ) ∼ U (A), donde A es el cuadrado

A = {(x, y) ∈ R2 : −1 ≤ x ≤ 1, −1 ≤ y ≤ 1}

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 46 / 52


Distribución normal

La idea consiste en ir generando pares (V1 , V2 ) hasta obtener un par


contenido en el cı́rculo

C = {(x, y) ∈ R2 : x2 + y 2 ≤ 1}

1
De esta forma (V1 , V2 ) ∼ U (C), de donde f (v1 , v2 ) = π

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 47 / 52


Distribución normal

Para generar valores de la distribución anterior utilizamos el siguiente


algoritmo

Hasta que (2U1 − 1)2 + (2U2 − 1)2 ≤ 1


Generar U1 , U2 ∼ U (0, 1)
Hacer V1 = 2U1 − 1 y V2 = 2U2 − 1 y salir

Haciendo de nuevo el cambio a coordenadas polares

R2 = V12 + V22
V2
tan θ =
V1

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 48 / 52


Distribución normal

V1 = R cos θ
V2 = R sin θ

1
siendo J = 2

Entonces

1
f (r2 , θ) = = f (θ)f (r2 )

y por tanto R2 ∼ U (0, 1) y θ ∼ U (0, 2π) independientes.

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 49 / 52


Distribución normal

Entonces, seguiremos los siguientes pasos

Genero (V1 , V2 ) ∼ U (C). Para ello genero U1 , U2 ∼ U (0, 1), hago


V1 = 2U1 − 1 y V2 = 2U2 − 1 y se aceptan V1 y V2 si
U = V12 + V22 ≤ 1
V1
Como V1 = R cos θ, se hace cos θ = R
V2
Como V2 = R sin θ, se hace sin θ = R

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 50 / 52


Distribución normal

Entonces,
√ volviendo a las√ecuaciones de Box-Muller, se hace
X = −2 ln U1 cos θ = −2 ln U1 VR1
√ √
Se hace Y = −2 ln U1 sin θ = −2 ln U1 VR2
Ahora, como U = V12 + V22 ≤ 1 y en este caso, √
R2 = U = V12 + V22 ∼ U (0, 1), sustituyo U1 por U y R por U
Entonces

r
√ V1 −2 ln U
X = −2 ln U √ = V1
U U
r
√ V2 −2 ln U
Y = −2 ln U √ = V2
U U

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 51 / 52


Distribución normal

Entonces, el algoritmo queda

Hasta que U ≤ 1
Generar U1 , U2 ∼ U (0, 1), hacer V1 = 2U1 − 1, V2 = 2U2 − 1 y
U = V12 + V22
q q
Hacer X = V1 −2Uln U e Y = V2 −2Uln U y salir

M. Teresa Rodrı́guez (EIO I) SIMULACIÓN 52 / 52

Vous aimerez peut-être aussi