我通过Winbugs
和R
包使用了R2WinBUGS
中的BRugs
,我写了模型并尝试运行它,但结果没有出来,我阅读了WinBUGS
日志,似乎没有出错。
这是模型:
require(BRugs)
require(R2WinBUGS)
# MCMC mosel
model<-function(){
for(i in 1:M){
y[i] ~ dnorm(x[i], sigma.y)
}
x[1] ~ dnorm(theta[1], sigma.x)
theta[1] <- 0
for(j in 2:M){
x[j] ~ dnorm(theta[j], sigma.x)
theta[j] <- a + b*x[j-1]
}
a ~ dunif(0, 1)
b ~ dunif(-1, 1)
tau.y ~ dgamma(0.1, 0.1)
tau.x ~ dgamma(0.1, 0.1)
sigma.y <- 1/sqrt(tau.y)
sigma.x <- 1/sqrt(tau.x)
}
write.model(model, con = "model.bug")
modelCheck("model.bug")
# model is syntactically correct
data=list(M = 90, y = rnorm(90)
inits = function(){
list(tau.x = rgamma(1, 0.1, 0.1), tau.y = rgamma(1, 0.1, 0.1), a = runif(0, 1), b = runif(-1, 1))
}
parameters=c("a", "b", "x")
ret.sim <- bugs(data, inits, parameters, "model.bug",
n.chains = 1, n.iter = 1000,
n.sims = 500,
program= "winbugs",
working.directory = NULL,
debug = T)
模型检查通过,
WinBUGS
的日志在这里:display(log)
check(C:/Users/ADMINI~1.PC-/AppData/Local/Temp/Rtmp2LfZTu/model.bug.txt)
model is syntactically correct
data(C:/Users/ADMINI~1.PC-/AppData/Local/Temp/Rtmp2LfZTu/data.txt)
data loaded
compile(1)
model compiled
inits(1,C:/Users/ADMINI~1.PC-/AppData/Local/Temp/Rtmp2LfZTu/inits1.txt)
this chain contains uninitialized variables
gen.inits()
initial values generated, model initialized
thin.updater(1)
update(500)
WinBUGS
没有继续下去,也没有显示错误信息,所以我找不到任何错误。 最佳答案
此错误消息显然是关于初始值的。
尝试在 R 控制台上运行 runif(-1, 1)
,您将看到 :-) 您的意思是 runif(1, -1, 1)
(以及前一个的 runif(1, 0, 1)
。
祝你好运!
关于r - 这个 WinBUGS 模型有什么问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16205053/