JAGS / Winbugs中参数的约束

时间:2014-04-02 13:57:23

标签: constraints winbugs mcmc jags

我正在使用多项模型(我有4种模态),我想估计模型的所有参数(6个参数,因为我有三个第一模态中的每一个的2个参数)。我设法做到了。我现在的问题是我想在参数上添加一个约束,这样我的第一个模态的概率就会随着我的协变量x而减小。

因此,我计算我需要:

beta1^(1) + sum_(k=1 to 3) (beta1^(1)-beta1^(k)).exp(beta0^(k)+beta1^(k).x) < 0

我正在使用使用JAGS的R的runjags包。我希望每个样本都遵守这个约束。是否有可能这样做?

通常我使用的是C / C ++库,在每次迭代时,如果条件不满足,我会检查条件并重新采样此迭代的所有参数。但我无法找到如何使用JAGS(出于合作原因,我不能使用C)。

以下是当前代码:

model <- "model{
  for(j in 1:(nb_rep-1)) {
    beta1[j] ~ dnorm(0, 0.1)
  }
  for(j in 1:(nb_rep-1)) {
    beta0[j] ~ dnorm(0, 0.01)
  }

  for(i in 1:n){
    y_eff[i] ~ dcat(q[i,1:nb_rep])
    for(k in 1:(nb_rep-1)){
      cal_exp[i,k] <- exp(beta0[k] + beta1[k]*x_eff[i])    
    }
    sum_exp[i] <- sum(cal_exp[i,1:(nb_rep-1)])
    for(j in 1:(nb_rep-1)){     
      q[i,j] <- exp(beta0[j] + beta1[j]*x_eff[i]) / (1 + sum_exp[i])
    }
    q[i,nb_rep] <- 1 - sum(q[i,1:(nb_rep-1)])
  }
}"

谢谢你的帮助,

最佳

0 个答案:

没有答案