【问题标题】:"expected right parenthesis error pos" using OpenBUGS使用 OpenBUGS 的“预期右括号错误位置”
【发布时间】:2018-01-29 20:36:07
【问题描述】:

我正在尝试使用 R 中的“R2OpenBUGS”包运行一个简单的线性回归分析。当我运行“bugs”命令时,我遇到了错误。

在命令行中添加“debug = T”后,我在 OpenBUGS 中收到此错误:

预期的右括号错误 pos 130

这是我在 R 中的代码:

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)

【问题讨论】:

    标签: r bayesian mcmc winbugs openbugs


    【解决方案1】:

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

    此外,您已将s2 定义为随机变量,然后为其赋值。 BUGS 也不喜欢这样。您应该创建一个新变量tau,将s2 的倒数赋值给该变量。您的模型代码应如下所示:

    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
    }
    

    【讨论】:

    • 我已经尝试过您的第一个解决方案,但问题仍然存在!
    • write.model(MODEL, "MODEL.txt") 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)
    • 我已经编辑了答案。我用你的代码让它为我工作,只改变精度参数。
    • 是的。我在“dnorm”命令之前定义了参数的方差,它起作用了! @qdread
    猜你喜欢
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    相关资源
    最近更新 更多