Почему мне нужно определять параметр верхнего уровня в JAGS и как?

Согласно руководству пользователя r-jags (раздел Компиляция):

Любой узел, который используется в правой части отношения, но не определен в левой части какого-либо отношения, считается постоянным узлом. Его значение должно быть указано в файле данных.

Но это странно, многие вероятностные графовые модели содержат много параметров верхнего уровня, которые необходимо вывести. И это то, что хочет делать Б.Н., не так ли? Так зачем мне сначала определять значение параметра верхнего уровня? И что мне делать, если я хочу реализовать такую ​​модель, как LDA, в которой ранее неизвестны топики a и слова beta? Скажите, пожалуйста, если я сказал что-то не так.


person Community    schedule 04.04.2016    source источник


Ответы (1)


Если вы хотите сделать вывод о параметре, то по определению это НЕ параметр верхнего уровня. Если вы хотите вывести что-то о параметре, вам нужно поставить перед ним априор, и в этом случае гиперпараметры в предшествующем являются параметрами верхнего уровня. Например:

Count ~ dpois(lambda)
lambda <- 10

Означает, что лямбда является параметром верхнего уровня и не может быть выведена.

Count ~ dpois(lambda)
lambda ~ dgamma(0.001, 0.001)

Означает, что предполагается лямбда, а гиперпараметры предшествующей гаммы являются параметрами верхнего уровня. Чтобы увидеть это более подробно, обратите внимание, что этот синтаксис эквивалентен:

Count ~ dpois(lambda)
lambda ~ dgamma(shape, rate)
shape <- 0.001
rate <- 0.001

Параметры формы и скорости также могут быть указаны в данных, если вы предпочитаете, но это было бы немного необычно.

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

Мэтт

person Matt Denwood    schedule 05.04.2016