我正在尝试使用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循环,但我不确定在哪里。
答案 0 :(得分: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的输出进行比较 - 比较可信区间,或者通过从另一个级别减去一个级别进行成对比较,然后查看差异的可信区间
马特