Итак, я думал, что следующий код будет работать в OpenBUGS, но вместо этого он дает мне ошибку «Несколько определений узла Z».Ошибка: «Множество определений узла» в OpenBUGS.
model
{
Z <- round(X)
X ~ dnorm(0,1)T(-2,2)
}
list(Z=0)
Даже если я заменю Z <- round(X)
с Z <- X
Я по-прежнему получаю ту же ошибку. Из этого факта можно сделать вывод, что ошибка возникает из-за использования логического назначения для наблюдаемой переменной и, в частности, ошибка не связана с операцией round()
.
Почему BUGS не позволяет это? Кроме того, что в этом случае хорошая работа? Вот более общий вариант, который я хочу реализовать, который по существу моделирования дискретной гауссовой со стенками (усечение):
model
{
for(i in 1:N){
Z[i] <- round(X[i])
X[i] ~ dnorm(mu,1)T(-2,2)
}
mu ~ dunif(-2,2)
}
По существу, я хочу Z
быть распределены с чем-то вроде дискретной гауссовой с «стенками »(усечение), и я хочу оценить mu
из данных по Z
. Полагаю, я могу попытаться сделать Z
категориальной переменной и оценить параметры, но это кажется теоретически болезненным. Есть ли какой-то трюк BUGS, который я могу использовать для получения моей предполагаемой модели?