2016-11-11 3 views
0

Ich versuche multivariate Regression mit mehreren abhängigen Variablen auf Winbugs zu lösen. Aber ich bekomme Fehler bei Kompilationen. Ich habe versucht, basierend auf Lösungen für das gleiche Problem zu lösen, war aber nicht erfolgreich. Jede Hilfe wird sehr geschätzt."Mehrere Definitionen von Knoten mu [1,2]" Fehler in 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 

Antwort

0

Der Fehler ist, weil Sie mu innerhalb von zwei for Schleifen verschachtelt sind. Daher füllen Sie Zeile iJ mal was nicht möglich ist. Was Sie haben, ist:

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

Was es wie es aussieht, ist sein sollte:

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

    }} 

Auf diese Weise können nicht mehrere Definitionen für jede Zelle in mu

+0

Dank viel Freund liefern. Bitte sagen Sie, ob Sie eine Lösung für den neuen Fehler haben, der kommt, dh "ein logischer Vektorausdruck muss mehr als eine Komponente haben". –

+0

Ich kann nur annehmen, dass es sich auf das bezieht, was Sie in eine der multivariaten Normalverteilungen setzen. Zum Beispiel, Sie versuchen, eine Menge von Werten in eine Zelle zu setzen 'beta2 [j] ~ dmnorm (zero [], B [,]) ' –

+0

Danke für den Vorschlag. Gibt es eine Möglichkeit, jedem beta1 [j] oder beta2 [j] ein bestimmtes Element der normalverteilten Matrix zuzuordnen? Ich habe versucht, beta1 [1] <- beta3 [1,1] zu definieren, wobei die Matrix beta3 als beta3 [j, j] <- dmnorm (null [], B [,]) erhalten wird. Aber der gleiche Fehler wie vorher kommt. –

Verwandte Themen