Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Metodo ABC
Approximate Bayesian Computation
powervan@gmail.com
1 Introduccion
2 Metodo ABC
3 Ejemplos
Contenido
1 Introduccion
2 Metodo ABC
3 Ejemplos
Introduccion
La inferencia Bayesiana se centra en la Distribucion Posterior,
f (x|)()
p(|x) = (1)
p(x)
Introduccion
Un estadstico (Estadstico de resumen) en general tiene esta forma.
S : Rd Rw , S(x) = s (2)
Verosimilitud libre
Contenido
1 Introduccion
2 Metodo ABC
3 Ejemplos
Metodo ABC
Principales caractersticas
Fue creado al inicio como una idea en 1980. Donald Rubin.
Metodo ABC
Principales caractersticas
Fue creado al inicio como una idea en 1980. Donald Rubin.
Es un algoritmo proveniente de los algoritmos de aceptacion y rechazo.
Metodo ABC
Principales caractersticas
Fue creado al inicio como una idea en 1980. Donald Rubin.
Es un algoritmo proveniente de los algoritmos de aceptacion y rechazo.
Describe un mecanismo de muestreo hipotetica que produce una muestra
de la distribucion posterior.
Metodo ABC
Principales caractersticas
Fue creado al inicio como una idea en 1980. Donald Rubin.
Es un algoritmo proveniente de los algoritmos de aceptacion y rechazo.
Describe un mecanismo de muestreo hipotetica que produce una muestra
de la distribucion posterior.
Este esquema fue mas conceptual de un experimento para demostrar que
tipo de manipulaciones se realizan cuando inferir la distribucion posterior
de los parametros.
Metodo ABC
Algoritmo resumen.
Generar muestras j () para j = 1, 2, 3, . . .
Metodo ABC
Algoritmo resumen.
Generar muestras j () para j = 1, 2, 3, . . .
Aceptar cada muestra j con probabilidad proporcional a f (x|j ) donde x
son los datos observados.
Las muestras que son aceptadas estan distribuidas con densidad (|x).
Metodo ABC
Algoritmo resumen.
Generar muestras j () para j = 1, 2, 3, . . .
Aceptar cada muestra j con probabilidad proporcional a f (x|j ) donde x
son los datos observados.
Las muestras que son aceptadas estan distribuidas con densidad (|x).
Puesto que suponemos que no tenemos acceso a una formula explcita de
f (x|) el objetivo es encontrar un metodo de procedimiento de aceptacion
o rechazo, utilizando solo las muestras de f (x|) pero no evaluando en si
misma.
Entrada:
1: datos x Rn
Entrada:
1: datos x Rn
2: la densidad priori para los parametros desconocidos Rp
Entrada:
1: datos x Rn
2: la densidad priori para los parametros desconocidos Rp
3: Un estadstico de resumen S : Rn Rq , q n
Entrada:
1: datos x Rn
2: la densidad priori para los parametros desconocidos Rp
3: Un estadstico de resumen S : Rn Rq , q n
4: Un parametro de tolerancia > 0
Entrada:
1: datos x Rn
2: la densidad priori para los parametros desconocidos Rp
3: Un estadstico de resumen S : Rn Rq , q n
4: Un parametro de tolerancia > 0
5: Muestras j p y Xj pX| (|x ).
Entrada:
1: datos x Rn
2: la densidad priori para los parametros desconocidos Rp
3: Un estadstico de resumen S : Rn Rq , q n
4: Un parametro de tolerancia > 0
5: Muestras j p y Xj pX| (|x ).
Salida: j1 , j2 , . . . tienen distribucion con densidad p|X (|x )
Entrada:
1: datos x Rn
2: la densidad priori para los parametros desconocidos Rp
3: Un estadstico de resumen S : Rn Rq , q n
4: Un parametro de tolerancia > 0
5: Muestras j p y Xj pX| (|x ).
Salida: j1 , j2 , . . . tienen distribucion con densidad p|X (|x )
6: s S(s )
7: para j = 1, 2, 3, . . . hacer
8: Generar j p ()
9: Generar Xj pX| (|j )
10: Sj S(Xj )
11: si |Sj s | entonces
12: devolver j
13: fin si
14: fin para
Proposicion
Sea (jk )kN muestras aceptadas por ABC, para una muestra de datos
x Rn y s = S(x ) los siguientes puntos se cumplen.
a.- Si S es un estadstico suficiente, el limite de la densidad pABC
|S satisface.
pABC
|S (|s ) = p|S (|x ) (5)
Contenido
1 Introduccion
2 Metodo ABC
3 Ejemplos
Ejemplos, ABC
Ejemplos, ABC
Ejemplos, ABC
Ejemplos, ABC
1
Pn 1
Pn 2
Sea sj,1 = n i=1 Xj,i , y sj,2 = n i=1 Xj,i .
Ejemplos, ABC
1
Pn 1
Pn 2
Sea sj,1 = n i=1 Xj,i , y sj,2 = n i=1 Xj,i .
El objetivo es encontrar la distribucion posterior de = (, 2 ) dada las
observaciones x.
Ejemplos, ABC
1
Pn 1
Pn 2
Sea sj,1 = n i=1 Xj,i , y sj,2 = n i=1 Xj,i .
El objetivo es encontrar la distribucion posterior de = (, 2 ) dada las
observaciones x.
Para ello se acepta j = (j , j2 ) si (sj,1 s1 )2 + (sj,2 s2 )2 2
library(tabplot)
library(infotheo)
library(abc)
library(parallel)
nCores <- detectCores(logical = FALSE)
nThreads <- detectCores(logical = TRUE)
# para mu posteriori
fm2<-function(x) return(sum(x^2)/length(x))
s1<-apply(A,1,mean)
s2<-apply(A,1,fm2)
param.sim <-cbind(mu,sigma) # parametros simulados
stati.sim <-cbind(s1,s2)
stati.obs <- c(6.989,52.247) # estadisticos observados
rej <- abc(target =stati.obs,
param =param.sim,
sumstat =stati.sim,
tol=0.05, method = "rejection")
Xdata<-data.frame(mu=param.sim[,1],sigma=param.sim[,2],acep=rej$region)
table(Xdata$acep)
XdataAcep <- Xdata[Xdata$acep==1,]
Contenido
1 Introduccion
2 Metodo ABC
3 Ejemplos
Entropia
Informacion Mutua
U es un estadistico suficiente
I(; S|U ) = 0
EX [KL(p(|S)||p(|U ))] = 0 .
Entrada:
1: Un conjunto suficiente de estadsticas cuyos valores en el conjunto de
datos es s = {s1 , . . . , sw }
Salida:
2: Un subconjunto U de s
3: para Todos u s hacer
4: Calcular ABC para obtener p(|u )
5: fin para
6: Sea T = {u s such that KL (p(|s )||p(|u )) = 0}
7: Retornar U = argminu T |u |
Entrada:
1: Un conjunto suficiente de estadsticas deterministas cuyos valores en el
conjunto de datos es s = {s1 , . . . , sw }.
Salida:
2: Un subconjunto U de s
3: Para todos u s , Calcular ABC para obtener p(|u )
4: let s
(1) = argmaxu s log p(|u )
5: para k {2, . . . , w} hacer
n o
6: Para todos u s \ s(1) , . . . , s(k1) , Calcular ABC para obtener
p(|s(1) , . . . , s(k1) , u )
7: Sea
Ejemplo
a2 i + ni i2 xi 2 1
i = i = 2 i = 1, 2 (9)
a2
i + n
i i
2
a + ni i2
library(parallel)
nCores <- detectCores(logical = FALSE)
nThreads <- detectCores(logical = TRUE)
cat("CPU con",nCores,"cores y",nThreads,"Nodos Detectados.\n")
set.seed(123456789)
m<- 200000 # replicas
n<- 15 # muestras
a <- 2
mu <- rnorm(m,mean=0,sd=a^2)
cl <- makeCluster(nThreads); cl;
strt<-Sys.time()
B <- matrix(c(0), nrow=m,ncol = n)
for (i in 1:m) {
j<-1
while(j<=n){
B[i,j] <- rnorm(1,mean=mu[i],sd=a^2)
j<-j+1
}
}
print(Sys.time()-strt)
stopCluster(cl)
Xdata<-data.frame(mu=param.sim[,1],acep=Post[[1]]$region)
XdataAcep <- Xdata[Xdata$acep==1,]
A=data.frame(x=density(XdataAcep$mu)$x,y=density(XdataAcep$mu)$y)
so1<-A[which.is.max(A$y),1] # s1*
#k<-2
Rej<- abc(target =c(so1),
param =param.sim ,
sumstat =stati.sim[,1] ,
tol=0.01, method = "rejection")
XXdata<-data.frame(mu=param.sim[,1],acep=Rej$region)
XXdataAcep <- XXdata[XXdata$acep==1,]
# si Mutua_Info <=0.5
plot(density(XdataAcep$mu),main="Densidad S1, S2 ..",)
lines(density(XXdataAcep$mu),col=2)
Mutua_Info(cbind(XdataAcep$mu,XXdataAcep$mu)) #ok aprox bits
[1] 0.6081151
Resumen