Me gustaría automatizar la elección del quemado para una cadena MCMC, por ejemplo, eliminando las primeras n filas según un diagnóstico de convergencia.
¿En qué medida se puede automatizar este paso de forma segura? Incluso si aún verifico dos veces la autocorrelación, el seguimiento de mcmc y los archivos PDF, sería bueno tener la opción de longitud de quemado automatizada.
Mi pregunta es general, pero sería genial si pudiera proporcionar detalles para tratar con un objeto R mcmc.object; Estoy usando los paquetes rjags y coda en R.
Respuestas:
Aquí hay un enfoque en la automatización. Comentarios muy apreciados. Este es un intento de reemplazar la inspección visual inicial con la computación, seguida de una inspección visual posterior, de acuerdo con la práctica estándar.
Esta solución en realidad incorpora dos posibles soluciones, primero, calcular el quemado para eliminar la longitud de la cadena antes de alcanzar algún umbral, y luego usar la matriz de autocorrelación para calcular el intervalo de adelgazamiento.
El objeto mcmc se puede descargar aquí: jags.out.Rdata
--actualizar--
Según lo implementado en R, el cálculo de la matriz de autocorrelación es más lento de lo que sería deseable (> 15 min en algunos casos), en menor medida, también lo es el cálculo del factor de reducción de GR. Hay una pregunta sobre cómo acelerar el paso 4 en stackoverflow aquí
--actualizar parte 2--
respuestas adicionales:
No es posible diagnosticar la convergencia, solo diagnosticar la falta de convergencia (Brooks, Giudici y Philippe, 2003)
La función autorun.jags del paquete runjags automatiza el cálculo de la longitud de ejecución y el diagnóstico de convergencia. No comienza a monitorear la cadena hasta que el diagnóstico de rubin Gelman esté por debajo de 1.05; Calcula la longitud de la cadena utilizando el diagnóstico de Raftery y Lewis.
Gelman et al. (Gelman 2004 Bayesian Data Analysis, p. 295, Gelman y Shirley, 2010 ) afirman que utilizan un enfoque conservador para descartar la primera mitad de la cadena. Aunque es una solución relativamente simple, en la práctica es suficiente para resolver el problema de mi conjunto particular de modelos y datos.
fuente
autorun.jags
,...
permite que los parámetros pasen a laadd.summary
función. Laadd.summary
función tiene un argumentopsrf.target
con un valor predeterminado de 1.05