0

我正在使用 rjags 使用 N 混合模型和计数数据来计算物种丰度。为了捕捉我的数据的过度分散,我使用了超先验。但我得到一个

"Error in node S[1,1,2] Invalid parent values"

我的猜测是我的先验维度有问题,或者先验之一是负数、空值或 NA,这会停止节点 S 的计算。

知道如何解决这个问题吗?可以初始化S吗?

model {
##  PRIORS ##

lambda[1] ~ dunif(0, 500)
lambda[2] ~ dunif(0, 500) 
p[1] ~ dunif(0, 1)
p[2] ~ dunif(0, 1)
# surdispersion
muepsomega1 ~ dnorm(0,0.0001)
sigepsomega1 ~ dunif(0,100)
iomega1 ~ dnorm(0,0.0001)
tauepsomega1 <- 1/(sigepsomega1*sigepsomega1) 
omega2 ~ dunif(0, 1)

## LIKELIHOOD ##
# Create a loop across all j sites
for(j in 1:nSites) {

# surdispersion sur omega 1
omega1[j] <- iomega1 + epsomega1[j]
epsomega1[j] ~ dnorm(muepsomega1,tauepsomega1)

N[1,j,1] ~ dpois(lambda[1]) 
N[2,j,1] ~ dpois(lambda[2])

for (i in 1:3) {    
  S[i,j,1] ~ dnegbin(2, 1) 
  } # end loop i
for(t in 2:nYears) {
  # Estimate survivorship (between year survival)
  S[1,j,t] ~ dnegbin(omega1[j], N[1,j,t-1])  
  S[2,j,t] ~ dnegbin(omega2, N[2,j,t-1]) 

  N[1,j,t] <- S[1,j,t] 
  N[2,j,t] <- S[2,j,t] 
  } # end loop t in 2:years

# Loop across sampling replicates to estimate detection
for (t in 1:nYears){
  for(k in 1:nReps){
    n[1,j,k,t] ~ dnegbin(p[1], N[1,j,t]) 
    n[2,j,k,t] ~ dnegbin(p[2], N[2,j,t]) 

   } # end loop k nreps
  } # end loop j sites
}

这就是我所说的模型:

#Model file
modFile = "model/2016-07-12/model_Nmix.R"

inits <- function(){
list('lambda' =c(1,1), 'p'= c(1,1),'omega2' = 1,'iomega1'=1, 'muepsomega1'= 1, 'sigepsomega1'= 1, 'epsomega1'=c(1,1,1,1,1,1,1)) } # size epsomega1 is length(nSites)=7

 # Compile the model
 require(rjags)
 abundance.out <- jags.model(file=modFile, data=data,n.chains = 3, n.adapt = 3000)
4

1 回答 1

0

让 epsomega1 和 iomega1 来自对负值没有任何概率密度的分布。Gamma、均匀、对数正态或截断正态分布是候选分布,您的选择应取决于您认为最正确的模型规范实际上是什么。

于 2016-08-10T14:13:23.543 回答