0

rjags を使用してベイジアン回帰モデルを実行しようとしていますが、データには 4 つの関連条件があります。条件間で折りたたむとモデルは正常に実行されますが、このモデルを条件ごとに個別に実行するように指定する場所/方法がわかりませんが、それでもcoda.samplesベータ値を比較できる出力が得られます (4 Beta0 および 4 つの Beta1 値 (条件ごとに 1 つ)。これが私のモデルです:

    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 からの出力を使用してそれらを比較できます。信頼できる区間を比較するか、別のレベルから 1 つのレベルを差し引いてペアワイズ比較を行い、差の信頼できる区間を調べます。

マット

于 2015-03-12T09:18:41.323 に答える