Индекс массива меньше одной ошибки в Winbugs

Я работаю над моделью функционирования многоуровневого дифференциального элемента, используя пакет WinBUGS. Я успешно построил более простые модели, но также получил ошибку «индекс массива меньше единицы». Я был бы очень рад, если бы вы могли помочь.

    # Model
    Model
    {
    for (l in 1:50){
    y[l] ~ dbern(p[l])
    logit(p[l])<- u2[stu[l]] - beta[x[l]] + gamma[tea[l], x[l]]*grp[l] + alpha1[x[l]]*geo[l] +
    alpha2[x[l]]*conf[l] + alpha3[x[l]]*ses[l]
    }
    for (t in 1:10){
    for (i in 1:10){
    gamma[t,i] ~ dnorm(gamma.hat[t,i], tau.gamma[i])
    gamma.hat[t,i]<-pi1[i] + pi2[i]*inq[t]
    }
    }
    # fixed effect prior
    for (i in 1:10){
    beta[i] ~ dnorm(0, .0001)
    alpha1[i] ~ dnorm(0, .0001)
    alpha2[i] ~ dnorm(0, .0001)
    alpha3[i] ~ dnorm(0, .0001)
    pi1[i] ~ dnorm(0, .0001)
    pi2[i] ~ dnorm(0, .0001)
    }
    # Random effect prior
    for (s in 1:5){
    u2[s] ~ dnorm(0,tau.u2)
    }
    tau.u2 <- pow(sigma.u2, -2)
    sigma.u2 ~ dunif (0, 100)
    for (i in 1:10){
    tau.gamma[i] <- pow(sigma.gamma[i],-2)
    sigma.gamma[i] ~ dunif(0,100)
    }
    }

   # Data
   list(y=c(0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0), ses=c(0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1), conf=c(1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1), geo=c(1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1), grp=c(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, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1), inq=c(1, 3, 2, 1, 3, 2, 3, 2, 3, 2), stu=c(1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0), tea=c( 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1), x=c(3, 2, 2, 1, 3, 2, 3, 3, 2, 2, 2, 3, 2, 3, 1, 3, 2, 2, 3, 2, 2, 3, 3, 2, 3, 2, 1, 2, 2, 1, 2, 3, 3, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 3, 2, 2, 3, 2, 3, 2))


    #Initital values
     list(beta=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), alpha1=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),    alpha2=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),  alpha3=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), sigma.gamma=(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), u2=c(0, 0, 0, 0, 0), pi0=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), pi1=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), sigma.u2=1, gamma=structure(
.Data=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), .Dim=c(10, 10)))

person sibel    schedule 12.10.2014    source источник


Ответы (2)


Индексы начинаются с 1, а не с 0 в BUGS. Переменные stu и tea используются для индексации, но они принимают значения 0,1 — вместо этого они должны быть 1,2.

person Chris Jackson    schedule 21.10.2014
comment
Спасибо, Крис, я исправил это уведомление об ошибке, и затем я столкнулся с другим кодом ошибки (ошибка неопределенного реального результата). Я поделился ссылкой ниже. stats.stackexchange.com/questions/ 120669/ Буду очень рад, если вы поможете. - person sibel; 21.10.2014
comment
Там ответили. Не могли бы вы отметить это как ответ? - person Chris Jackson; 22.10.2014

Что-то происходит с x. Она на одну короче, чем другие переменные, возможно, вы упускаете какое-то наблюдение.

person guyabel    schedule 13.10.2014
comment
Спасибо Gjabel, я изменил переменную x, но у меня тот же код ошибки. - person sibel; 13.10.2014