Hello all,
With apologies for posting regarding an often repeated question. I am getting the "node inconsistent with parents" error for a fairly basic multi-species occupancy model. I've created initial values, and set all site x species combinations to 1 (i.e., occupied) as per AHM1. The inconsistent node varies between attempted runs, but it is always a 0 in the data. Code is below, happy to share data if that would be useful.
Any idea what I could try to resolve this? Many thanks,
Tom
# Bundle data
test.mod.data <- list(y = species.data,
nsite = dim(species.data)[1], # 124 sites
nrep = dim(species.data)[2], # 2 visits
nspec = dim(species.data)[3], # 71 species
Area = Site.area,
Observer = Observer.ID,
Jul.day = Jul.day)
# JAGS model
sink("Test_model_v1.txt")
cat("
model {
# Priors for species-specific effects in occupancy and detection
for(k in 1:nspec){
lpsi[k] ~ dnorm(mu.lpsi, tau.lpsi)
betalpsi1[k] ~ dnorm(mu.betalpsi1, tau.betalpsi1)
lp[k] ~ dnorm(mu.lp, tau.lp)
alphalp1[k] ~ dnorm(mu.alphalp1, tau.alphalp1)
alphalp2[k] ~ dnorm(mu.alphalp2, tau.alphalp2)
} # / nspec
# Hyperpriors for occupancy
mu.lpsi ~ dnorm(0,0.01)
tau.lpsi <- pow(sd.lpsi, -2)
sd.lpsi ~ dunif(0,8)
mu.betalpsi1 ~ dnorm(0,0.1)
tau.betalpsi1 <- pow(sd.betalpsi1, -2)
sd.betalpsi1 ~ dunif(0, 4)
# Hyperpriors for detection
mu.lp ~ dnorm(0,0.1)
tau.lp <- pow(sd.lp, -2)
sd.lp ~ dunif(0, 2)
mu.alphalp1 ~ dnorm(0,0.1)
tau.alphalp1 <- pow(sd.alphalp1, -2)
sd.alphalp1 ~ dunif(0,1)
mu.alphalp2 ~ dnorm(0,0.1)
tau.alphalp2 <- pow(sd.alphalp2, -2)
sd.alphalp2 ~ dunif(0,1)
# Ecological model for true occurrence (process model)
for(k in 1:nspec){
for (i in 1:nsite) {
logit(psi[i,k]) <- lpsi[k] +
betalpsi1[k] * Area[i]
z[i,k] ~ dbern(psi[i,k])
} # / nspec
} # / nsite
# Observation model for replicated detection/nondetection observations
for(k in 1:nspec){
for (i in 1:nsite){
for(j in 1:nrep){
logit(p[i,j,k]) <- lp[k] +
alphalp1[k] * Observer[i,j] +
alphalp2[k] * Jul.day[i,j]
mu.p[i,j,k] <- z[i,k] * p[i,j,k]
y[i,j,k] ~ dbern(mu.p[i,j,k])
} # / nrep
} # / nsite
} # / nspec
} # / model
", fill = TRUE)
sink()
# Initial values, set all species at occurring
zst <- array(1, dim = c(nsite, nspec))
inits <- function() list(z = zst,
lpsi = rnorm(n = nspec),
betalpsi1 = rnorm(n = nspec),
#betalpsi2 = rnorm(n = nspec),
#betalpsi3 = rnorm(n = nspec),
lp = rnorm(n = nspec),
alphalp1 = rnorm(n = nspec),
alphalp2 = rnorm(n = nspec))
# Parameters to monitor
params <- c("mu.lpsi", "sd.lpsi", "mu.betalpsi1", "sd.betalpsi1", "mu.lp", "sd.lp", "mu.alphalp1", "sd.alphalp1", "mu.alphalp2", "sd.alphalp2")
# MCMC settings
ni <- 1500
nt <- 10
nb <- 500
nc <- 3
# Run JAGS
Mod.Out <- jagsUI::jags.basic(test.mod.data, inits, params1, "Test_model_v1.txt", n.chains = nc, n.thin = nt, n.iter = ni, n.burnin = nb, parallel = TRUE)