我正在使用rJAGS构建多级贝叶斯模型,我想为我的几个参数指定一个柯西优先级。有没有办法在JAGS中做到这一点,还是我需要切换到STAN?我的JAGS模型如下。我想用Cauchy替换dnorm发行版,但是JAGS无法找到标准的R Cauchy发行版,例如dcauchypcauchy

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没有柯西,但确实有t分布。

dt(mu, tau, k)

只需将k设置为1即可获得柯西先验
dt(mu, tau, 1)

考虑到方差始终为正(而法线或柯西不是),因此我不会将方差设置为正态或柯西。尝试使用类似 Gamma 分布的方法来提高精度。
tau.a ~ dgamma(0.001,0.001) # vague precision parameter
sigma.a <- 1/sqrt(tau.a)

关于r - JAGS中的柯西(Cauchy)先验,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34935606/

10-12 21:08