Verificación predictiva posterior luego de inferencia ABC para múltiples parámetros

8

Soy relativamente nuevo en las estadísticas bayesianas, así que por favor sea gentil.

Acabo de realizar Computación Bayesiana Aproximada (ABC) para la inferencia de un modelo multiparamétrico. Ahora estoy buscando realizar una verificación predictiva posterior de los parámetros que se han inferido.

Lo que quiero saber es que, al muestrear desde la parte posterior para generar las estadísticas de resumen para la verificación predictiva posterior, muestreo independientemente de las posteriores marginales para cada parámetro, o se supone que debo muestrear los valores de los parámetros conjuntamente (es decir, muestra de las combinaciones exactas de parámetros que dieron lugar a las estadísticas de resumen aceptadas).

El modelo contiene muchos parámetros (más de 6) y estoy interesado en los posteriores marginales para cada parámetro. Espero que esta pregunta tenga sentido.

David
fuente

Respuestas:

8

Gran pregunta para un recién llegado !!!

Su algoritmo ABC le proporciona una muestra de la distribución ABC-posterior. Para cada componente del vector , se obtiene una muestra de tamaño del marginal ABC-posterior. Por ejemplo, aquí hay un ejemplo de juguete sobre la varianza media normal posterior, cuando se usa mediana y loca como resúmenes:θ1,,θMθM

#normal data with 100 observations 
x=rnorm(100)
#observed summaries
sumx=c(median(x),mad(x))

#normal x gamma prior
priori=function(N){
  return(cbind(rnorm(N,sd=10),1/sqrt(rgamma(N,shape=2,scale=5))))
  }

ABC=function(N){

  prior=priori(N)  #reference table

  #pseudo-data
  summ=matrix(0,N,2)
  for (i in 1:N){
    xi=rnorm(100)*prior[i,2]+prior[i,1]
    summ[i,]=c(median(xi),mad(xi)) #summaries
    }

  #normalisation factor for the distance
  mads=c(mad(summ[,1]),mad(summ[,2]))

  #distance
  dist=(abs(sumx[1]-summ[,1])/mads[1])+(abs(sumx[2]-summ[,2])/mads[2])

  #selection
  posterior=prior[dist<quantile(dist,.05),]

  return(posterior)
  }

Si tramas

res=ABC(10^5);hist(res[,1])

obtendrá el ABC-posterior marginal para la media normal.

Sin embargo, si desea hacer una verificación predictiva posterior, no puede generar un componente de su posterior a la vez para obtener pseudodatos y los resúmenes correspondientes. ¡Necesita tanto la media como la varianza para obtener una nueva muestra normal! Entonces mi código R sería

postsample=res[sample(1:length(res[,1]),10^3),]

para extraer una muestra del ABC posterior y los pseudodatos se generarían como anteriormente:

  #pseudo-data
  summ=matrix(0,M,2)
  for (i in 1:M){
    xi=rnorm(100)*postsample[i,2]+postsample[i,1]
    summ[i,]=c(median(xi),mad(xi)) #summaries
    }
Xi'an
fuente
1
Muchas gracias por la respuesta completa. Su ejemplo de script R realmente me lo dejó claro. Después de publicar esa pregunta, pensé más detenidamente en lo que estaba preguntando y estaba avanzando lentamente hacia la conclusión que me dieron, así que es genial que me lo confirmen :-)
David
1
@ Xi'an: Hecho. Gracias. ¡Todavía soy nuevo en este sitio!
David
(También completamente nuevo para proba y ABC, puedo estar totalmente fuera de alcance) De la respuesta de @ Xi'an, no me queda claro qué esSupongo que debería ser el número de verificación posterior que desea ejecutar, ¿verdad? y si tengo razón, entonces no está relacionado con la en define en la primera parte, ¿cuál es el número de partículas seleccionadas por el ABC correcto? Esto me lleva a otra pregunta: en tu respuesta @ Xi'an muestras partículas de los posteriores. Al ejecutar su código, el ABC me devuelve partículas. ¿Hay alguna regla para elegir cuántos cheques posteriores debe hacer uno? MMthetaM1035×103
Simon C.
Hola Robert, si pudieras responder esto, sería muy apreciado: stats.stackexchange.com/questions/468189/…
Bayesian Newbie