所以我认为下面的代码可以在 OpenBUGS 中工作,但它给了我一个“节点 Z 的多个定义”错误。
model
{
Z <- round(X)
X ~ dnorm(0,1)T(-2,2)
}
list(Z=0)
即使我替换Z <- round(X)
为Z <- X
我继续得到同样的错误。从这个事实我们可以推断出错误是由于对可观察变量使用逻辑赋值造成的,特别是错误不是由于round()
操作造成的。
为什么BUGS不允许这样做?另外,在这种情况下有什么好的解决方法?这是我想要实现的更通用的版本,它本质上是对带有墙壁的离散高斯进行建模(截断):
model
{
for(i in 1:N){
Z[i] <- round(X[i])
X[i] ~ dnorm(mu,1)T(-2,2)
}
mu ~ dunif(-2,2)
}
从本质上讲,我想Z
与带有“墙”(截断)的离散高斯分布,我想mu
从Z
. 我想我可以尝试将其Z
设为分类变量并估计参数,但这在理论上似乎很痛苦。我可以使用一些 BUGS 技巧来获得我想要的模型吗?