# ANALISIS DEL MODELO CAUCHY VIA GIBBS SAMPLING
gibbscau_function(N, R, l10, l20)
{
# N: Tamanio de la muestra
# R: Numero de iteraciones
# l10,l20: Valores iniciales
sal <- list(muestras=0,medias=0)
l1 <- rgamma(N, l10)
l2 <- rgamma(N, l20)
thm <- 1:R
l1m <- 1:R
l2m <- 1:R
for(i in 1:R) {
mu <- (-5 * l1 + 3 * l2)/(l1 + l2)
sc <- 1/(l1 + l2)
th <- rnorm(N, mu, sqrt(sc))
thm[i] <- mean(th)
a <- 1
b1 <- 0.5 * (1 + (th + 5)^2)
b2 <- 0.5 * (1 + (th - 3)^2)
l1 <- rgamma(N, a)/b1
l2 <- rgamma(N, a)/b2
l1m[i] <- mean(l1)
l2m[i] <- mean(l2)
print(i)
}
sal$muestras <- cbind(th,l1,l2)
sal$medias <- cbind(thm,l1m,l2m)
sal
}
N_5000
R_1100
gc_gibbscau(N,R,0.5627507,0.5363435)
#------------
# Diagnostico
th_gc$muestras[,1]
thm_gc$medias[,1]
l1_gc$muestras[,2]
l2_gc$muestras[,3]
l1m_gc$medias[,2]
l2m_gc$medias[,3]
ITC_trunc(R/11)
IT_R
thme_thm[(ITC+1):IT]
l1me_l1m[(ITC+1):IT]
l2me_l2m[(ITC+1):IT]
thmeg_cumsum(thme)/(1:(IT-ITC))
l1meg_cumsum(l1me)/(1:(IT-ITC))
l2meg_cumsum(l2me)/(1:(IT-ITC))
win.graph()
par(mfrow=c(3,2))
plot(thmeg,type="l",xlab="Iteracion",ylab="theta")
title("Promedios ergodicos: theta")
hist(th,xlab="theta",main="Distribucion final de theta",nclass=100,prob=T)
plot(l1meg,type="l",xlab="Iteracion",ylab="lambda_1")
title("Promedios ergodicos: lambda_1")
hist(l1,xlab="l1",main="Distribucion final de lambda_1",nclass=100,prob=T)
plot(l2meg,type="l",xlab="Iteracion",ylab="lambda_2")
title("Promedios ergodicos: lambda_2")
hist(l2,xlab="l2",main="Distribucion final de lambda_2",nclass=100,prob=T)
#---------------------------
# Medias y Varianzas finales
c(mean(th),var(th))
>
> [1] -1.013873 17.321513
>
c(mean(l1),var(l1))
>
> [1] 0.5581948 1.3310835
>
c(mean(l2),var(l2))
>
> [1] 0.5502849 1.2409282
>
#------------------------
# Densidad final de theta
final_function(tha, l1, l2)
{
N <- length(l1)
promedio <- seq(0, 0, length = N)
suma <- 0
media <- 0
var <- 0
for(i in 1:N) {
media <- (l1[i] * (-5) + l2[i] * 3)/(l1[i] + l2[i])
var <- 1/(l1[i] + l2[i])
suma <- suma + dnorm(tha, media, sqrt(var))
promedio <- suma/N
}
promedio
}
win.graph()
a_-15
b_15
tha_seq(a,b,length=500)
denth_final(tha,l1,l2)
plot(tha,denth,xlab="theta",ylab="p(theta|x)",xlim=c(-15,15),type="l")
title("Densidad final de theta")
#--------------------------------------------------
# Encuentra las modas de la densidad final de theta
locator(2)
>
> [1] -4.876482 2.847174
>
win.graph()
hist(th,xlab="theta",nclass=100,xlim=c(-15,15),ylim=c(0,0.2),prob=T,
main="Distribucion final de theta")
lines(tha,denth)