对于我的研究,我需要估计方差,并将这些估计值插入我在JAGS中的wishart分布的比例矩阵(在我的JAGS代码中称为R)。我使用R2JAGS(在Mac上),我想知道如何用R / JAGS代码做到这一点?我想自动执行此操作,因为我需要进行模拟研究。
所以我得到了以下用于运行模型的R代码:
Res.NoCorr <- jags(data, model.file = "LVL_3_MODEL_SD_NoRanEff.bug", parameters =
c("sigma.mean.mu", "sigma.mean.beta", "sigma.mean.phi"), n.chains = 1, n.iter = itt,
n.burnin = bi, DIC = FALSE)
Res.NoCorr
Inference for Bugs model at "LVL_3_MODEL_SD_NoRanEff.bug", fit using jags,
1 chains, each with 1e+05 iterations (first 10000 discarded), n.thin = 90
n.sims = 1000 iterations saved
mu.vect sd.vect 2.5% 25% 50% 75% 97.5%
sigma.mean.beta 0.121 0.054 0.021 0.082 0.123 0.160 0.222
sigma.mean.mu 1.345 0.608 0.070 0.955 1.398 1.800 2.386
sigma.mean.phi 0.096 0.014 0.069 0.087 0.095 0.106 0.126
这是我手动插入估算的JAGS代码:
Prec.Mat[1:3, 1:3] ~ dwish(R[,], 3) # prior for precision matrix random effects
est.sd.mu <- 1.345
est.sd.beta <- 0.121
est.sd.phi <- 0.096
est.var.mu <- est.sd.mu * est.sd.mu
est.var.beta <- est.sd.beta * est.sd.beta
est.var.phi <- est.sd.phi * est.sd.phi
variance.estimation.mu <- est.var.mu * 3
variance.estimation.beta <- est.var.beta * 3
variance.estimation.phi <- est.var.phi * 3
R[1,1] <- variance.estimation.mu
R[2,2] <- variance.estimation.beta
R[3,3] <- variance.estimation.phi
R[1,2] <- 0
R[1,3] <- 0
R[2,3] <- 0
R[2,1] <- 0
R[3,1] <- 0
R[3,2] <- 0
所以在这种情况下,我需要编写插入est.sd.mu,est.sd.beta和est.sd.phi的数字。
答案 0 :(得分:1)
如果您将JAGS文件编写为brew包模板,则可以执行以下操作:
est.sd.mu <- <%= Xmu %>
est.sd.beta <- <%= Xbeta %>
est.sd.phi <- <%= Xphi %>
[etc]
然后使用brew
函数处理此问题以生成JAGS文件,并将R变量Xmu
,Xbeta
和Xphi
设置为您想要的值替换。
作为使用模板文本的插图:
> Xmu=-1.23
> brew(text="est.sd.mu <- <%= Xmu %>")
est.sd.mu <- -1.23
>
但是你应该使用file=
和output=
args为模板使用一个文件来指定输入模板和输出JAGS文件。
您可以使用paste
在R中组合文件的字符版本,然后将其保存为JAGS文件,但这只是复制brew
的设计内容。