我试着用BUGS编写一个dirichlet多项式模型。基本上,我有18个地区和3个类别的每个地区。例如,1: 0.50属于低,0.30属于中,0.20属于高。这个列表继续到18区,当然有不同的proportions.The,只有我得到的代码是
`model {
for (i in 1:N) {
x[1:3] ~ dmulti(p[],n[i])
p[1:3] ~ ddirch(alpha[])
}
for (k in 1:3) {
alpha[k] <- 1
}
}
DATA list(n=c(38483, 2259, 1900),x=c(29256.42719, 1857.431404, 1548.007808, 29256.42719, 1857.431404, 1548.007808, 29256.42719, 1857.431404, 1548.007808), N=3)`例如,我把它缩短到三个区域。它在单击“gen”后声明'Dirichlet36‘。请帮我把这个编码。
发布于 2014-08-16 08:09:15
这可能会有帮助(来源):
关于Dirichlet分布参数的学习 假设作为模型的一部分,有j概率数组pj,1:K,j= 1,…,J,其中K是每个数组的维数,和(pj,1:K) =1,我们给它们一个Dirichlet先验: pj,1:K ~ ddirch(alpha[]) 我们想了解一下alpha[]。但是,Dirichlet分布的参数alpha[]不能是随机节点。诀窍是,如果deltak ~dgamma(α,1),则元素deltak /sum(deltak 1: K ),k= 1,…,K的向量是Dirichlet,参数为αK,k= 1,…,K。因此,下面的构造应该允许学习参数alpha[]: 对于(k in 1:K) { pj,k <- deltaj,k/ sum(deltaj,) deltaj,k~ dgamma(alphak k,1) } 优先顺序可以直接放在字母上。
https://stackoverflow.com/questions/24349692
复制相似问题