我正在尝试使用JAGS运行他的模型代码:
model{
## priors
b0 ~ dnorm(0, 5)
b1 ~ dnorm(0, 5)
b2 ~ dnorm(0, 5)
b3 ~ dnorm(0, 5)
b4 ~ dnorm(0, 5)
b5 ~ dnorm(0, 5)
b6 ~ dnorm(0, 5)
sigmayear ~ dt(0, 1, 2) I(0, )
## likelihood
for(i in 1:nind){
for(t in 2:last[i]){
y[i,t] ~ dbern(prop[i, t - 1])
prop[i, t - 1] <- y[i, t - 1] * (1 - d[i, t - 1])
logit(d[i, t - 1]) <-
b0 + b1 * temp[i, t] + b2 * sex[i] + b3 * day[t] +
b4 * strat[i] + b5 * temp[i, t] * sex[i] +
b6 * temp[i, t] * strat[i] + sigmayear * ryear[years[i]]
} # close t
} # close i
for(k in 1:nyears){
ryear[k] ~ dnorm(0, 1)
} #close k
}
我创建的数据矩阵应该没问题:
> str(bugs.data)
List of 9
$ y : num [1:124, 1:203] 1 1 1 1 1 1 1 1 1 1 ...
$ nind : int 124
$ last : num [1:124] 98 98 78 91 78 98 87 88 98 111 ...
$ temp : num [1:124, 1:203] 1.33 1.33 1.33 1.33 1.33 ...
$ sex : num [1:124] 1 0 1 1 1 0 0 0 0 1 ...
$ day : num [1:203] -1.72 -1.7 -1.69 -1.67 -1.65 ...
$ strat : num [1:124] 0 0 0 0 0 0 0 0 0 0 ...
$ years : num [1:124] 7 7 7 7 7 7 7 7 7 1 ...
$ nyears: int 8
使用这些参数的实际调用在......之前一直有效。
ni <- 5000 #number of sims
nt <- 1 #get rid of
nb <- 2000 #warm in
nc <- 3 # number of chains
但出于某种原因,当我想打电话时,会发生这种情况:
> ms <- jags(bugs.data, inits, parameters, "knownfateSurvivalfat.txt", n.chains = nc, n.thin = nt, n.iter = ni, n.burnin = nb, working.directory = getwd())
Compiling model graph
Resolving undeclared variables
Deleting model
Fehler in jags.model(model.file, data = data, inits = init.values, n.chains = n.chains, :
RUNTIME ERROR:
Compilation error on line 14.
Index out of range taking subset of y
有人有任何想法为什么“y”应该超出范围?
“i”应始终从1到124适合矩阵(bugs.data),“t”从2到203,这也很好....
答案 0 :(得分:0)
请确保在您的数据列表中看起来像list("y"=y,...)
而不是list(y="y"...)
。
只是预感。
马特