Похоже, что полные условия часто довольно трудно получить, но программы, такие как JAGS и BUGS, получают их автоматически. Может кто-нибудь объяснить, как они алгоритмически генерируют полные условия для любой произвольной спецификации модели?
Похоже, что полные условия часто довольно трудно получить, но программы, такие как JAGS и BUGS, получают их автоматически. Может кто-нибудь объяснить, как они алгоритмически генерируют полные условия для любой произвольной спецификации модели?
Ответы:
Читая комментарии к другим ответам, я считаю, что правильный ответ на вопрос, который должен был быть задан, это «они не делают», в общем. Как уже упоминалось, они создают DAG и смотрят на марковское одеяло, а затем (примерно) делают следующее.
Это не совсем то, что делается; например, JAGS будет использовать некоторые другие приемы для создания блочных обновлений. Но это должно дать представление о том, что они делают.
rjags
есть функция, которая перечисляет примеры, которые он использует, что-то вроде, list_samplers
но вы можете проверить обычную документацию, R
чтобы найти это.
Я не уверен, почему вы думаете, что полные условия трудно получить. Учитывая полную совместную априорную плотность вероятности как для параметров, так и для данных, полное условие, скажем, учитывая и данных легко вывести: оно просто пропорционально соединению Приоритет для параметров и данных. По проверке легко определить, какие элементы могут быть отброшены из полного условия для .
Автоматические пробоотборники Гиббса выполняют эту «проверку» путем анализа спецификации модели в вероятностно-ориентированной модели ациклического графа . Затем они вычисляют полные условия как пропорциональные полной плотности стыка 's марковского одеяла .