我发现即使使用选项,包中的功能jags()有时R2jags也不能部分消除刻录n.burnin=##。这是R(一个简单的线性模型)中的一个非常简单的示例:
library(R2jags)
N <- 1000
y <- rnorm(N)
x <- rnorm(N)
data <- list("N", "y", "x")
inits <- function(){list(beta0=rnorm(1), beta1=rnorm(1), tau=1)}
parameters <- c("beta0", "beta1", "tau")
模型m.bug是这样的:
model{
for (i in 1:N){
y[i] ~ dnorm(mu[i], tau)
mu[i] <- beta0 + beta1*x[i]
}
beta0 ~ dnorm(0, 0.00001)
beta1 ~ dnorm(0, 0.00001)
tau ~ dgamma(0.001, 0.001)
sigma2 <- 1/tau
}
在包中使用“jags()”,R2jags如下所示:
m <- jags(data, inits, parameters, "m.bug",
n.chains=3, n.iter=2000, n.burnin=1000, n.thin=1)
我的问题:
在 的输出中m,后验估计基于正确的交互次数(1000),但如果我们检查跟踪图(使用traceplot(m)),老化部分似乎仍然存在(例如,“tau”的前几个值没有收敛) . 为什么?
并且只有一个进度条(通常两个,一个用于老化,一个用于其余)。
另外,如果我n.iter=2000, n.burnin=1000改为n.iter=2001000, n.burnin=2000000
经过的时间不会改变,这对于这么多迭代来说“太快了”。
附言。我使用R了 2.15.2 版和R2jags0.03-08 版