2013-08-09 8 views
0

OpenBUGS 모델에서 두 벡터를 빼는 데 매우 힘든 시간을 보내고 있습니다. 코드의 마지막 줄 아래의 오류 "예상 오른쪽 괄호 오류"주는 유지 :OpenBUGS에서 두 벡터를 빼는 방법

model { 
    for (i in 1:N) { 
    for(j in 1:q) { 
     vv[i,j] ~ dnorm(vz[i,j],tau.eta[j]) 
    } 
    vz[i,1:q] ~ dmnorm(media.z[i,], K.delta[,]) 
    for(j in 1:q) { 
     mean.z[i,j] <- inprod(K[i,] , vbeta[j,]) 
    } 
    K[i,1] <- 1.0 
    for(j in 1:N) { 
     K[i,j+1] <- sum(ve[,i] - ve[,j]) 
    } 
    } 

내가 K[i,j+1] <- sum(ve[,i]) - sum(ve[,j])에 해당 행을 변경하는 경우, 다음 모델은 잘 작동하지만 내가하고 싶은 것이 아니다. 나는 요소 적 관점을 뺀다.

나는 오픈 벅스에 대한 SO 검색, 그러나 약간 관련이없는 항목이 있습니다

OpenBUGS - Variable is not defined

통계 스택 교환 OpenBUGS: missing value in Bernoulli distribution

이 가까운이 게시물있다,하지만, 난 여전히 할 수 없었다 내 모델이 구현하는 방법을합니다

https://stats.stackexchange.com/questions/20653/vector-multiplication-in-bugs-and-jags/20739#20739

for 루프를 작성해야한다는 것을 이해하지만,이 일은 큰 두통을 줄 것이라고 확신합니다.

'P'는 각각의 행의 개수
for(k in 1:p) { temp [k] <- ve[k,i] - ve[k,j] } 
K[i,j+1] <- sum(temp[]) 

'가 맞는지 : :)

난 해당 라인 변경했습니다. 이제 "노드 temp [1]의 다중 정의"오류가 계속 발생합니다.

나는 확실히 도움을받을 수 있습니다. 대단히 감사하겠습니다.

감사합니다. 미리 감사드립니다.

추 신 :이 질문에 "OpenBUGS"라는 태그를 추가하고 싶지만 불행히도 새 태그가 될 수는 없으며 충분한 평판을 얻지 못했습니다. 대신 "winbugs"를 추가했습니다.

+0

정말 죄송합니다. 나는 방금 "WinBUGS"를 검색해야한다는 것을 알았습니다. 아직 문제를 해결하지는 못했지만이 문제는 내 문제에 더 가깝습니다. http://stackoverflow.com/questions/14509546/multiple-definition-of-node-a-error-in-winbugs?rq = 1 – bomgaroto

답변

1

"다중 정의"오류는 temp [k]가 i 이상의 루프와 j의 다른 루프에서 반복해서 재정의되기 때문에 발생합니다. 한 번만 정의 할 수 있습니다. 그 해결하기 위해, 즉 컴파일하고 실행하면 비록, 나는 그것이 정확히 수학적으로 원하는 것을 확실하게 결과를 확인할 것

for(k in 1:p) { temp[k,i,j] <- ve[k,i] - ve[k,j] } 
K[i,j+1] <- sum(temp[,i,j]) 

처럼 i와 j 첨자를 사용합니다.

+0

크리스. 고맙습니다. 그것은 매우 도움이됩니다. 지금 컴파일되어 실행됩니다. 이것은 비선형 회귀 모델이며 입력 벡터 (ve)로 가우시안 커널을 구현하려고합니다. 그래서 나는 그들을 뺄 필요가있다. 저는 'k'지수를 세 번째 지수로 넣었고 'temp [i, j, k] <- ve [k, i] - ve [k, j]'로도 작동합니다. 나는 그것이 같은 것임을 짐작하고있다. – bomgaroto

+0

이 답변이 매우 잘 작동한다는 것을 모두 알려주는 업데이트입니다. 결과를 확인한 결과 예상 한 내용에 동의합니다. – bomgaroto