Está en la página 1de 4

EJERCICIO 1

Suponga que se quieren simular observaciones de un vector aleatorio (X, Y) con


función de densidad:

1 −x(1+y2 )
f(X, Y) = e x > 0, −∞ < y < ∞
π

Obtenga las densidades X|Y & Y|X.


Usando el método Gibbs Sampler obtenga una muestra de la función de
densidad conjunta y grafíquela (utilice 1000 iteraciones).
Hacer el histograma de las marginales posteriores.

Marginales de X & Y

1 −x(1+y2) u = −x(1 + y2 ) 1 2 ∞ 1
f(y) = ∫ e dx { = e−x(1+y ) | = ∴ Y~Cauchy(0,1)
0 π du = −(1 + y2 )dx π(1 + y2 ) 0 π(1 + y2 )


1 −x(1+y2) e−x ∞ −xy2 u = y ∗ √x e−x ∞ −u2 e−x 0
2

2 e−x
f(x) = ∫ e dy = ∫ e dy { = ∫ e du = [∫ e−u du + ∫ e−u du] =
−∞ π π −∞ du = √xdy π√x −∞ π√x −∞ 0 √πx

1 −x(1+y2)
f(x, y) π e 2
fX|Y (x|y) = = = (1 + y2 )e−x(1+y ) ∴ X|Y~Exp(λ = 1 + y2 )
f(y) 1
π(1 + y2 )

1 −x(1+y2) y2
f(x, y) π e x −xy2 1 − 1
fY|X (y|x) = = = √ e = e 2(2x)−1 ∴ Y|X~N(μ = 0, σ = (2x)−1
f(x) e−x π √π ∗ √2−1 √2√2−1
√πx

Algoritmo
Entrada:
⎯ Distribuciones condicionales fY|X (y|x) & fX|Y (x|y).
⎯ Número máximo de iteraciones k.
⎯ Valor inicial Y´0 = y´0 .
Salida (Sucesión de Gibbs):
Paso 1. Sea i = 0, Y´0 = y´0 .
Paso 2. Mientras i + 1 ≤ k realizar Paso 3 & Paso 4.
Paso 3. Obtener X´i mediante fX|Y (X|Y´i = y´i ).
Paso 4. Obtener Y´i mediante fY|X (Y|X´i = X´i ).
Salida (X´i , Y´i ) *Algoritmo culminado satisfactoriamente*.
PARAR.
Paso 5. Salida cuando 𝑘 = 1000.
PARAR.
Código en R
k<-1000
X<-c()
Y<-c(0) #valor inicial es la mediana de Y~Cauchy(0,1)

for(i in 1:k){
X[i]<-rexp(1,1+Y[i]^2)
Y[i+1]<-rnorm(1,mean = 0, sd=sqrt((2*X[i])^-1))
}

par(mfrow=c(1,2))
hist(X,freq=F,xlab="X", ylab="Densidad marginal", col = "pink")
hist(Y,freq=F,xlab="Y", ylab="Densidad marginal", col = "gray")

library(scatterplot3d)
f<-function(x,h){(1/pi)*(exp(-h*(1+x^2)))}
x1=res$ale_x[-1]
h1=res$ale_h
z=numeric()
for(i in 1:1000)
{
z[i]=f(x1[i],h1[i])
}
scatterplot3d(x1,h1,z,highligth.3d=T,pch=20, xlab="x",ylab="y" ,main="Funcion de Densidad Conjunta")
EJERCICIO 2
Considere el siguiente modelo jerárquico, donde se tienen las siguientes
distribuciones:

X|θ~Bin(n, θ) θ~Beta(a, b) n~Po(λ)

Escriba el algoritmo Gibbs Sampler para hallar las densidades a posteriori.


Implemente el algoritmo en R y obtenga el histograma de las marginales
posteriores (utilice 1500 iteraciones).

Cálculos & Planteamiento

Bin~(n, θ)

Beta~(a, b)

Poisson~(λ)

n e−λ λn
π(θ, n|X) ∝ L(θ|X)P(θ|n)P(n) ∝ ( ) θx+a−1 (1 − θ)n+b−x−1
x n!

π(θ|X, n)~Beta(a + x, b + n − x)

n λn
π(n|θ, X)~ ( ) (1 − θ)n−x con n = X, X + 1. X + 2, … , cambio de variable ∶ Z = n − x ⇒ Z~Po(λ(1 − θ))
x n!

Algoritmo
Entrada:
⎯ Valores arbitrarios para los parámetros de las distribuciones.
⎯ Número máximo de iteraciones k.
⎯ Valor inicial X´0 = x´0, Θ´0 = θ´0 , N´0 = n´0, .
Salida (Sucesión jerárquica:
Paso 1. Sea i = 0, X´0 = x´0, Θ´0 = θ´0 , N´0 = n´0,
Paso 2. Mientras i ≤ k realizar Paso 3, Paso 4 & Paso 5.
Paso 3. Obtener θ𝑖 mediante ~Beta(a + X i , b + ni−1 − X i ).
Paso 4. Obtener n𝑖 mediante ~X i + z con Z~Po(λ(1 − θ)).
Paso 5. Obtener 𝑋 𝑖 mediante ~Bin(ni−1 , θi−1 ).
PARAR.
Paso 5. Salida cuando k = 1500.
PARAR.
Código en R
k <- 1500
a <- 4
b <- 5
lamb <- 2
matriz <- matrix(0, nrow = Nsimu, ncol = 3)
matriz[1, 2] <- rbeta(1, a, b)
matriz[1, 1] <- rbinom(1, matriz[1,3], matriz[1,2])
matriz[1, 3] <- rpois(1, lambda = lamb*(1-matriz[1,2]))
for(i in 2:k){
matriz[i,1] <- rbinom(1, matriz[i-1,3], matriz[i-1,2]) #X
matriz[i,2] <- rbeta(1, matriz[i,1]+a, matriz[i-1,3]+b-matriz[i,1]) #theta
matriz[i,3] <- rpois(1, lambda = lamb*(1-matriz[i,2])) #n
}

par(mfrow=c(1,3))
hist(matriz[,1],xlab= "X",ylab = "Densidad Marginal",freq = F, main="X|theta,n", col = "blue")
hist(matriz[,2],xlab=expression(theta),ylab = "Densidad Marginal",freq = F,main="theta|X,theta", col = "gray")
hist(matriz[,3],xlab="n",ylab = "Densidad Marginal",freq = F ,main="n|theta,X", col = "pink")

También podría gustarte