2013-05-16 36 views
1

有人请让我知道,如果等号括号中的一个元素是NA,WinBUGS中的equals函数返回什么?WinBUGS等于NA功能

具体来说,我想要做的转型:

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与NA记录[I]也有NA在newvar [I],但恐怕这变形将NA变成0。

任何和所有的建议非常感谢。

回答

2

这应该给出错误信息(利用未定义的节点)如果还没有戴上oldvar先验分布[1]。 WinBUGS预计所有节点在计算中使用它们的值。如果你已经在上面添加了一个事件,那么WinBUGS应该从oldvar [1]的后验分布生成值,然后equals()函数应该对这些生成的值进行操作。你是否曾经使用过一个系统地为oldvar生成零的函数?如果您对建模缺失数据不感兴趣,建议在使用WinBUGS之前从数据中删除丢失的值。

+0

谢谢@ Chris。这真的很有帮助。我的oldvar [i]只是数据中的一些变量,有些缺失值。我发现你对一个节点的多个定义问题的回应也很有帮助。非常感谢! –