Ошибка прохождения модели JAGS

Sarah.d спросил: 28 апреля 2018 в 08:45 в: model

В настоящее время я занят множественным регрессионным анализом с помощью JAGS toolbox. Я использую runjags, однако я все равно получаю сообщение об ошибке:

Error parsing model file:
syntax error on line 3 near "," 

Как моя модель выглядит так:

modelString2 = "
model {
for ( i in 1:Ntotal  ) {
y[i] ~ dnorm( beta[s[i],1] + beta[s[i],2] * x[i,1] + betax[1] * x[i,2] + betax[2] * x[i,3] + betax[3] * x[i,4]), 1/sigma^2 )  
}
for( j in 1 : Nsubj ) {  
beta[j , 1 : 2] ~ dnorm(betamu, R) 
}
for ( k in 1:NxO ){
betax[k] ~ dnorm( 0 , 1/(10)^5 )
}
betamu[1 : 2] ~ dnorm(mean, prec) 
R[1 : 2 , 1 : 2] ~ dwish(Omega, df) 
S<-inverse(R) 
ss[1]<-sqrt(S[1,1]) #var to sd
ss[2]<-sqrt(S[2,2]) #var to sd
ss[3]<-S[1,2]/(ss[1]*ss[2]) #cov to cor 
sigma ~ dunif( 1.0E-3 , 1.0E+3 )
}
"
writeLines(modelString2, con = "multiple_regression.txt")

Ошибка должна быть в этой строке:

y[i] ~ dnorm( beta[s[i],1] + beta[s[i],2] * x[i,1] + betax[1] * x[i,2] + betax[2] * x[i,3] + betax[3] * x[i,4]), 1/sigma^2 ) 

Однако я понятия не имею, откуда исходит ошибка. Кто-нибудь, кто может мне помочь?

1 ответ

M_Fidino ответил: 28 апреля 2018 в 11:49

Похоже, что у вас есть две закрывающиеся круглые скобки, когда вы должны просто иметь одну в этой строке.

У вас есть:

y[i] ~ dnorm( beta[s[i],1] + beta[s[i],2] * x[i,1] + betax[1] * x[i,2] + betax[2] * x[i,3] + betax[3] * x[i,4]), 1/sigma^2 )

После x[i,4] есть закрывающие круглые скобки, а другой после 1/sigma^2 для dnorm. Правильное размещение для него происходит после 1/sigma^2, поэтому строка должна быть следующей:

y[i] ~ dnorm( beta[s[i],1] + beta[s[i],2] * x[i,1] + betax[1] * x[i,2] + betax[2] * x[i,3] + betax[3] * x[i,4], 1/sigma^2 ).

Вы также можете создать среднее ( или mu) вместо того, чтобы помещать линейный предиктор внутри dnorm, что может уменьшить вероятность такого типа ошибки:

for(i in 1:Ntotatl){
y[i] ~ dnorm(mu[i], 1/sigma^2)
mu[i] <- beta[s[i],1] + beta[s[i],2] * x[i,1] + betax[1] * x[i,2] + 
betax[2] * x[i,3] + betax[3] * x[i,4]
}