我正在尝试理解以下rjags代码。
library(rjags)
set.seed(1)
N <- 10
p <- rep(10,N)
cat("
model {
for (i in 1:N) {
p[i] ~ dpois(lambda)
}
lambda <- 2*exp(-2*alpha*3)/(2*pow(4,2))
alpha ~ dnorm(beta,tau)T(0,0.2)
beta ~ dnorm(0,10000)
tau ~ dgamma(2,0.01)
}", file= "example1.jag")
jags <- jags.model('example1.jag',data = list( "N" = N,"p"=p))
update(jags, 16000)
out_ex1<-jags.samples(jags, 'alpha',4000)
out_ex1$alpha
它具有泊松似然性且具有正常先验,因此没有吉布斯抽样的封闭形式。那么这里使用什么MCMC方法呢? ARS?切片采样?或Metropolis Hasting?
答案 0 :(得分:2)
您总是可以使用rjags :: list.samplers来找出JAGS在随机变量中使用的采样器-例如:
> list.samplers(jags)
$`base::RealSlicer`
[1] "alpha"
$`base::RealSlicer`
[1] "beta"
$`base::RealSlicer`
[1] "tau"
在这种情况下,这表明您将切片采样器用于模型中的三个未观察到的随机节点。切片采样是JAGS中的主要工作方式,因此这非常典型,除非可以使用更高效的(例如共轭)采样器(或者如果为适当的模型加载了GLM模块)。