首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递模型JAGS时出错

传递模型JAGS时出错
EN

Stack Overflow用户
提问于 2018-05-22 18:25:52
回答 1查看 620关注 0票数 1

我目前正忙于使用JAGS工具箱进行多元回归分析。我正在使用runjags,但是我仍然得到一个错误:

代码语言:javascript
复制
Error parsing model file:
syntax error on line 3 near "," 

我的模型看起来是这样的:

代码语言:javascript
复制
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")

错误应该在下面这一行中:

代码语言:javascript
复制
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 ) 

但是,我不知道错误是从哪里来的。能帮我的人吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-22 21:29:43

它看起来就像你有两个闭括号,而你应该只有一个在该行。

您必须:

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]后面有一个右括号,在dnorm1/sigma^2后面有另一个右括号。它的正确位置是在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 )

您还可以创建一个均值(或µ)对象,而不是将线性预测器放在dnorm内部,这可能会减少发生此类错误的可能性:

代码语言:javascript
复制
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]
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50465387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档