Почему я должен определить параметр верхнего уровня в JAGS и как?
Согласно инструкции по эксплуатации r-jags (раздел Компиляция):
Предполагается, что любой узел, который используется в правой части отношения, но не определен в левой части какого-либо отношения, является постоянным узлом. Его значение должно быть указано в файле данных.
Но это странно, многие вероятностные графовые модели содержат много параметров верхнего уровня, которые следует вывести. И это то, что BN хочет сделать, не так ли? Так почему же мне нужно сначала определить значение параметра верхнего уровня? И что мне делать, когда я хочу реализовать такую модель, как LDA, у которой есть предварительное распределение тем a
и распространение слова beta
что неизвестно? Пожалуйста, скажите мне, если я сказал что-то не так.
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
Параметры формы и скорости также могут быть указаны в данных, если вы предпочитаете, но это будет немного необычно.
Выбор разумного предварительного распределения этих параметров не всегда прост, но является неотъемлемой частью любого байесовского анализа. Не просто предполагайте, что априор с большой дисперсией является минимально информативным, не думая об этом и / или не проверяя его.
Matt