首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从R使用WinBUGS时出错

从R使用WinBUGS时出错
EN

Stack Overflow用户
提问于 2013-04-18 15:13:45
回答 1查看 291关注 0票数 2

代码如下:

代码语言:javascript
复制
require(BRugs)
require(R2WinBUGS)
model<-function(){
  for(i in 1:N){
  y[i] ~ dnorm(x[i], sigma.y)
  }
  x[1] ~ dnorm(theta[1], sigma.y)
  theta[1] <- 0
  for(j in 2:N){
    x[j] ~ dnorm(theta[j], sigma.x)
    theta[j] <- b*x[j-1] # this row wrong, 
# it would be right when I set theta[j] <- 1*x[j-1]
  }
  a ~ dunif(0, 1)
  b ~ dunif(-1, 1)
  sigma.y ~ dgamma(0.1, 0.1)
  sigma.x ~ dgamma(0.1, 0.1)
}
data <- list( N <- 100, y <- rnorm(100))
data=list(N=100,y=rnorm(100))

inits=function(){
  list(sigma.x = rgamma(1,0.1,0.1), sigma.y = rgamma(1, 0.1, 0.1), a = dnorm(1, 0, 1), b = dnorm(1, -1, 1))
}
parameters=c("a", "b", "x")

write.model(model, con = "model.bug")
modelCheck("model.bug")
# model is syntactically correct
ret.sim <- bugs(data, inits, parameters, "model.bug",
                n.chains = 1, n.iter = 1000,
                program= "winbugs",
                working.directory = NULL,
                debug = T)

我不知道为什么,当我用theta[j] <- 1*x[j-1]替换theta[j] <- b*x[j-1]时,程序会正确,但我已经定义了b ~ dunif(-1, 1)。实际上,我需要在最终的模型中设置theta[j] <- a - b*x[j-1],当我尝试将ab添加到模型中时,它被证明是错误的。有人找到问题所在了吗?

EN

回答 1

Stack Overflow用户

发布于 2013-04-18 16:23:55

问题出在你对b(最有可能是a)的先例中。我不知道你的数据,但也许你目前的先验范围不包括a和b的真值。我认为如果你使用连续分布:

代码语言:javascript
复制
a ~ dnorm(0,1)
b ~ dnorm(0,1)

你的问题可能解决了?

注:如果您正在尝试为WinBUGS创建AR(1)模型,您可能想要查看tsbugs包。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16076709

复制
相关文章

相似问题

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