在 JAGS 中定义狄利克雷分布参数的先验

机器算法验证 分层贝叶斯 虫虫 锯齿 打开错误
2022-03-16 17:37:48

我在 JAGS 中定义了多项式狄利克雷模型,并希望将一些超先验分配给狄利克雷分布的参数。在 WinBugs 手册中,我读到“必须指定 Dirichlet 和 Wishart 分布的参数以及多项分布的阶 (N),并且不能给出先验分布。(但是,有一个技巧可以避免 Dirichlet 的这种约束)分布). 这是什么技巧?

1个回答

我不知道诀窍是什么,但这是我的猜测。使用 JAGS 语法指定ξD(α),你通常会做这样的事情:

xi ~ dirichlet(alpha[])

然后 JAGS 将不允许您分配之前α=(α1,,αJ). 相反,让ξjGamma(αj,1). 那么可以证明

ξ(ξ1jξj,,ξJjξj)D(α1,,αJ).

因此,您可以执行以下操作:

for(j in 1:J) {
  xi_raw[j] ~ dgamma(alpha[j], 1)
}
for(j in 1:J) {
  xi[j] <- xi_raw[j] / sum(xi_raw[])
}
## Some prior for alpha follows...