首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OpenBUGS的“预期右括号错误pos”

使用OpenBUGS的“预期右括号错误pos”
EN

Stack Overflow用户
提问于 2018-01-29 20:36:07
回答 1查看 1.6K关注 0票数 1

我试图使用R中的"R2OpenBUGS“包运行一个简单的线性回归分析。当我运行”bug“命令时,我将面临错误。

在命令行中添加"debug = T“后,在OpenBUGS中得到以下错误:

预期右括号错误pos 130

这是我在R中的代码:

代码语言:javascript
复制
library(R2OpenBUGS)
library(coda)

MODEL <- function() {
  for (i in 1:N) {
    y[i] ~ dnorm(mu[i], s2)  
    mu[i] <- b0+b1*(x[i])      
  }
  b0 ~ dnorm(0, 1/9)           
  b1 ~ dnorm(0, 1/9)         
  s2 ~ dgamma(3, 1)            
  s2 <- 1/s2
}
write.model (model,"MODEL.txt")
INIT <- function() {
  list(b0 = runif(1,-9, 9), 
       b1 = runif(1,-9, 9),
       s2 = rexp(1,1/3))
}

DATA=list(y=c(15,33,26,21,39,40,14,38,20,32),
          x=c(3,7,6,3,9,9,2,9,5,6),N=10)      


BUGS=bugs(data = DATA, inits = INIT, 
          parameters.to.save = c("b0", "b1", "s2"), 
          model.file = "MODEL.txt", n.chains = 1,
          n.iter = 10000, n.burnin = 100, codaPkg=TRUE, debug = T)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-29 20:54:47

您需要将b0b1的精度参数设置为0.11,而不是1/9。精度参数必须是浮点数,否则OpenBUGS会返回错误。

此外,您还将s2定义为一个随机变量,然后给它分配一个值。虫子也不喜欢那样。您应该创建一个新变量tau,将s2的逆值赋给它。您的模型代码应如下所示:

代码语言:javascript
复制
MODEL <- function() {
  for (i in 1:N) {
    y[i] ~ dnorm(mu[i], tau)  
    mu[i] <- b0+b1*(x[i])      
  }
  b0 ~ dnorm(0, 0.11)           
  b1 ~ dnorm(0, 0.11)         
  s2 ~ dgamma(3, 1)            
  tau <- 1/s2
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48509568

复制
相关文章

相似问题

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