2016-11-11 2 views
0

J'essaie de résoudre la régression multivariée avec plusieurs variables dépendantes sur Winbugs. Mais je reçois des erreurs lors des compilations. J'ai essayé de résoudre basé sur des solutions au même problème mais a échoué. Toute aide sera grandement appréciée."Plusieurs définitions d'erreur node [1,2]" dans 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 

Répondre

0

L'erreur est parce que vous avez mu imbriquées dans les deux boucles for. Par conséquent, vous remplissez la ligne iJ fois ce qui n'est pas possible. Qu'est-ce que vous avez est:

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] 
    }} 

Ce qu'il semble que ce devrait être est:

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,]) 

    }} 

De cette façon, vous ne fournissent pas de multiples définitions à chaque cellule dans mu

+0

merci ami de beaucoup. Veuillez indiquer si vous avez une solution pour la nouvelle erreur qui vient, c'est-à-dire que "l'expression logique à valeurs vectorielles doit avoir plus d'un composant". –

+0

Je ne peux que supposer que c'est lié à ce que vous mettez dans l'une des distributions normales multivariées. Par exemple, vous essayez de mettre un tas de valeurs dans une cellule ici 'beta2 [j] ~ dmnorm (zéro [], B [,])' –

+0

Merci pour la suggestion. Est-il possible d'attribuer à chaque beta1 [j] ou beta2 [j] un élément particulier de la matrice distribuée normale? J'ai essayé en définissant beta1 [1] <- beta3 [1,1], où la matrice beta3 est obtenue comme beta3 [j, j] <- dmnorm (zéro [], B [,]). Mais la même erreur qu'avant arrive. –