Random OpenBUGS,我可以/应该在(重新)启动时更改RNG种子吗?
所以我正试图使用R中的OpenBUGS和R2OpenBUGS来拟合一个相当复杂的模型,短期运行模型工作,但长期运行失败。当我在R2OpenBUGS中的bugs调用中设置debug=T时,日志会显示:抱歉,模块MathRandnum中出现了一些错误。显然,为了得到收敛的估计值,我需要运行大量迭代的模型,通常它不能运行到40K次迭代 我尝试过的一件事是短期运行模型,停止,保存链,然后重新启动,这至少可以告诉我它何时失败。在这次运行中,模型在44到48K次迭代之间失败 我真的不明白MathRandnum模块在做什么,但它似乎是MCMc更新过程的一部分 所以我的想法是,一旦设置了OpenBUGS随机种子并给出了初始值,那么链的值及其更新过程就是确定性的。因此,对于任何给定的种子和初始值,故障将在给定的迭代中发生。因此,如果有办法在故障发生之前更改种子,那么它可能不会发生。在OpenBUGS GUI中,此时不能更改种子,需要在编译模型之后和更新之前进行更改。这就是我的问题,重新启动时是否可以更改种子?如果有可能的话,这样做会是错误的吗 或者,这个模型可能出了什么问题,我对MathRandnum所做的解释是否正确?鉴于我认为它在不同点失败,但一旦初始化,它总是在同一点失败,这是否意味着更改种子预设(它可以接受值1-14)可以修复它 我的错误模型如下Random OpenBUGS,我可以/应该在(重新)启动时更改RNG种子吗?,random,winbugs,openbugs,Random,Winbugs,Openbugs,所以我正试图使用R中的OpenBUGS和R2OpenBUGS来拟合一个相当复杂的模型,短期运行模型工作,但长期运行失败。当我在R2OpenBUGS中的bugs调用中设置debug=T时,日志会显示:抱歉,模块MathRandnum中出现了一些错误。显然,为了得到收敛的估计值,我需要运行大量迭代的模型,通常它不能运行到40K次迭代 我尝试过的一件事是短期运行模型,停止,保存链,然后重新启动,这至少可以告诉我它何时失败。在这次运行中,模型在44到48K次迭代之间失败 我真的不明白MathRandnu
{
# Priors
#State model priors
shape.c ~ dunif(0.0001, 3) # dispersal kernel shape/scale parameters
scale.alpha ~ dunif(0.0001, 3) #^
tau2 <- 1/(sigma2 * sigma2)
sigma2 ~ dunif(0, 5)
phi ~ dunif(0, 1)
alpha.theta ~ dnorm(0 , .01)
#alpha.theta ~ dflat()
beta.urb ~ dnorm(0 , .01)
beta.wood ~ dnorm(0 , .01)
beta.int ~ dnorm(0, .01)
init.occ ~ dnorm(0, 1000)T(0, 1) # Strong prior! Assumption that is absent from most sites in 2001
for (t in 1:nyear) {
alpha.p[t] ~ dnorm(mu.lp, tau.lp)
}
#Observation model priors
mu.lp ~ dnorm(0, 0.01)
tau.lp <- 1 / (sd.lp * sd.lp)
sd.lp ~ dunif(0, 5)
dtype2.p ~ dunif(dtype2p_min,dtype2p_max) #List length factor effects
dtype3.p ~ dunif(dtype3p_min,dtype3p_max) #
#State model
for (i in 1:nsite) {
z[i,1] ~ dbern(init.occ) # this follows from line 22
theta[i] <- min(max(0.00000000001, thetalim[i]), 0.999999999999) # overflow constraint
logit(thetalim[i]) <- alpha.theta + beta.urb*urban[i] + beta.wood*wood[i] + beta.int*wood[i]*urban[i]# + RE[i] #Site level environment relation
for (t in 2:nyear) { # This loop now starts at year 2002
gamma[i,t] <- min(max(0.00000000001, gammalim[i,t]), 0.999999999999) # overflow constraint
gammalim[i,t] <- (shape.c/(2*scale.alpha*(exp(loggam(1/shape.c)))))*(exp(-1*(pow((d[i,t]/scale.alpha), shape.c)))) # dispersal kernel from Clark 1998
muZ[i,t] <- z[i ,t-1] * phi + (1 - z[i,t-1]) * gamma[i, t]*theta[i] # Occupancy dynamics,
z[i,t] ~ dbern(muZ[i,t]) # True occupancy z at site i
}
}
# Observation model
for (j in 1:nvisit) {
Py[j] <- z[Site[j], Year[j]] * p[j]
logit(p[j]) <- alpha.p[Year[j]] + dtype2.p*DATATYPE2[j] + dtype3.p*DATATYPE3[j]
y[j] ~ dbern(Py[j])
Presi[j] <- abs(y[j] - p[j])
y.new[j] ~ dbern(Py[j])
Presi.new[j] <- abs(y.new[j] - p[j])
}
# Bayesian Goodness-of-fit
fit <- sum(Presi[])
fit.new <- sum(Presi.new[])
# Finite sample occupancy
for (t in 2:nyear) {
psi.fs[t] <- sum(z[1:nsite, t])/nsite
}
{
#前科
#状态模型先验
shape.c~dunif(0.0001,3)#扩散核形状/尺度参数
标度α~dunif(0.0001,3)#^
陶2