У меня есть следующая модель в 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,...): ошибка в бета-версии узла 1 Слайсер застрял на значении с бесконечной плотностью
и если я использую усеченную бета-версию, как было предложено здесь выдает следующую ошибку:
Ошибка в jags.model(textConnection(model1), data = jags_data, n.chains = n_chains,: Ошибка в узле y1 Узел несовместим с родителями
10^-323
попробуйте10^-4
. Когда вы пробовали методT(,)
, вы пробовали, если для данных значений по ссылке или дляT(10^-323, 1-10^-323)
? - person user20650   schedule 14.09.2020