ABC

ABC significa, entre otras cosas, approximate bayesian computation. Por lo que parece, consiste en calcular $latex P(\theta ,|, \text{datos})$ por el tradicional y directo método del rechazo. Es decir:

  • Planteas un modelo generativo, con sus prioris y todo.
  • Simulas casos, casos y casos.
  • Te quedas con los que cumplen un criterio de aceptación.

La distribución empírica de los parámetros en el subconjunto de los casos aceptados representa, en los libros está escrito, la distribución a posteriori. Sin MCMC ni historias.

Ejemplo basado en esto:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
muertes.2015 <- 1131
muertes.2016 <- 1160

# parámetros de la priori
b <- 4
a <- b * muertes.2015

# prioris del incremento
sigma <- 0.02


genera_casos <- function(n){
  incremento <- rnorm(n, mean = 0, sd = sigma)

  lambdas.2015 <- rgamma(n, a, b)
  lambdas.2016 <- lambdas.2015 * (1 + incremento)

  foo <- function(x)
    sapply(x, function(lambda) rpois(1, lambda))

  sim.muertes.2015 <- foo(lambdas.2015)
  sim.muertes.2016 <- foo(lambdas.2016)

  # criterio de aceptación
  mascara <- (muertes.2015 == sim.muertes.2015) & (muertes.2016 == sim.muertes.2016)

  data.frame(
    incremento = incremento[mascara],
    lambdas.2015 = lambdas.2015[mascara],
    lambdas.2016 = lambdas.2016[mascara]
  )
}

res <- genera_casos(1e7)

Etc.