Il semble que les conditions complètes soient souvent assez difficiles à dériver, mais des programmes comme JAGS et BUGS les dérivent automatiquement. Quelqu'un peut-il expliquer comment il génère algorithmiquement des conditions complètes pour toute spécification de modèle arbitraire?
11
Réponses:
En lisant les commentaires sur les autres réponses, je pense que la bonne réponse à la question qui devait être posée est "ils ne le font pas", en général. Comme cela a été mentionné, ils construisent un DAG et regardent la couverture Markov, puis (grossièrement) font ce qui suit.
Ce n'est pas exactement ce qui se fait; par exemple, JAGS utilisera d'autres astuces pour construire des mises à jour de blocs. Mais cela devrait donner une idée de ce qu'ils font.
la source
rjags
a une fonction qui répertorie les exemples qu'il utilise, quelque chose comme,list_samplers
mais vous pouvez consulter la documentation habituelleR
pour le trouver.Je ne sais pas pourquoi vous pensez que les conditions complètes sont difficiles à obtenir. Étant donné une densité de probabilité a priori conjointe complète pour les paramètres et les données, le conditionnel complet de, disons, étant donné et les données sont faciles à dériver: elles sont juste proportionnelles à l'articulation avant pour les paramètres et les données. Il est facile de dire par inspection quels éléments de peuvent être supprimés du conditionnel complet pour .π(⋅) θi θ−i θ−i θi
Les échantillonneurs automatiques de Gibbs effectuent cette "inspection" en analysant une spécification de modèle dans un modèle de graphique acyclique dirigé probabiliste . Ils calculent ensuite les conditionnelles complètes comme proportionnelles à la densité conjointe la couverture de Markov de .θi
la source