为什么我必须在 JAGS 中定义顶级参数,以及如何定义?

Why do I have to define the top-level parameter in JAGS, and how?

根据 r-jags 的用户手册(编译部分):

Any node that is used on the right hand side of a relation, but is not defined on the left hand side of any relation, is assumed to be a constant node. Its value must be supplied in the data file.

但奇怪的是,很多概率图模型包含很多要推断的顶层参数。这就是 BN 的意思,不是吗?那为什么要先定义顶层参数的值呢?当我想实现像LDA这样的模型时,它的topic-distribution prior a和word-distribution beta是未知的,我该怎么办?如果我说错了请告诉我。

如果您想对参数进行推断,那么根据定义,这不是顶级参数。如果你想推断一个参数的某些东西,那么你必须在它上面放一个先验,在这种情况下,先验中的超参数是顶级参数。例如:

Count ~ dpois(lambda)
lambda <- 10

表示lambda是顶级参数,无法推断。

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

表示推断lambda,gamma prior的超参数是顶层参数。要更明确地看到这一点,请注意此语法是等效的:

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

如果您愿意,也可以在数据中指定形状和速率参数,但这有点不寻常。

为这些参数选择合理的先验分布并不总是直截了当的,但却是任何贝叶斯分析的组成部分。不要在不考虑 and/or 对其进行测试的情况下就假设具有大方差的先验信息最少。

马特