Académique Documents
Professionnel Documents
Culture Documents
Facultad de Ciencias
Departamento de Estadstica
Carrera de Estadstica
Estadstica Bayesiana
Bogot, diciembre de 2013
Algunos algoritmos en R
n0 m + n
x
,
n0 + n n0 + n
n0 n
1 W + n, 1 + S 2 +
(
x m)0 (
x m)
n0 + n
R.
Estadstica Bayesiana
> xbar<-colMeans(x)
> # Matriz de varianzas covarianzas muestrales
> S2<-var(x)
>
>
>
>
>
>
>
+
>
>
>
>
>
>
>
>
+
>
>
>
>
>
>
>
>
# Distribucin a posteriori
# Parmetros de la distribucin a posterirori
a<-alpha+n
b<-solve(beta)+S2+((n0*n)/(n0+n))*((xbar-m0)%*%t(xbar-m0))
# Se define una matriz vacia para guardar los resultados de la simulacin.
# Se obtiene 1000 muestras para mu y sigma
mu1<-matrix(ncol=5,nrow=1000)
Se puede ver la convergencia de las muestras a posteriori simuladas para la media al valor verdadero
del parmetro, es evidente la inuencia de la distribucin a priori ya que los datos tienden irse a cero ver
gura 1. Tambin se puede observar en las muestras a posteriori las correlaciones dadas en el parmetro
inicial de , ver gura 2.
De las distribuciones a posteriori se puede obtener la esperanza y la varianza para | y para 1 .
E(|) = 1
Estadstica Bayesiana
donde 1 =
n0 m + n
x
y 1 =
, en
n0 + n
n0 + n
2. Transformacin de parmetros.
En la seccin 5.4 del libro Bayesian Computation with R de Jim Albert se tiene una ejemplo de
un modelo Beta-Binomial se quiere comprobar utilizando el teorema de la transformacin. Si y = g(x),
entonces
fy (y) = fx (h(y))|J(y)|
Estadstica Bayesiana (2013)
Estadstica Bayesiana
n
Y
1
B(K + yj , K(1 ) + nj yj )
1
(1 ) (1 + k)2 j=1
B(K, K(1 ))
1. La transformacin a realizar es
1 = logit() = log
1
2 = log(k)
1
1
=
=
1
exp(1 )
1
1 + exp(1 )
= =
exp(1 )
exp(1 )
= =
1 + exp(1 )
exp(2 ) = K
exp(1 ) =
exp(1 + 2 )
, luego se obtiene la funcin de densidad a posteriori
(1 + exp(1 ))2
g(1 , 2 )
n B
Y
exp(2 )
(1 + exp(2 ))2 i=1
exp(1 + 2 )
exp(2 )
+ yj ,
+ nj yj
1 + exp(1 )
1 + exp(1 )
exp(1 + 2 )
exp(2 )
B
,
1 + exp(1 ) 1 + exp(1 )
Estadstica Bayesiana
1 = logit() = log
Se tiene el jacobiano J =
2 = K
exp(1 )
, luego se obtiene la funcin de densidad a posteriori con
(1 + exp(1 ))2
la transformacin respectiva
g(1 , 2 )
1
(1 + 2 )2
n
Y
i=1
2 exp(1 )
2
+ yj ,
+ nj yj
1 + exp(1 )
1 + exp(1 )
2 exp(1 )
2
B
,
1 + exp(1 ) 1 + exp(1 )
2 = log(k)
n
Y
1
1
B(1 exp(2 ) + yj ; exp(2 )(1 1 ) + nj yj )
1 (1 1 ) (1 + exp(2 )2 ) j=1
B(1 exp(2 ), exp(2 )(1 1 ))
3. Modelo Normal-Gamma.
con i = 1, 2, ..., n y =
1
. Se obtiene la distribucin conjunta a priori.
2
n0 +1
1
2
2
2
P (, )
exp
c0 ( 0 ) + n0 0
2
n
Y
2 1 exp
c0 ( 0 )2 + n0 02
1/2 exp (xi )2
2
2
i=1
Estadstica Bayesiana
set.seed(1)
# Tamao de la muestra
n<-50
# Se genera una muestra de tamao n con media 4 y ds 2
y<-rnorm(n,4,2)
library(LearnBayes)
# Funcin que calcula el logaritmo natural de la densidad a posteriori
normal0<-function(theta1,data1){
mu<-theta1[1]
phi<-theta1[2]
y<-data1
N<-length(y)
val=0*mu
sigma0<-1/4
n0<-2
mu0<-4
c0<-0.5
for(i in 1:N)
val=val+
((n0+n-1)/2)*log(phi)-(phi/2)*(c0*(mu-mu0)^2+n0*sigma0)-(phi/2)*(y[i]-mu)^2
return(val)
}
# Nombrar los datos
data1<-y
# Funcin que grfica el contorno del logaritmo de la funcin de densidad a posteriori
mycontour(normal0,c(4,4.3,13,18),data1,xlab='theta',ylab='phi')
Estadstica Bayesiana
Ahora haciendo una transformacin sobre el parmetro dado por la expresin = log(). Se tiene
el Jacobiano J = e . El logaritmo natural de la densidad a posteriori con el parmetro transformado es
programada en la funcin normal.
# Funcin que calcula el logaritmo natural de la densidad a posteriori
# con el parmetro phi transformado.
normal<-function(theta1,data1){
mu<-theta1[1]
eta<-theta1[2]
phi<-exp(eta)
y<-data1
N<-length(y)
val=0*phi;
sigma0<-1/4
n0<-2
mu0<-4
c0<-0.5
for(i in 1:N)
val=val+
((n0+n-1)/2)*log(phi)-(phi/2)*(c0*(mu-mu0)^2+n0*sigma0)-(phi/2)*(y[i]-mu)^2+eta
return(val)
}
# Nombrar los datos
data1<-y
# Funcin que grfica el contorno del logaritmo de la funcin de densidad a posteriori
mycontour(normal,c(4,4.25,2.6,3),data1,xlab='theta',ylab='log(phi)')
Se puede observar en las guras 3 y 4 que al aplicar la transformacin sobre el parmetro se tiene
mas precisin, es decir, la varianza disminuye, por lo tanto, se obtiene una distribucin a posteriori ms
informativa. Ahora tomando como referencia la gura 4 se utilizara el mtodo de Newton para obtener
Estadstica Bayesiana (2013)
Estadstica Bayesiana
una aproximacin de la distribucin a posteriori basado en la moda a posteriori con los valores iniciales
(, log()) = (4.12, 0.2), esta funcin se programa en R as:
# Aproximacin de la distribucin a posteriori
fit=laplace(normal,array(c(4.12,0.2),c(1,2)),data1);fit
$mode
[,1]
[,2]
[1,] 4.133905 2.79998
$var
[,1]
[,2]
[1,] 8.108168e-04 1.940326e-08
[2,] 1.940326e-08 7.547114e-04
$int
[1] 2379.649
$converge
[1] TRUE
Se encuentra que la moda a posteriori es (4.13, 2.78). De la salida de la funcin laplace se puede decir
que (, log()) es aproximadamente una normal bivariada con vector de medias t$mode y matriz de
varianza-covarianza t$var, se tiene la aproximacin del logaritmo de la constante de normalizacin t$int,
nalmente, t$converge indicacin (TRUE or FALSE) si el algoritmo converge o diverge respectivamente,
en este caso converge a una normal bivariada. Para obtener el grco de contornos para la densidad normal
aproximada se tiene el siguiente cdigo en R
# Lista los parmetros de la funcin
npar=list(m=fit$mode,v=fit$var)
# Grfico de contornos de la densidad normal aproximada
mycontour(lbinorm,c(4,4.25,2.68,2.91),npar)
title(xlab='theta',ylab='log(phi)')
Estadstica Bayesiana
ex + 1
dx
(x + 1)3/2
Z
0
y dx, en
ex + 1
donde se reemplazan
(x + 1)3/2
1 ex + 1
dx
5 (x + 1)3/2
En este caso usaremos para Xi la distribucin normal con media 2 y desviacin estndar 4. Suponiendo
ahora que se est interesado en la media de (X 2 ), se tiene el siguiente cdigo en R.
Estadstica Bayesiana
10
La estimacin de Monte Carlo para E(x2 |datos) es 19.9723 con un error estndar asociado a la
simulacin de 0.0870.
5. Muestreo Rechazo.
Supongamos que queremos producir una muestra independiente de una densidad a posteriori g(|y)
donde la constante de normalizacin puede ser no conocida el primer paso en muestreo rechazo es encontrar
otra densidad de probabilidad p() tal que:
Fcil obtener simulaciones de p.
La densidad p debe ser parecida en escala y forma a g .
Para todo exista c tal que g(|y) < cp().
Suponiendo que se logro encontrar una densidad p con estas propiedades. Entonces se obtienen simulaciones de g con el siguiente algoritmo:
1. Se genera de p() y U de U (0, 1).
2. Si U
g(|y)
, entonces, se acepta como una muestra de g , en caso contrario se rechaza .
cp()
3. Continua en el paso (1) del algoritmo hasta obtener una numero suciente de 's aceptados.