JAGS 中的柯西先验
Cauchy prior in JAGS
我正在使用 rJAGS 构建多级贝叶斯模型,我想为我的几个参数指定柯西先验。有没有办法在 JAGS 中执行此操作,还是我需要切换到 STAN?我的 JAGS 模型如下。我想用 Cauchy 替换 dnorm
分布,但是 JAGS 找不到标准的 R
Cauchy 分布,例如dcauchy
、pcauchy
model_string <- "model{
for (i in 1:n){
y[i] ~ dbin(mu[i], 1)
p.bound[i] <- max(0, min(1, mu[i])) #381 gelman
logit(mu[i]) <- a[dc[i]] + b1*x1[i] + b2*x2[i]
}
b1 ~ dnorm(0,.001)
b2 ~ dnorm(0,.001)
for (j in 1: n.dc ){
a[j] ~ dnorm(g0, tau.a) #not goj, g1j
}
g0 ~ dnorm(0,.001)
tau.a <- pow(sigma.a , -2)
sigma.a ~ dnorm(0,.001)
}"
Cauchy 分布是 t 分布的特例,具有 1 个自由度 (Wikipedia link)。虽然 JAGS 没有 Cauchy,但它有 t 分布。
dt(mu, tau, k)
只需将 k 设置为 1 即可获得柯西先验
dt(mu, tau, 1)
考虑到方差始终为正(而正常或柯西不是),我不会先验将您的方差设置为正态或柯西。尝试像伽马分布这样的方法来提高精度。
tau.a ~ dgamma(0.001,0.001) # vague precision parameter
sigma.a <- 1/sqrt(tau.a)
我正在使用 rJAGS 构建多级贝叶斯模型,我想为我的几个参数指定柯西先验。有没有办法在 JAGS 中执行此操作,还是我需要切换到 STAN?我的 JAGS 模型如下。我想用 Cauchy 替换 dnorm
分布,但是 JAGS 找不到标准的 R
Cauchy 分布,例如dcauchy
、pcauchy
model_string <- "model{
for (i in 1:n){
y[i] ~ dbin(mu[i], 1)
p.bound[i] <- max(0, min(1, mu[i])) #381 gelman
logit(mu[i]) <- a[dc[i]] + b1*x1[i] + b2*x2[i]
}
b1 ~ dnorm(0,.001)
b2 ~ dnorm(0,.001)
for (j in 1: n.dc ){
a[j] ~ dnorm(g0, tau.a) #not goj, g1j
}
g0 ~ dnorm(0,.001)
tau.a <- pow(sigma.a , -2)
sigma.a ~ dnorm(0,.001)
}"
Cauchy 分布是 t 分布的特例,具有 1 个自由度 (Wikipedia link)。虽然 JAGS 没有 Cauchy,但它有 t 分布。
dt(mu, tau, k)
只需将 k 设置为 1 即可获得柯西先验
dt(mu, tau, 1)
考虑到方差始终为正(而正常或柯西不是),我不会先验将您的方差设置为正态或柯西。尝试像伽马分布这样的方法来提高精度。
tau.a ~ dgamma(0.001,0.001) # vague precision parameter
sigma.a <- 1/sqrt(tau.a)