Está en la página 1de 27

Generación de variables aleatorias

Método de Metropolis-Hastings
Evaluación de la Bondad de ajuste de la simulación
Distributiones Multivariadas

2 / 28
Método de Metropolis-Hastings

Método de Metropolis-Hastings

Este método nos permite simular una v.a. cualquiera con función de
distribución f (.), construyendo una cadena de Markov cuya distribución
estacionaria es precisamente la distribución de interés f (x).

Construir este tipo de cadenas de Markov es sorprendemente fácil. Aho-


ra describiremos el método propuesto por Hastings(1970), que es una
generalización de la metodologı́a propuesta por Metropolis et al (1953).

3 / 28
Método de Metropolis-Hastings

Para implementar el algoritmo de Metropolis-Hastings, consideraremos la


siguiente notación:

X el valor anterior de la simulación

q(. | X) es una función de probabilidad de la cual es fácil de generar


que es denominada distribución generadora de candidatos, debemos
notar que esta puede depender del valor anterior de la simulación X.

Y es un valor candidato generado de q(. | X).


 
α(X, Y ) = min 1, ff (X)q(Y
(Y )q(X|Y )
|X) es la probabilidad de aceptar el valor
candidato.

4 / 28
Método de Metropolis-Hastings

Ası́ el algoritmo puede ser expresado de esta forma:

1 Iniciar en un valor X0 , t = 0

2 X = Xt

3 Generar un valor Y de q(. | X)

4 Generar un valor u ∼ U (0, 1)

5 Si u ≤ α(X, Y ) entonces Xt+1 = Y (se acepta el valor candidato)


en caso contrario Xt+1 = X (se rechaza el valor candidato y se
utiliza el valor anterior)

6 Incrementamos t en una unidad. Ir al paso 2 y repetir hasta completar


la muestra.

5 / 28
Método de Metropolis-Hastings

Extraordinariamente, la distribución generadora de candidatos q(. | .)


puede tener cualquier forma y la distribución estacionaria de la cadena
será f (.). Usualmente se escoge para q(. | .) una distribución simétrica
centrada en el valor anterior, por ejemplo, una normal o una t-Student.

En el caso de utilizar una distribución normal, Gelman(1995) recomien-


da utilizar como variancia c2 Σ, con c = 2.4 y Σ la varianza de f (.).

Observación: Igual que en los métodos de aceptación y rechazo solo


necesitamos conocer la función de densidad a menos de una constan-
te, esto es, el algoritmo de Metropolis-Hastings puede ser aplicado en
h(x), donde f (x) = kh(x) para algún valor desconocido de k. esto es
particularmente útil en inferencia bayesiana.

6 / 28
Método de Metropolis-Hastings

Ejemplo 14

Generar observaciones una distribución normal asimétrica con parámetro


de asimetria igual a 5.

La función de densidad de una distribución normal asimétrica es dada


por
f (x) = 2φ(x)Φ(λx).
Consideraremos como función generadora de candidato a una Normal
centrada en el valor anterior , siguiendo la sugerencia de Gelman(1995),
2λ2
y con variancia σ 2 = c2 V ar(Z) = c2 (1 − 1+λ 2 ) ≈ 2.25.

2
1 1 (Y −X)
q(Y | X) = √ e− 2 σ 2
2πσ

7 / 28
Método de Metropolis-Hastings

Entonces la probabilidad de aceptar un valor candidato será dada por


(x−Y )2
 
1 − 12
 2φ(Y )Φ(λY ) 2πσ e
√ σ 2

α(X, Y ) = min 1,



1 (Y −X)2

1 −
2φ(X)Φ(λX) 2πσ e
√ 2 σ 2

 
2φ(Y )Φ(λY )
= min 1,
2φ(X)Φ(λX)

una vez que hecho estos cálculos, implementar el algoritmo en R.

8 / 28
Método de Metropolis-Hastings

library ( sn )
# Tama~ n o de la muestra
N < -10000
lambda < -5
sigma < -2.4* sqrt (1 -2* lambda ^2/( pi *(1+ lambda ^2) ) )
# Valor inicial
z < -1
# Algoritmo de Metropolis Hastings
for ( h in 2: N ) {
x < - z [h -1] # valor anterior
y < - rnorm (1 ,x , sigma ) # valor candidato
u < - runif (1)
alpha < - min (1 , dsn (y , alpha = lambda ) / dsn (x , alpha = lambda ) )
# prob . de aceptar al candidato

if (u <= alpha ) { z [ h ] < - y } # acepta al candidato


if (u > alpha ) { z [ h ] < - x } # rechaza al candidato
# y se toma el valor anterior
}

hist (z , prob = T )
curve ( dsn (x , shape =5) , col =2 , add = T ) 9 / 28
Método de Metropolis-Hastings

Ejercicio

Generar observaciones de una t(4).

10 / 28
Evaluación de la Bondad de ajuste de la simulación

Evaluación de la Bondad de ajuste de la simulación


Una forma de verificar que una simulación es realizar una Prueba de
Bondad de ajuste.

Para ilustrar esta prueba considere el ejercicio 1 de simular valores de


una Exp(3).

Cuando X ∼ Exp(3) tenemos que F (X) = 1 − e−3x . Por lo tanto


podemos formar cuatro intervalos arbitrarios en el rango de X, como
por ejemplo.

θ1 = P (X < 0.1) = F (0.1) = 1 − e−3(0.1) = 0.2592


θ2 = P (0.1 < X < 0.4) = F (0.4) − F (0.1) = 1 − e−3(0.4) − 1 + e−3(0.1) = 0.43962
θ3 = P (0.4 < X < 0.7) = F (0.7) − F (0.4) = 1 − e−3(0.7) − 1 + e−3(0.4) = 0.17874
θ4 = P (X > 0.7) = 1 − F (0.7) = 1 − 1 + e−3(0.7) = 0.1225

11 / 28
Evaluación de la Bondad de ajuste de la simulación

Considere n = 30 valores simulados. Definimos:


Proporción observada: pi
Proporción esperada : θi
Observado: pi × n
Esperado: θi × n
k
X (θi − pi )2
Discrepancia: W = n
i=1
θi
k: número de intervalos

12 / 28
Evaluación de la Bondad de ajuste de la simulación

Los valores obtenidos son presentados en el siguiente cuadro


Intervalo A B C D
θ 0.2592 0.43962 0.17874 0.1225
p 0.33 0.4 0.1667 0.1
n×p 10 12 5 3
n×θ 7.8 13.2 5.4 3.7
W 0.6364 0.10714 0.02446 0.1235
4
X (θi − pi )2
W = n = 0.891
θi
i=1
.

13 / 28
Evaluación de la Bondad de ajuste de la simulación

La estadı́stica W mide las discrepancias entre el número esperado de


valores simulados y el número observado, esta medida sigue una distri-
bución estadı́stica llamada Distribución Chi-cuadrado con k − 1 grados
de libertad.
k
X (θi − pi )2 2
W = n ∼ X(k−1)
θi
i=1

Donde k es el número de intervalos formados.


Luego, si W > W1−α entonces a un nivel de significancia del 100α %
se rechaza la hipótesis que los valores simulados provengan de la distri-
bución en estudio. Donde W1−α es el cuantil 1 − α de una distribución
χ2(k−1) .

14 / 28
Evaluación de la Bondad de ajuste de la simulación

En el fondo se está haciendo una prueba de hipótesis donde:


H0 : Los valores simulados provienen de la distribución considerada.
H1 : Los valores simulados no provienen de la distribución considerada.

El valor de W1−α se obtiene en R usando qchisq(). En el ejemplo el


valor de W1−α para un nivel de significación del 95 % y k = 4 − 1 = 3
grados de libertad es W0.95 = 7.81 (qchisq(0.95,3)).

Como W = 0.891 > W0.95 . Entonces nuestra decisión será no re-


chazar H0 , es decir no tenemos evidencia que la simulación no sea
adecuada.

15 / 28
Evaluación de la Bondad de ajuste de la simulación

Ejercicios Adicionales

Encontrar un algoritmo para generar valores aleatorias de las siguientes dis-


tribuciones:

2 2
1 f (x) = √ (x + 1)e−x , x > 0
π+1

1 1 1
2 f (x) = k √ e− 2 (x+ x ) , x > 0
x

4x
3 f (x) = ,x>0
(1 + x2 )2

16 / 28
Distribuciones Multivariadas

Normal Multivariada
Un vector aleatorio de n-dimensional X = (X1 , ..., Xn )T se dice que
tiene distribución normal multivariada si su función de densidad es dada
por
 
1 1 T −1
f (X) = exp − (X − µ) Σ (X − µ)
(2π)k/2 |Σ|1/2 2
E (X) = µ

V ar (X) = Σ donde
σ12
 
σ1,2 ··· σ1,n
 σ1,2 σ22 ··· σ2,n 
Σ=
 
.. .. .. .. 
 . . . . 
σ1,n σ2,n · · · σn2
V ar(Xi ) = σi2 y cov(Xi , Xj ) = σi,j
Notación: X ∼ N (µ, Σ).
17 / 28
Distribuciones Multivariadas

Propiedades

Para generar X ∼ N (µ, Σ) se utiliza la siguiente transformación:

X = µ + RT Z
Z ∼ N (0, I), esto es Z es un vector de n valores de una normal
estándar.

R es una matriz n × n tal que RT R = Σ.

Para obtener este matriz R se puede utilizar la descomposición de


Cholesky.

18 / 28
Distribuciones Multivariadas

Uso de R

En el R la distribución normal multivariada está implementada en la


librerı́a mnormt.

Para generar valores aleatorios se utiliza la función rmnorm dando como


parámetros el vector de medias y la matriz de varianzas-covarianzas.

19 / 28
Distribuciones Multivariadas

Ejemplo

   
−2 1 0.7
Generar de X ∼ N ,
3 0.7 1

20 / 28
Distribuciones Multivariadas

Ejemplo

Utilizaremos la propiedad de la normal para esto primero encontramos


la descomposición de Cholesky de la matriz de varianzas-covarianzas.

Sigma<-matrix(c(1,0.7,0.7,1),2,2)

R<-chol(Sigma)

> R
[,1] [,2]
[1,] 1 0.7000000
[2,] 0 0.7141428

21 / 28
Distribuciones Multivariadas

Ejemplo
Utilizamos ahora
X = µ + RT Z
M<-10000

mu<-c(-2,3)

X<-matrix(0,M,2)

for(h in 1:M){

Z<-rnorm(2)

X[h,]<-mu+t(R)%*%Z

}
22 / 28
Distribuciones Multivariadas

Ejemplo

Para verificar podemos calcular el vector de medias y la matriz de


varianzas-convarianzas

> colMeans(X)
[1] -1.995321 3.000936

> var(X)
[,1] [,2]
[1,] 1.0008168 0.7019071
[2,] 0.7019071 1.0003016
>

23 / 28
Distribuciones Multivariadas

Ejemplo

Otra forma es acerca un gráfico de los valores simulados con un gráfico


de contornos de la distribución normal multivariada

plot(X,col=0)
points(X,cex=0.5,pch=16)
f<-function(x,y){dmnorm(cbind(x,y),mean=mu,varcov=Sigma)}
x<-seq(-6,2,0.1)
y<-seq(-1,8,0.1)
z<-outer(x,y,f)
contour(x,y,z,add=T,col=2,lwd=2,nlevels=10)

24 / 28
Distribuciones Multivariadas

Ejercicio

Utilice ahora la función rmnorm.

25 / 28
Distribuciones Multivariadas

Distribución t multivariada

La distribución t de student puede ser generalizada al caso multivariado.


La distribución t multivariada para n dimensiones donde cada variable
aleatoria (dimensión) es una distribución t univariada. En este caso es
dada por
−(v+n)/2
Γ( v+n (X − µ)T Σ−1 (X − µ)

2 )
f (X | µ, Σ, v) = 1+
(πv)n/2 Γ( v2 )|Σ|1/2 v

donde x es un vector columna de n componentes, µ es el vector de


tamaño n , y Σ es un matriz definida positiva n×n. Si la media es cero,
entonces la distribución se dice centrada. Similar al caso univariado,
cuando los grados de libertad son grandes, entonces la distribución
conjunta se aproxima a la normal n variada.

26 / 28
Distribuciones Multivariadas

Propiedades
v
E(X) = µ si v > 1 y V ar(X) = Σ si v > 2.
v−2

Para generar X ∼ t(µ, Σ, v) se utiliza la siguiente transformación:

Z
X = µ + RT √
w
Z ∼ N (0, I), esto es Z es un vector de n valores de una normal
estándar.

R es una matriz n × n tal que RT R = Σ.

Para obtener este matriz R se puede utilizar la descomposición de


Cholesky.
v v 
w ∼ Gama ,
2 2
27 / 28
Distribuciones Multivariadas

Ejercicio

    
−2 1 0.7
Generar de X ∼ t , ,4
3 0.7 1

28 / 28

También podría gustarte