16 votos

Haciendo MCMC: utilizar a jags/stan o implementarlo yo mismo

Soy nuevo en la investigación de la estadística bayesiana. He oído de los investigadores que los investigadores Bayesiano aplicación mejor MCMC por sí mismos en lugar de usar herramientas como JAGS/Stan. ¿Puedo preguntarle cuál es el beneficio de la aplicación de algoritmo MCMC por uno mismo (en una "bastante rápido" idiomas como R), excepto para propósito de aprendizaje?

29voto

Cliff AB Puntos 3213

En general, me gustaría sugerir fuertemente que no codificación de su propia MCMC para un real aplicado el análisis Bayesiano. Esto es tanto una buena cantidad de trabajo y tiempo, y muy probablemente a introducir errores en el código. Blackbox samplers, como Stan, ya se uso muy sofisticado samplers. Confía en mí, no el código de un sampler de este calibre sólo por un análisis!

Hay casos especiales en los que en esto no será suficiente. Por ejemplo, si usted necesita para hacer un análisis en tiempo real (es decir, equipo de decisiones basadas en los datos de entrada), estos programas no sería una buena idea. Esto es debido a que Stan requiere compilar código C++, que puede tardar mucho más tiempo que sólo se ejecuta una ya preparada de muestras para modelos relativamente simples. En ese caso, usted puede escribir su propio código. Además, creo que hay casos especiales en los paquetes como Stan hacer muy mal, como el de la No-Gaussiano estado-modelos de espacio (revelación completa: yo creo Stan hace muy mal en este caso, pero no lo sé). En ese caso, puede ser vale la pena implementar una costumbre MCMC. Pero esta es la excepción, no la regla!

Para ser honesto, creo que la mayoría de los investigadores que escriben samplers para un análisis simple (y esto sucede, la he visto) lo hacen porque les gusta escribir sus propias muestras. Al menos, puedo decir que me caen bajo esa categoría (es decir, estoy decepcionado de que escribir mi propia sampler no es la mejor manera de hacer las cosas).

Además, mientras que no tiene sentido escribir sus propias muestras para un solo análisis, se puede hacer un montón de sentido para escribir su propio código para una clase de análisis. Siendo que Entrecortado, Stan, etc. son de color negro-caja de samplers, siempre se puede hacer más rápido las cosas por la especialización para un modelo determinado, aunque la cantidad de mejora es dependiente del modelo. Pero la escritura extremadamente eficiente sampler desde el suelo, es tal vez 10-1,000 horas de trabajo, dependiendo de la experiencia, la complejidad del modelo, etc. Si usted está haciendo la investigación en Bayesiano o métodos de escritura de software estadístico, eso está bien; es su trabajo. Pero si su jefe le dice "Hey, usted puede analizar esta de medidas repetidas conjunto de datos?" y disfrutar de 250 horas en escribir una eficiente sampler, su jefe es probable que se moleste. En contraste, usted podría haber escrito este modelo Stan, por ejemplo, en 2 horas y 2 minutos de tiempo de ejecución en lugar de la de 1 minuto de tiempo de ejecución alcanzado por la eficiente toma de muestras.

6voto

Helper Puntos 1

Esta pregunta está principalmente basado en la opinión, pero creo que aquí hay suficiente escribir una respuesta abajo. Podría haber muchas razones para que un código propio del sampler para un problema de investigación. Aquí están algunos de ellos

  1. Propuesta: Como fcop sugirió en su comentario, si la muestra es M-H, entonces la codificación de su propia sampler te permite jugar con la propuesta de distribuciones para obtener la mejor mezcla de sampler.

  2. Flexibilidad: construido En programas no le dan la flexibilidad que usted desea. Es posible que desee comenzar en un valor aleatorio, o el uso de una semilla específica de la estructura.

  3. Comprensión: la Codificación de su propia sampler ayuda a comprender el comportamiento de la muestra, dando una visión de la cadena de Markov del proceso. Esto es útil para un investigador que trabaja en el problema.

  4. La carga de la prueba: Si los datos sobre los que estoy haciendo todo mi inferencia Bayesiana trata de un programa que yo no código de arriba, a continuación, la responsabilidad en la inferencia no es a mí. Como investigador, me gustaría tomar la responsabilidad completa de los métodos/resultados me presente. Utilizando incorporado métodos no permiten hacer eso.

Probablemente hay más razones, pero estas son las cuatro que me hacen el código de mi propia samplers.

4voto

Loren Pechtel Puntos 2212

Me dio un +1 al Acantilado de AB respuesta. Para agregar un poco de lo que ella dice, si quieres trabajar en un nivel inferior, pero no el código-todo lo que usted mismo nivel, se debe hurgar para la LaplacesDemon paquete. El autor original fue brillante, pero parece que se han caído de la cuadrícula, y el paquete ha sido tomada por alguien más. (Está en Github, creo.)

Se implementa un impresionante número de algoritmos que se usan en MCMC y los incluye viñetas son vale la pena leer, incluso si usted no utiliza el paquete. Casi cualquier tipo de muestreador puede leer acerca de la que tiene. Que el código en una forma diferente a la de los ERRORES/ENTRECORTADO o Stan, y que todo está en R, pero muchas veces es tan eficiente que es competitivo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X