我正在使用多项式模型(我有 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)])
}
}"
提前感谢您的帮助,
最好的