【问题标题】:Multiple definitions of node W[1]节点W[1]的多重定义
【发布时间】:2014-06-15 21:24:20
【问题描述】:

我尝试在 sum(delta[j,1:5])=0 的条件下为每个“j”估计 delta[j,k]。但是当我编译代码时,软件输出是“节点 W[1] 的多个定义”。有人可以帮我吗?

model {
for (j in 1:p){
for (k in 1:5){
Z[j, k]<- sum(delta[j,1:k])
}
for (i in 1:n){
Y[i , j] ~ dcat ( prob [i , j , 1: 5])
}}
for (i in 1:n){
theta [i] ~ dnorm (0.0 , 1.0)
}
for (i in 1:n){
for (j in 1:p){
for (k in 1:5){
eta[i , j , k] <- alpha [j] * (k*theta [i] - k*beta [j]+Z[j, k])
psum [i , j , k] <- sum(eta[i , j , 1: k])
exp.psum[i , j , k]<- exp( psum [i , j , k])
prob [i , j , k] <- exp.psum[i , j , k] / sum(exp.psum [i , j , 1:5])
}  } }
for (j in 1:p){
W[j] <- sum(delta [j, 1:5])
W[j]<- 0
alpha [j] ~ dlnorm (0.83 , pr.alpha)
beta [j] ~ dnorm (-1.73 , pr.beta ) 
delta[j,1] <- 0.0
for (k in 2:5){
delta [j , k] ~ dnorm (0.02 , pr.delta )
} }
pr.alpha <- pow(1.2 , -2)
pr.beta <- pow(0.7, -2)
pr.delta <- pow(1.3, -2)
}

谢谢

【问题讨论】:

    标签: winbugs


    【解决方案1】:

    BUGS 不允许您覆盖确定性节点,​​...您在最后一个 for 循环中有两次 W[j] &lt;-

    我想有很多方法可以编写代码来满足您的条件。例如,您可以为delta 使用不同的分布,或者将delta[1] 设置为在模拟delta[2]delta[5] 后使所有delta 总和为0 所需的余数

    【讨论】:

    • 谢谢。在没有W[j] &lt;- sum(delta [j, 1:5]) W[j]&lt;- 0 的模型中,我在delta[j,1] &lt;- 0.0delta[j,1] &lt;- 0-sum(delta [j, 2:5]) 之后尝试delta[j,2] &lt;- -sum(delta [j, 3:5])。但是BUGS会出错。
    • 我在我的模型中通过这个 chande 解决了我的问题: delta[j,2] W[j]。但 BUGS 只为 1 个链生成​​初始化,而不是更多。如何解决这个问题?
    • BUGS 可以为您生成它们(点击 gen inits 按钮)或使用list 类型对象加载您自己的。
    • 谢谢。我的意思是我为 3 链编译模型,但是当生成 inits(通过点击 gen inits 按钮)时,BUGS 显示陷阱“未定义的真实结果”。
    • 很可能 BUGS 在为您的模型生成初始值方面做得不是很好。加载你自己的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 2019-06-22
    • 2014-12-03
    • 1970-01-01
    相关资源
    最近更新 更多