Comment des programmes comme BUGS / JAGS déterminent-ils automatiquement les distributions conditionnelles pour l'échantillonnage de Gibbs?

11

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?

user4733
la source
Je ne me souviens pas exactement, mais je sais qu'ils font souvent beaucoup d'hypothèses très fortes qui sont souvent fausses.
3
À propos de votre commentaire, de quel genre d'hypothèses parlez-vous?
Stéphane Laurent

Réponses:

3

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.

  1. Si la couverture de Markov autour d'un nœud correspond à un conditionnel complet qui se trouve dans une table de recherche (disons, car il est conjugué), un échantillon de l'utilisation de la technique dans la table de recherche.
  2. Sinon, vérifiez si la densité conditionnelle complète non normalisée - qui est triviale à calculer - est log-concave. Si c'est le cas, utilisez l'échantillonnage de rejet adaptatif.
  3. Sinon, échantillonner en utilisant Metropolis-within-Gibbs pour échantillonner approximativement la distribution. Bien qu'il ne s'agisse pas d'un échantillon exact, il peut être démontré que cet algorithme laisse toujours l'invariant postérieur.

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.

gars
la source
Je ne connais pas si bien la documentation BUGS et JAGS, où est-ce signalé, BTW?
altroware
@altroware Je ne connais pas bien la documentation non plus, désolé. Je sais qu'il rjagsa une fonction qui répertorie les exemples qu'il utilise, quelque chose comme, list_samplersmais vous pouvez consulter la documentation habituelle Rpour le trouver.
mec
0

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

Cyan
la source
Bien sûr, c'est conceptuellement simple, mais dans la pratique, il n'est pas évident pour moi que les expressions de forme fermée pour les conditions complètes soient dérivées de manière algorithmique. À chaque couche du DAG, vous pouvez avoir toutes sortes de transformations - interactions multiplicatives, valeur absolue, log, transformations de racine carrée, etc. Il existe également des relations non conjuguées.
user4733
Il n'est pas clair pour moi comment on est automatiquement capable d'intégrer algorithmiquement des expressions pour les distributions conditionnelles complètes. Peut-être que ces programmes évitent d'avoir à obtenir des expressions de forme fermée pour les conditions complètes, mais j'essaie de mieux comprendre comment cela est mis en œuvre dans la pratique.
user4733
La constante de normalisation n'a pas d'importance, par conséquent, on a toujours des expressions de forme fermée car nous multiplions uniquement les expressions de forme fermée. Non ? (Je suis fatigué)
Stéphane Laurent
Il me semble qu'il est également assez difficile pour BUGS de déterminer la distribution conditionnelle. Peut-être que fournir un exemple (non trivial) du processus DAG aidera ...
Glen
@Glen Si vous fournissez un exemple qui vous a posé problème, je ferai l'inspection.
Cyan