3

我正在使用多项式模型(我有 4 种模态),我想估计模型的所有参数(6 个参数,因为我有 2 个参数用于前三种模态)。我设法做到了。我现在的问题是我想对参数添加一个约束,以便我的第一种模态的概率随着我的协变量而降低x

因此,我计算出我需要:

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

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

通常我使用 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)])
  }
}"

提前感谢您的帮助,

最好的

4

0 回答 0