0

对于我的研究,我需要估计方差,并将这些估计值插入到我在 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的数字。

4

1 回答 1

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设计的目的。

于 2014-05-03T08:13:14.263 回答