0

我正在尝试使用 rjags 运行贝叶斯回归模型,并且我的数据有 4 个相关条件。该模型在跨条件折叠时运行良好,但是我不明白在哪里/如何指定我希望这个模型为每个条件单独运行,但仍然给我一个coda.samples允许我比较 Beta 值的输出(我想要 4 Beta0 和 4 个 Beta1 值,每个条件一个)。这是我的模型:

    order_model <-
    "model {
beta_0 ~ dnorm(0, .0000001)
beta_1 ~ dnorm(0, .0000001)
sigma ~ dunif(0, 100)
sigma_u0 ~ dunif(0,100)
sigma_u1 ~ dunif(0,100)
sigma_i0 ~ dunif(0,100)


for (i in 1:num_items) {
  w_0i[i] ~ dnorm(0, 1/sigma_i0^2)
}

for (i in 1:num_subj+1) {
  u_0s[i] ~ dnorm(0, 1 / sigma_u0^2)
  u_1s[i] ~ dnorm(0, 1 / sigma_u1^2)
}
for (i in 1:length(rt)) {
  rt[i] ~ dnorm((beta_0 + w_0i[item[i]] + u_0s[subject[i]]) + (beta_1 + u_1s[subject[i]]) * order[i], 1/sigma^2)
}
}"

其中主题和项目被称为获得固定的效果偏移,并且“rt”是一个连续的因变量。条件以 1:4 的向量“条件”编码。

我假设我在某个地方需要另一个 for 循环,但我不确定在哪里。

4

1 回答 1

2

我认为您只需要使用如下条件索引 beta_0 和 beta_1 :

  rt[i] ~ dnorm((beta_0[condition[i]] + w_0i[item[i]] + u_0s[subject[i]]) + (beta_1[condition[i]] + u_1s[subject[i]]) * order[i], 1/sigma^2)

[或者可能是 beta_0[condition[subject[i]] 取决于数据的结构]

和:

  for(c in 1:4){
       beta_0[c] ~ dnorm(0, .0000001)
       beta_1[c] ~ dnorm(0, .0000001)
  }

然后,您可以监视 beta_0 和 beta_1 的 4 个值,并使用 JAGS 的输出进行比较 - 比较可信区间,或者通过从另一个级别减去一个级别进行成对比较,然后查看可信区间的差异。

马特

于 2015-03-12T09:18:41.323 回答