有人请告诉我,如果等号括号中的一个元素是NA,那么WinBUGS中的equals函数会返回吗?
具体来说,我想进行转型:
for(i in 1:N){
newvar[i] <- 1*equals(oldvar[i],0) + 2*equals(oldvar[i],1.5) + 3*equals(oldvar[i],4) + 4*equals(oldvar[i],8)
}
并希望保留NA,因此在oldvar [i]中使用NA的记录在newvar [i]中也有NA,但我担心这种转换会将NA变为0&#39; s
非常感谢任何和所有建议。
庄
答案 0 :(得分:2)
如果您没有在oldvar [1]上放置先验分布,则应该给出错误消息(使用未定义的节点)。 WinBUGS期望所有节点在计算中使用时都具有值。如果你先写了一个,那么WinBUGS应该从oldvar [1]的后验分布中生成值,然后equals()函数应该对那些生成的值进行操作。你是否曾使用过系统为oldvar [1]系统地生成零?如果您对丢失数据的建模不感兴趣,我建议在WinBUGS中使用它之前从数据中删除缺失值。