Hi,
I'm trying to generate a GLMM for Y following a negative binomial
distribution. The first step I'm taking as a beginner in the use of R2Jags
is to generate a GLM for Y following a Poisson distribution (I heard it's
good in order to get used to the coding language), so here I am and here I
face the first error message for which I can't find any mistake of spelling.
Could you please give me your opinion about it?
I'm modelling the abundance of Thersitina parasites as a response to the
standard size of the host fish (=Standard), the type of site where it was
sampled (Site, two levelled factor: C, E) month of sampling (Month, 3
levelled factor: May, June, July).
Here's what I did:
MM1 <- model.matrix(~ Site * Month + Standard, data = Data)
head(MM1)
#
# (Intercept) SiteE MonthJune MonthJuly Standard SiteE:MonthJune
SiteE:MonthJuly
#1 1 0 0 0 5.14
0 0
#2 1 1 0 0 5.49
0 0
#3 1 1 0 0 5.20
0 0
#4 1 1 0 0 5.57
0 0
#5 1 0 0 0 4.90
0 0
#6 1 0 0 0 5.99
0 0
#
win.data1 <- list(Y = Data$Thersitina,
Eut = MM1[,2], # SiteE
M2 = MM1[,3], # Month2_June
M3 = MM1[,4], # Month3_July
Std = MM1[,5], # Standard
I2 = MM1[,6], # SiteE:Month2_June
I3 = MM1[,7], # SiteE:Month3_July
N = nrow(Data))
sink("GLM.txt")
cat("
model {
#Likelihood(data | parameters)
for (i in 1:N) { # N is the sample
size
Y[i] ~ dpois(mu[i])
eta[i] <- b[1] +
b[2] * Eut[i] +
b[3] * M2[i] +
b[4] * M3[i] +
b[5] * Std[i] +
b[6] * I2[i] +
b[7] * I3[i]
log(mu[i]) <- max(-20, min(20, eta[i]))
PRes[i] <- (Y[i] - mu[i]) / sqrt(mu[i]) #estimate residuals (observed
- expected / sqrt(variance))
#Discrepancy measures (used for checking overdispersion)
YNew[i] ~ dpois(mu[i]) #New data
PResNew[i] <- (YNew[i] - mu[i]) / sqrt(mu[i])
D[i] <- pow(PRes[i], 2)
DNew[i] <- pow(PResNew[i], 2)
}
# Add up discrepancy measures
fit <- sum(D[1:N])
fit.new <- sum(DNew[1:N])
for (i in 1:6) { b[i] ~ dnorm(0.0, 0.01)
# b[i] ~ dunif(-20, +20)
}
}
",fill = TRUE)
sink()
inits1 <- function () {
list(b = rnorm(7, 0, 0.01))}
out1 <- jags(data = win.data1,
inits = inits1,
parameters = params1,
model.file = "GLM.txt",
n.thin = nt,
n.chains = nc,
n.burnin = nb,
n.iter = ni)
That's when R returns this error message:
#
#Compiling model graph
# Resolving undeclared variables
# Allocating nodes
#Deleting model
#
#Error in jags.model(model.file, data = data, inits = init.values, n.chains
= n.chains, :
# RUNTIME ERROR:
#Compilation error on line 13.
#Subset out of range: b[7]
#
So I guess there's a problem with line 13 of the code (i.e. b[7] * I3[i])
causing the problem, but why... I really don't see the problem :(
Any guess?
Thanks in advance,
aB
--
View this message in context:
http://r.789695.n4.nabble.com/Error-message-R2Jags-tp4651178.html
Sent from the R help mailing list archive at Nabble.com.