错误传递模型JAGS

时间:2018-05-22 10:25:52

标签: model jags runjags

我目前正忙于使用JAGS工具箱进行多元回归分析。 我正在使用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")

De error应该在这一行:

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 个答案:

答案 0 :(得分:1)

看起来好像你有两个右括号,当你应该在那一行中有一个。

你有:

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的{​​{1}}之后有另一个括号。它的正确位置是在dnorm之后,因此该行应改为:

1/sigma^2

您还可以创建平均(或mu)对象,而不是将线性预测变量放在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 )内,这可能会降低此类错误的可能性:

dnorm