В 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, но из чтения кажется, что каким-то образом использование бета-регрессии, а не множественной линейной регрессии, может быть путем вперед. Однако, хотя это позволило бы каждому элементу находиться в диапазоне от 0 до 1, похоже, это не решает сути проблемы, а именно того, что все элементы P[k,i,1:9] должны быть положительными и сумма до 1.
Возможно, переменную отклика можно очень просто преобразовать в пропорцию. Я пробовал это, пытаясь разделить каждый элемент на сумму P[k,i,1:9], но пока безуспешно.
Любые советы будут очень благодарны!
(Я предоставил проблемные разделы модели; вся она довольно длинная.)