我正在通过 R 运行一个 BUGS 模型,但我遇到了一个问题,BUGS 说我的一个数据集是一个“未定义的变量”。它遇到问题的数据集有很多 NA,但为什么会导致问题?当 NA 被 0 替换时它工作得很好,所以我知道使用 NA 的 BUGS 存在问题。使用 0 而不是 NA 不是可接受的解决方案,因为我需要记录转换结果数量。有没有人遇到类似的事情并找到了解决方案?
这是我正在努力解决的模型部分:
rm(list=ls(all=T))
library(R2OpenBUGS)
#set working directory separately, I name it here
working_dir=getwd()
mod=function(){
tau.cat~dgamma(0.001, 0.001)
q.unr~dnorm(0, 1E-10)
for(y in 1:nyears){
log.N[y]~dnorm(0, 1E-10)
N[y]<-exp(log.N[y])
}
for(w in 1:4){
for(y in 1:nyears){
#generating estimated catch
est.c.cat.unr[y,w]<-N[y]*(1-exp(-q.unr*c.eff.unr[y,w]))
#fitting it to data
c.cat.unr[y,w]~dnorm(est.c.cat.unr[y,w], tau.cat)
}
}
}
#write model to a .txt file to pass to BUGS
write.model(mod, paste(working_dir, '/model_file.txt', sep=""))
dat=list(
nyears=38,
c.cat.unr=c.cat.unr,
c.eff.unr=c.eff.unr)
#creating initial values for each chain
init1=list(
log.N=log(rep(180000, 38)),
q.unr=1E-5,
tau.cat=.0001)
init2=list(
log.N=log(rep(250000, 38)),
q.unr=1E-6,
tau.cat=.001)
inits=list(init1, init2)
#pass the model to BUGS; debug=T will keep the BUGS window open so you can see errors
sim=bugs(data=dat,
inits=inits,
parameters.to.save=c("N"),
n.iter=1000,
n.chains=2,
n.burnin=500,
n.thin=1,
model.file="model_file.txt",
debug=T,
codaPkg=T,
working.directory=working_dir)
######DATA######
##c.cat.unr##
chw.3 chw.4 chw.5 chw.6
[1,] NA 20010 NA NA
[2,] 12458 16227 NA NA
[3,] 18483 10066 NA NA
[4,] 24633 NA NA NA
[5,] 9891 NA NA NA
[6,] 29882 NA NA NA
[7,] 4912 24628 NA NA
[8,] 13406 NA NA NA
[9,] NA 17181 NA NA
[10,] NA NA NA NA
[11,] NA NA NA NA
[12,] NA NA NA NA
[13,] NA NA NA NA
[14,] NA NA NA NA
[15,] NA NA NA NA
[16,] NA NA NA NA
[17,] NA NA NA NA
[18,] NA NA NA NA
[19,] NA NA NA NA
[20,] NA NA NA NA
[21,] NA NA NA NA
[22,] NA NA NA NA
[23,] NA NA NA NA
[24,] NA NA NA NA
[25,] NA NA NA NA
[26,] NA NA NA NA
[27,] NA NA NA NA
[28,] NA NA NA NA
[29,] NA NA NA NA
[30,] NA NA NA NA
[31,] NA NA NA NA
[32,] NA NA NA NA
[33,] NA NA NA NA
[34,] NA NA NA NA
[35,] NA NA NA NA
[36,] NA NA NA NA
[37,] NA NA NA NA
[38,] NA NA NA NA
##c.eff.unr##
cew.3 cew.4 cew.5 cew.6
[1,] NA 5724 NA NA
[2,] 2802 2904 NA NA
[3,] 3972 2004 NA NA
[4,] 6432 NA NA NA
[5,] 2814 NA NA NA
[6,] 6180 NA NA NA
[7,] 2784 5970 NA NA
[8,] 5634 NA NA NA
[9,] NA 5562 NA NA
[10,] NA NA NA NA
[11,] NA NA NA NA
[12,] NA NA NA NA
[13,] NA NA NA NA
[14,] NA NA NA NA
[15,] NA NA NA NA
[16,] NA NA NA NA
[17,] NA NA NA NA
[18,] NA NA NA NA
[19,] NA NA NA NA
[20,] NA NA NA NA
[21,] NA NA NA NA
[22,] NA NA NA NA
[23,] NA NA NA NA
[24,] NA NA NA NA
[25,] NA NA NA NA
[26,] NA NA NA NA
[27,] NA NA NA NA
[28,] NA NA NA NA
[29,] NA NA NA NA
[30,] NA NA NA NA
[31,] NA NA NA NA
[32,] NA NA NA NA
[33,] NA NA NA NA
[34,] NA NA NA NA
[35,] NA NA NA NA
[36,] NA NA NA NA
[37,] NA NA NA NA
[38,] NA NA NA NA
该模型还有很多内容,但其余部分运行良好。我已经剪掉了模型的其余部分,只包括了给我带来问题的部分。我已经运行了模型的这一部分,我得到了相同的“c.eff.unr 是一个未定义的变量”错误