【发布时间】:2015-12-08 12:43:27
【问题描述】:
首先,让我们创建一些具有 3 个级别的样本分类数据。
y<-sample(c("A","B","C"),50,replace=TRUE)
我正在尝试制定一个贝叶斯统计模型,其中 y 变量遵循参数为 theta1、theta2、theta3 的分类分布。这些参数描述了单个 y[i] 属于相应类别的概率。从贝叶斯的角度来看,这些参数也是随机变量,我们使用超参数 alpha1,alpha2,alpha3 在它们之前分配一个狄利克雷。
我的语法看起来有些问题。
代码
model<-function(){
#likelihood
for( i in 1:N){
y[i]~ dcat(theta[])
}
#prior
theta[1:3]~ ddirch(alpha[])
}
library(R2OpenBUGS)
model.file <- file.path(tempdir(),"model.txt")
write.model(model, model.file)
y<-sample(c("A","B","C"),50,replace=TRUE)
N<-50
alpha<-c(1,1,1)
data<-list('y','N','alpha')
params<-c('theta')
inits<-function(){theta=c(1/3,1/3,1/3)}
我们通过 R 调用 OpenBUGS,带有 bug 函数
out<-bugs(data,inits,params,model.file,n.chains = 2
,n.iter=6000,codaPkg = TRUE,n.burnin = 1000,DIC = TRUE)
我尝试了不同的方法来对上述代码进行语法表述,仔细研究错误并熟悉 log.txt 文件(即保存 OpenBUGS 输出的文件),直到这段代码给了我一个 log.txt没有错误,而 R 仍然有问题。
R 输出
Error in bugs.run(n.burnin, OpenBUGS.pgm, debug = debug, WINE = WINE, :
Look at the log file in /tmp/Rtmpofdk0t and
try again with 'debug=TRUE' to figure out what went wrong within OpenBUGS.
In addition: Warning message:
In FUN(X[[i]], ...) : class of 'x' was discarded
log.txt
OpenBUGS version 3.2.3 rev 1012
model is syntactically correct
data loaded
model compiled
initial values generated, model initialized
1000 updates took 0 s
monitor set
monitor set
monitor set
monitor set
deviance set
提前感谢您的帮助
【问题讨论】: