Ошибка "Ожидаемый сборщик операторов c" в WinBugs
Я работаю над моделью функционирования различных элементов, используя пакет WinBUGS. Я успешно построил более простые модели, но я также получил ошибку "ожидаемый оператор сбора c". Я был бы очень рад, если бы вы могли помочь.
# Model
Model
{
for (j in 1:40){
for (k in 1:5){
y[j,k] ~ dbern(p[j,k])
logit(p[j,k])<- u2[j] - beta[k] + gamma[k]*grp[j]
}
}
# Random effect prior
for (j in 1:40){
u2[j] ~ dnorm(0,tau.u2)
}
# Fixed effect prior
for (k in 1:5){
beta[k] ~ dnorm(0, .0001)
gamma[k] ~ dnorm(0,.0001)
}
tau.u2 <- pow(sigma.u2, -2)
sigma.u2 ~ dunif (0, 100)
}
# Data
list(y=structure(
.Data=c(1, 1, 1, 1, 1,
1, 0, 1, 0, 1,
0, 1, 1, 1, 1,
1, 0, 0, 1, 1,
1, 0, 0, 0, 1,
0, 1, 1, 1, 0,
0, 1, 1, 1, 1,
1, 0, 0, 0, 1,
1, 0, 1, 1, 1,
0, 1, 0, 0, 0,
1, 1, 1, 0, 1,
0, 1, 1, 0, 1,
1, 1, 1, 1, 1,
0, 1, 0, 1, 0,
1, 1, 1, 1, 1,
0, 0, 1, 1, 1,
0, 0, 0, 1, 0,
1, 1, 1, 0, 0,
1, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 0, 0, 1,
0, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 0, 0, 0,
1, 0, 0, 1, 0,
1, 1, 1, 1, 0,
1, 1, 0, 0, 1,
0, 1, 1, 1, 1,
1, 1, 0, 0, 0,
0, 0, 0, 1, 0,
0, 1, 1, 1, 0,
1, 0, 1, 1, 0,
1, 0, 1, 0, 0,
0, 0, 1, 1, 0,
0, 0, 1, 1, 0,
0, 1, 0, 1, 0,
1, 1, 1, 1, 0,
0, 0, 0, 1, 1),
.Dim=c(40,5)), grp=c(1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0))
#Initital values
list(beta=c(0, 0, 0, 0, 0), gamma=c(0, 0, 0, 0, 0), sigma.u2=1, u2=0))
1 ответ
Решение
В вашей модели u2 - это вектор из 40 значений, в то время как вы указали только одно число для его начального значения. Ошибка должна была поместить курсор после начального значения u2, которое говорит вам, где находится ошибка. "Ожидаемый оператор сбора c" означал, что он ожидал увидеть u2=c(0,0,0,... т.е. вектор начальных значений.
Хотя, поскольку вы указали начальное значение для sigma.u2, возможно, WinBUGS может автоматически сгенерировать начальные значения для u2.