在 WinBUGS 中,我指定了一个具有多项似然函数的模型,并且我需要确保多项概率都在 0 和 1 之间并且总和为 1。
这是指定可能性的代码部分:
e[k,i,1:9] ~ dmulti(P[k,i,1:9],n[i,k])
这里,数组 P[] 指定多项分布的概率。
这些概率将根据我的数据(矩阵 e[])使用对一系列固定和随机效应的多重线性回归进行估计。例如,这里是用于预测 P[] 的元素之一的多元线性回归:
P[k,1,2] <- intercept[1,2] + Slope1[1,2]*Covariate1[k] +
Slope2[1,2]*Covariate2[k] + Slope3[1,2]*Covariate3[k]
+ Slope4[1,2]*Covariate4[k] + RandomEffect1[group[k]] +
RandomEffect2[k]
在编译时,模型会产生错误:
elements of proportion vector of multinomial e[1,1,1] must be between zero and one
如果我理解正确,这意味着向量 P[k,i,1:9] 的元素(上面的多项似然函数中的概率向量)可能是非常大(或小)的数字。实际上,它们都需要在 0 和 1 之间,并且总和为 1。
我是 WinBUGS 的新手,但从周围的阅读来看,似乎以某种方式使用 beta 回归而不是多重线性回归可能是前进的方向。然而,虽然这将允许每个元素介于 0 和 1 之间,但它似乎并没有触及问题的核心,即 P[k,i,1:9] 的所有元素都必须为正且总和为 1。
可能响应变量可以非常简单地转换为比例。我已经尝试过将每个元素除以 P[k,i,1:9] 的总和,但到目前为止还没有成功。
任何提示将不胜感激!
(我已经提供了模型有问题的部分;整个内容相当长。)