Estoy tratando de implementar el algoritmo MCMC de golpe y ejecución, pero tengo algunos problemas para entender cómo hacerlo. La idea general es la siguiente:
Para generar un salto de propuesta en MH, nosotros:
- Genere una dirección partir de una distribución en la superficie de la esfera de la unidad
- Genere una distancia firmada largo del espacio restringido.
Sin embargo, no tengo idea de cómo debo implementar esto en R (o en cualquier otro lenguaje).
¿Alguien tiene un fragmento de código que me dirija en la dirección correcta?
Por cierto, no estoy tan interesado en una biblioteca que haga este método, quiero intentar codificarlo yo mismo.
Muchas gracias.
Respuestas:
No miré el papel que me proporcionaste, pero déjame probar de todos modos:
Si tiene un espacio de parámetro -dimensional, puede generar una dirección aleatoria distribuida uniformemente en la superficie de la esfera de la unidad condpag re
(cf Wiki ).
Luego, use esto para generar propuestas para para el muestreo de rechazo (suponiendo que realmente pueda evaluar la distribución para ).dre re
Suponiendo que comience en la posición y haya aceptado a d , genere una propuesta y conX re y
y haga un Paso Metropolis-Hastings para decidir si debe moverse hacia o no.y
Por supuesto, qué tan bien puede funcionar esto dependerá de la distribución de y de lo costoso que sea (repetidamente) evaluar su densidad en el paso de muestreo de rechazo, pero dado que generar propuestas para d es barato, puede salirse con la suya.re re
Añadido para beneficio de @ csgillespie:
De lo que pude reunir buscando en Google, el MCMC de golpear y ejecutar es útil principalmente para una mezcla rápida si tiene un objetivo (multivariante) que tiene un soporte arbitrario limitado pero no necesariamente conectado, porque le permite moverse desde cualquier punto en el apoyo a cualquier otro en un solo paso. Más aquí y aquí .
fuente
Encontré su pregunta cuando estaba buscando la referencia original para Hit-and-Run. ¡Gracias por eso! Acabo de armar una implementación de prueba de concepto de hit-and-run para PyMC al final de este blog reciente .
fuente