2016-11-11 2 views
0

Я пытаюсь решить многомерную регрессию с несколькими зависимыми переменными в Winbugs. Но во время компиляции я получаю ошибки. Я попытался решить на основе решений одной и той же проблемы, но не увенчался успехом. Любая помощь будет высоко оценена.«Несколько определений ошибки узла mu [1,2]» в WinBUGS

model { 
for(i in 1:n) 
{ for(k in 1:J) 
{     y[i,k]~ dpois(mu[i,]) 
        log(mu[i,1]) <- beta1[1]*x1[i] + beta2[1]*x2[i] + b[,1] 
        log(mu[i,2]) <- beta1[2]*x1[i] + beta2[2]*x2[i] + b[,2] 
     }}  

# PRIORS 
    for (i in 1:n) { 
     for(k in 1:J) { 
     b[i,k] <- 1 
       }} 
# Scale Matrix 
    for(i in 1:J) 
    { 
    for (j in 1:J) 
     { 
     R[i,j] <- equals(i,j) 
     }} 
    for (j in 1:J) {beta1[j]~ dmnorm(zero[], B[,]) 
     beta2[j]~ dmnorm(zero[], B[,]) } 
    for(i in 1:J) 
    { 
     for (j in 1:J) 
     { B[i,j] <- 0.01*equals(i,j) 
     }} 
    for (i in 1:J) { zero[i] <- 0} 
    } 


#DATA 
list(n=3, J=2) 


#DATA 
y[ ,1] x1[] x2[] y[,2] 
    0  9.91  8.34  1    
    3 10.48 10.14 79   
0  10.31 9.42  40 

ответ

0

Ошибка в том, что у вас есть mu вложенные в течение двух for петель. Таким образом, вы заполняете строку iJ раз, что невозможно. Что у вас есть:

for(i in 1:n){ 
for(k in 1:J){ 
      y[i,k]~ dpois(mu[i,]) 
       log(mu[i,1]) <- beta1[1]*x1[i] + beta2[1]*x2[i] + b[,1] 
       log(mu[i,2]) <- beta1[2]*x1[i] + beta2[2]*x2[i] + b[,2] 
    }} 

Что это выглядит, как это должно быть это:

for(i in 1:n){ 
       log(mu[i,1]) <- beta1[1]*x1[i] + beta2[1]*x2[i] + b[,1] 
       log(mu[i,2]) <- beta1[2]*x1[i] + beta2[2]*x2[i] + b[,2] 
for(k in 1:J){ 
      y[i,k]~ dpois(mu[i,]) 

    }} 

Таким образом, вы не поставляет несколько определений для каждой ячейки в mu

+0

Большое спасибо другу. Пожалуйста, скажите, есть ли у вас решение для новой ошибки, то есть «векторное логическое выражение должно иметь более одного компонента». –

+0

Я могу только предположить, что это связано с тем, что вы вкладываете в одно из многомерных нормальных распределений. Например, вы пытаетесь поместить кучу значений в одну ячейку здесь 'beta2 [j] ~ dmnorm (zero [], B [,])' –

+0

Спасибо за предложение. Есть ли способ назначить каждому бета1 [j] или бета2 [j] конкретный элемент нормальной распределенной матрицы. Я попытался определить beta1 [1] <- beta3 [1,1], где матрица бета3 получена как бета3 [j, j] <- dmnorm (ноль [], B [,]). Но такая же ошибка, как и раньше. –

Смежные вопросы