¿Cómo los programas como BUGS / JAGS determinan automáticamente las distribuciones condicionales para el muestreo de Gibbs?

11

Parece que los condicionales completos a menudo son bastante difíciles de obtener, sin embargo, programas como JAGS y BUGS los obtienen automáticamente. ¿Alguien puede explicar cómo generan algorítmicamente condicionales completos para cualquier especificación de modelo arbitrario?

usuario4733
fuente
No recuerdo exactamente, pero sé que a menudo hacen muchas suposiciones muy fuertes que a menudo no son ciertas.
3
Sobre tu comentario, ¿de qué tipo de suposiciones estás hablando?
Stéphane Laurent

Respuestas:

3

Al leer los comentarios sobre las otras respuestas, creo que la respuesta correcta a la pregunta que se pretende formular es "no lo hacen", en general. Como se ha mencionado, construyen un DAG y miran la manta de Markov y luego (aproximadamente) hacen lo siguiente.

  1. Si la manta de Markov alrededor de un nodo corresponde a un condicional completo que se encuentra en una tabla de búsqueda (por ejemplo, porque es conjugada), utilice la técnica en la tabla de búsqueda.
  2. De lo contrario, la comprobación es si la densidad condicional completa no normalizada, que es trivial de calcular, es log-cóncava. Si es así, utilice un muestreo de rechazo adaptativo.
  3. De lo contrario, muestre usando Metropolis-inside-Gibbs para tomar muestras de la distribución aproximadamente. Si bien esta no es una muestra exacta, se puede demostrar que este algoritmo todavía deja la invariante posterior.

Esto no es exactamente lo que se está haciendo; por ejemplo, JAGS usará algunos otros trucos para construir actualizaciones de bloque. Pero esto debería dar una idea de lo que están haciendo.

chico
fuente
No conozco muy bien la documentación de BUGS y JAGS, ¿dónde se informa eso, por cierto?
Altroware
@altroware Tampoco conozco bien la documentación, lo siento. Sé que rjagstiene una función que enumera las muestras que está usando, algo así como, list_samplerspero puede consultar la documentación habitual Rpara encontrarla.
chico
0

No estoy seguro de por qué crees que los condicionales completos son difíciles de obtener. Dada una densidad de probabilidad previa conjunta completa tanto para los parámetros como para los datos, el condicional completo de, digamos, dado y los datos son fáciles de derivar: es solo proporcional a la unión previo para parámetros y datos. Es fácil determinar mediante inspección qué elementos de se pueden eliminar del condicional completo para .θ i θ - i θ - i θ iπ()θiθiθiθi

Los muestreadores automáticos de Gibbs llevan a cabo esta "inspección" analizando una especificación de modelo en un modelo de gráfico acíclico dirigido probabilístico . Luego calculan condicionales completos como proporcionales a la densidad de la cobija de Markov de .θi

Cian
fuente
Claro que es conceptualmente simple, pero en la práctica no es obvio para mí que las expresiones de forma cerrada para los condicionales completos sean triviales para derivar de manera algorítmica. En cada capa del DAG, puede tener todo tipo de transformaciones: interacciones multiplicativas, valor absoluto, log, transformaciones de raíz cuadrada, etc. También hay relaciones no conjugadas.
user4733
No me queda claro cómo se puede integrar automáticamente expresiones algorítmicamente para las distribuciones condicionales completas. Quizás estos programas eviten la necesidad de obtener expresiones de forma cerrada para los condicionales completos, pero estoy tratando de comprender mejor cómo se implementa esto en la práctica.
user4733
La constante de normalización no importa, por lo tanto, uno siempre tiene expresiones de forma cerrada porque solo multiplicamos expresiones de forma cerrada. No ? (Estoy cansado)
Stéphane Laurent
También me parece bastante difícil para BUGS determinar la distribución condicional. Quizás sea útil proporcionar un ejemplo (no trivial) del proceso de DAG ...
Glen
@Glen Si proporciona un ejemplo que le haya dado dificultades, haré la inspección.
Cian