2013-01-24 2 views
0

괜찮습니다. 코드를 다시 작성합니다. 이제 문제는 컴파일 할 때 "노드 A의 다중 정의"의 오류가 발생합니다. 누구든지 내 코드에서 무엇이 잘못되었는지 알 수 있습니까? 나는 많은 상수를 가지지 않는 모델을 위해 변수 a, b, c를 만든다.Winbugs에서 "노드 A의 다중 정의"오류가 발생했습니다.

model{ 



    for(i in 1:n){ 


      a <- (k[1] + step(s1[i]-.9)*k[2] + step(s1[i]*.5-.9)*k[3]) 
      b <- (r[1] + step(s2[i]-.9)*r[2] + step(s2[i]*.5-.9)*r[3]) 
      c <- (s[1] + step(s3[i]-.9)*s[2] + step(s3[i]*.5-.9)*s[3]) 


    dummy[i] <- 0 

     dummy[i] ~ dloglik(logLike[i]) 

     # This is the log transformation of the 3-variate poisson 

     logLike[i] <- -theta12[i] + a*log(theta12[i]) - logfact(a) -theta13[i] - b*log(theta13[i]) - logfact(b)-theta23[i] - c*log(theta23[i]) - logfact(c)-theta1[i] + (y1[i]-a-b)*log(theta1[i]) + logfact(y1[i]-a-b)-theta2[i] + (y2[i]-a-c)*log(theta2[i]) + logfact(y2[i]-a-c)-theta3[i] + (y3[i]-b-c)*log(theta3[i]) + logfact(y3[i]-b-c) 





      log(theta1[i]) <- alpha1 + beta1*log(L[i]) 
      log(theta2[i]) <- alpha2 + beta2*log(L[i]) 
      log(theta3[i]) <- alpha3 + beta3*log(L[i]) 
      log(theta12[i]) <- alpha4 + beta4*log(L[i]) 
      log(theta23[i]) <- alpha5 + beta5*log(L[i]) 
      log(theta13[i]) <- alpha6 + beta6*log(L[i]) 
    } 

      alpha1 ~ dgamma(.001, .001) 
      alpha2 ~ dgamma(.001, .001) 
      alpha3 ~ dgamma(.001, .001) 
      alpha4 ~ dgamma(.001, .001) 
      alpha5 ~ dgamma(.001, .001) 
      alpha6 ~ dgamma(.001, .001) 
      beta1 ~ dgamma(.001, .001) 
      beta2 ~ dgamma(.001, .001) 
      beta3 ~ dgamma(.001, .001) 
      beta4 ~ dgamma(.001, .001) 
      beta5 ~ dgamma(.001, .001) 
      beta6 ~ dgamma(.001, .001) 




    } 


    data 
    list(y1 =c(0,1,2,3,2), 
    y2 = c(1,2,3,0,2), 
    y3 = c(1,3,2,3,2), 
    k = c(0,1,2,3,4), 
    s = c(0,1,2,3,4), 
    r = c(0,1,2,3,4), 
    L = c(1,2,3,4,5), 
    s1= c(0,1,2,0,2), 
    s2= c(0,0,0,0,0), 
    s3= c(1,1,0,0,0),n=5) 


    inits 
    list(beta1=0,beta2=0,beta3=0,beta4=0,beta5=0,beta6=0,alpha1=0,alpha2=0,alpha3=0, 
    alpha4=0,alpha5=0,alpha6=0) 
+1

코드를 삭제하고 호언 장담으로 바꾸면 다른 사람이 당신을 도울 수 없기 때문에 편집을 롤백했습니다. – josh3736

+1

@ josh3736, 고마워요. –

답변

7

for() 루프 내에 a, b, c를 정의했기 때문에이 오류가 발생합니다. 즉, 상수 노드를 여러 번 (n 번) 정의했습니다. a, b, c를 a [i], b [i], c [i]로 바꿔야합니다. BUGS는 프로그래밍 언어가 아닌 모델 설명 언어라고 생각하십시오. 모델의 모든 수량은 하나의 단일 정의를 다른 수량의 고정 또는 임의 함수로 가져야합니다.

관련 문제