贝叶斯 Beta 回归模型——锯齿状错误:父值无效
Bayesian Beta regression Model -- Error in jags: Invalid parent value
我正在尝试通过 R 运行 jags 中的贝叶斯汇集模型并收到一条错误消息
我从遇到类似问题的人那里发现,它可能是由先验值、负值、负对数、语法错误等触发的。我已经消除了所有这些,但错误仍然存在。
## just for the prediction
pred.jac <- seq(min(test.bayes$Latitude), max(test.bayes$Latitude), 10)
data = list(
jac = test.bayes$Jaccard,
lat = test.bayes$Latitude,
pred.jac = pred.jac)
inits = list(
list(alpha = 1, beta = 2.5, sigma = 50),
list(alpha = 2, beta = 1.5, sigma = 20),
list(alpha = 3, beta = 0.75, sigma = 10))
{
sink("BetaPooledJAGS.R")
cat("
model{
# priors
alpha ~ dnorm(0, 0.0001)
beta ~ dnorm(0, 0.0001)
sigma ~ dunif(0, 10)
# likelihood
for (i in 1:length(jac)) {
mu[i] <- alpha + beta * lat[i]
a[i] <- ((1 - mu[i]) / (sigma^2) - 1 / mu[i]) * mu[i]^2
b[i] <- alpha * (1 / mu[i] - 1)
jac[i] ~ dbeta(a[i], b[i])
}
# predicted jaccard as derived quantities
for (i in 1:length(pred.jac)) {
mu_pred[i] <- alpha + beta * lat[i]
mu_pred1[i] <- exp(mu_pred[i])
}
}
",fill = TRUE)
sink()
}
n.adapt = 3000
n.update = 5000
n.iter = 5000
jm.pooled = jags.model(file="BetaPooledJAGS.R", data = data, n.adapt = n.adapt, inits = inits, n.chains = length(inits))
当我 运行 代码时,出现以下错误:
错误 jags.model(file = "BetaPooledJAGS.R", data = data, n.adapt = n.adapt, : 错误节点 jac[1] 父值无效
这是我的一部分数据的 link。
如果 lat 为正,则 b
的首字母会得到负值,并且 b
在 Beta 分布、JAGS 和更普遍的情况下必须 > 0。
例如使用来自 inits[[1]]
:
的缩写
mu = 1 + 2.5*lat
假设 lat
为正,则 mu > 1
b = 1 * (1/mu-1)
1/mu < 1
如果 mu>1
,那么 1/mu - 1 < 0
.
因此
b = 1*-ve
所以 b<0
我正在尝试通过 R 运行 jags 中的贝叶斯汇集模型并收到一条错误消息
我从遇到类似问题的人那里发现,它可能是由先验值、负值、负对数、语法错误等触发的。我已经消除了所有这些,但错误仍然存在。
## just for the prediction
pred.jac <- seq(min(test.bayes$Latitude), max(test.bayes$Latitude), 10)
data = list(
jac = test.bayes$Jaccard,
lat = test.bayes$Latitude,
pred.jac = pred.jac)
inits = list(
list(alpha = 1, beta = 2.5, sigma = 50),
list(alpha = 2, beta = 1.5, sigma = 20),
list(alpha = 3, beta = 0.75, sigma = 10))
{
sink("BetaPooledJAGS.R")
cat("
model{
# priors
alpha ~ dnorm(0, 0.0001)
beta ~ dnorm(0, 0.0001)
sigma ~ dunif(0, 10)
# likelihood
for (i in 1:length(jac)) {
mu[i] <- alpha + beta * lat[i]
a[i] <- ((1 - mu[i]) / (sigma^2) - 1 / mu[i]) * mu[i]^2
b[i] <- alpha * (1 / mu[i] - 1)
jac[i] ~ dbeta(a[i], b[i])
}
# predicted jaccard as derived quantities
for (i in 1:length(pred.jac)) {
mu_pred[i] <- alpha + beta * lat[i]
mu_pred1[i] <- exp(mu_pred[i])
}
}
",fill = TRUE)
sink()
}
n.adapt = 3000
n.update = 5000
n.iter = 5000
jm.pooled = jags.model(file="BetaPooledJAGS.R", data = data, n.adapt = n.adapt, inits = inits, n.chains = length(inits))
当我 运行 代码时,出现以下错误:
错误 jags.model(file = "BetaPooledJAGS.R", data = data, n.adapt = n.adapt, : 错误节点 jac[1] 父值无效
这是我的一部分数据的 link。
如果 lat 为正,则 b
的首字母会得到负值,并且 b
在 Beta 分布、JAGS 和更普遍的情况下必须 > 0。
例如使用来自 inits[[1]]
:
mu = 1 + 2.5*lat
假设 lat
为正,则 mu > 1
b = 1 * (1/mu-1)
1/mu < 1
如果 mu>1
,那么 1/mu - 1 < 0
.
因此
b = 1*-ve
所以 b<0