【问题标题】:Error:"Multiple definitions of node" in OpenBUGS.错误:OpenBUGS 中的“节点的多个定义”。
【发布时间】:2013-08-08 02:00:19
【问题描述】:

所以我认为下面的代码可以在 OpenBUGS 中工作,但它给了我一个“节点 Z 的多个定义”错误。

model
{
 Z <- round(X)
 X ~ dnorm(0,1)T(-2,2)
}

list(Z=0)

即使我将Z &lt;- round(X) 替换为Z &lt;- 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 与带有“墙”(截断)的离散高斯分布分布,我想根据Z 上的数据估计mu。我想我可以尝试将Z 设为分类变量并估计参数,但这在理论上似乎很痛苦。我可以使用一些 BUGS 技巧来获得我想要的模型吗?

【问题讨论】:

    标签: syntax-error probability winbugs


    【解决方案1】:

    WinBUGS 和 OpenBUGS 不允许观察到的数据成为未观察到的变量的确定性函数。正如您所建议的,您可以使用 dcat() 并根据正态分布来表达概率。

    尽管您可能更愿意切换到 JAGS,它有一个分布 dround() 可以处理这种情况 - 数据四舍五入到 n 个有效数字,在您的情况下 n=0。尽管this forum post 表明当前稳定版本中存在一个针对这种情况的错误,您可能需要下载开发版本。

    【讨论】:

      猜你喜欢
      • 2017-02-05
      • 2014-07-21
      • 2014-04-25
      • 2015-09-08
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      相关资源
      最近更新 更多