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?
11
Respuestas:
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.
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.
fuente
rjags
tiene una función que enumera las muestras que está usando, algo así como,list_samplers
pero puede consultar la documentación habitualR
para encontrarla.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
fuente