JAGS模型有时会给出“切片器卡在具有无限密度误差的值上”

问题描述

我在JAGS中具有以下模型,但有时无法运行,这是代码

library(rjags)

model1 <- "model {
for (j in 1:nobs){
  y[j] ~ dbeta(lambda[j] + 10^(-323),1-lambda[j] - 10^(-323)) 
  
  logit(lambda[j]) <- inprod(X[j,],beta) 
}
beta[1] ~ dnorm(0,0.1)
beta[2] ~ dgamma(1,1)
}"


n_chains = 1
n_adapt = 5000
n_iter = 10000
n_thin = 1
n_burnin = 5000

# generate data
n = 100

Ffun = plogis
design_mat = cbind(1,matrix(seq(0,1,by = 0.2),ncol=1))

gen_data = function(n,beta) {
X = design_mat[sample(nrow(design_mat),size = n,replace = T),]
lambda = Ffun(X %*% beta)
y = rbeta(n,lambda,1-lambda)
list(X = X,y = y)
}


for (i in 1:50){
beta = as.matrix(c(-3,5))
jags_data = gen_data(n,beta)
jags_data$nobs = n
jg_model <- jags.model(textConnection(model1),data = jags_data,n.chains = n_chains,n.adapt = n_adapt)
update(jg_model,n.iter = n_burnin)
result <- coda.samples(jg_model,variable.names = c("beta"),n.iter = n_iter,thin = n_thin,n.chains = n_chains)

beta_est = list(apply(result[[1]],2,median))
}

但这有时会运行,有时会出现此错误

update.jags(object,n.iter,...)中的错误:节点beta 1中的错误 切片器卡在无限密度的值上

,如果我按照建议的here使用了截短的Beta,则会出现以下错误

jags.model(textConnection(model1),data = jags_data,n.chains = n_chains,中的错误: 节点y 1中的错误 节点与父母不一致

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)