Как программы типа BUGS / JAGS автоматически определяют условные распределения для выборки Гиббса?


11

Похоже, что полные условия часто довольно трудно получить, но программы, такие как JAGS и BUGS, получают их автоматически. Может кто-нибудь объяснить, как они алгоритмически генерируют полные условия для любой произвольной спецификации модели?


Я точно не помню, но я знаю, что они часто делают очень сильные предположения, которые часто не соответствуют действительности.

3
О вашем комментарии, о каких предположениях вы говорите?
Стефан Лоран,

Ответы:


3

Читая комментарии к другим ответам, я считаю, что правильный ответ на вопрос, который должен был быть задан, это «они не делают», в общем. Как уже упоминалось, они создают DAG и смотрят на марковское одеяло, а затем (примерно) делают следующее.

  1. Если марковское одеяло вокруг узла соответствует полному условию, которое находится в таблице поиска (скажем, потому, что оно сопряжено), то образец использования метода в таблице поиска.
  2. Иначе, проверка - это, если ненормализованная полная условная плотность - что тривиально вычислить - является лог-вогнутой. Если это так, используйте адаптивную выборку отклонения.
  3. Иначе, выборка с использованием Metropolis-in-Gibbs для выборки из распределения приблизительно. Хотя это не точный образец, можно показать, что этот алгоритм все еще оставляет апостериорный инвариант.

Это не совсем то, что делается; например, JAGS будет использовать некоторые другие приемы для создания блочных обновлений. Но это должно дать представление о том, что они делают.


Я не очень хорошо знаю документацию по BUGS и JAGS, где об этом сообщается, кстати?
altroware

@altroware Я тоже плохо знаю документацию, извините. Я знаю, что rjagsесть функция, которая перечисляет примеры, которые он использует, что-то вроде, list_samplersно вы можете проверить обычную документацию, Rчтобы найти это.
парень

0

Я не уверен, почему вы думаете, что полные условия трудно получить. Учитывая полную совместную априорную плотность вероятности как для параметров, так и для данных, полное условие, скажем, учитывая и данных легко вывести: оно просто пропорционально соединению Приоритет для параметров и данных. По проверке легко определить, какие элементы могут быть отброшены из полного условия для .π()θiθiθiθi

Автоматические пробоотборники Гиббса выполняют эту «проверку» путем анализа спецификации модели в вероятностно-ориентированной модели ациклического графа . Затем они вычисляют полные условия как пропорциональные полной плотности стыка 's марковского одеяла .θi


Конечно, это концептуально просто, но на практике для меня не очевидно, что выражения в замкнутой форме для полных условных выражений было бы тривиально получить алгоритмическим способом. На каждом слое в группе обеспечения доступности баз данных вы можете иметь все виды преобразований - мультипликативные взаимодействия, абсолютное значение, log, преобразования квадратного корня и т. Д. Существуют также несопряженные отношения.
user4733

Мне не ясно, как можно автоматически алгоритмически интегрировать выражения для полных условных распределений. Возможно, этим программам не нужно получать выражения в закрытой форме для полных условных выражений, но я пытаюсь лучше понять, как это реализуется на практике.
user4733

Константа нормализации не имеет значения, поэтому всегда есть выражения с замкнутой формой, потому что мы умножаем только выражения с замкнутой формой. Нет? (Я устал)
Стефан Лоран

Мне кажется, что для BUGS довольно сложно определить условное распределение. Возможно, поможет пример (нетривиальный) процесса DAG ...
Глен

@Glen Если вы приведете пример, который затруднит вас, я проведу проверку.
Голубой
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.