2013-05-16 34 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]只是數據中的一些變量,有些缺失值。我發現你對一個節點的多個定義問題的迴應也很有幫助。非常感謝! –