我知道这是一个之前被问过的问题,我已经查看了答案,但它们似乎不适用于我的问题。我写了一个二项式混合模型,其中包括在WinBUGS中使用协变量。该模型在语法上是正确的,数据加载正常,但我得到错误'节点'lambda [1]'的多个定义。 Lambda没有在数据中定义,它的下标提供了每年有数据的估计。
我的代码如下:
model {
#Priors
for (k in 1:7) {
lambda[k]~dnorm(0,0.01)
p[k]~dunif(0,1)
}
alpha0~dunif(-10,10)
alpha1~dunif(-10,10)
beta0~dunif(-10,10)
beta1~dunif(-10,10)
#Likelihood
#Ecological model for true abundance (process model)
for (k in 1:7) { #Loop over years
lambda[k]<-exp(alpha.lam[k])
for (i in 1:R) { #Loop over R sites
N[i,k]~dpois(lambda[k]) #Abundance
log(lambda[k])<-alpha0+alpha1*well[i,k]
#Observation model for replicated counts
for (j in 1:T) { #Loop over repeated counts within a year
y[i,j,k] ~dbin(p[k],N[i,k]) #Detection
p[k]<-exp(lp[k])/(1+exp(lp[k]))
lp[k]<-beta0+beta1*well[i,k]
#Assess model fit using Chi-squared discrepancy
#Compute fit statistic "E" for observed data
eval[i,j,k]<-p[k]*N[i,k] #Expected values
E[i,j,k]<-pow((y[i,j,k]-eval[i,j,k]),2)/(eval[i,j,k]+0.5)
#Generate replicate data and compute fit stats for them
y.new[i,j,k]~dbin(p[k],N[i,k])
E.new[i,j,k]<-pow((y.new[i,j,k]-eval[i,j,k]),2)/(eval[i,j,k]+0.5)
}#j
}#i
}#k
#Derived and other quantities
for(k in 1:7) {
totalN[k]<-sum(N[,k]) #Total pop. size across all sites
mean.abundance[k]<-exp(alpha.lam[k])
}
fit<-sum(E[,,])
fit.new<-sum(E.new[,,])
}
#Data
list(R=669,T=3)
任何人都可以告诉我为什么我会收到此错误。提前谢谢了。