首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用OpenBUGS,R和包R2OpenBUGS的Dirichlet范畴共轭先验模型

利用OpenBUGS,R和包R2OpenBUGS的Dirichlet范畴共轭先验模型
EN

Stack Overflow用户
提问于 2015-12-08 12:43:27
回答 2查看 583关注 0票数 1

首先,让我们创建一些具有三个级别的样本分类数据。

代码语言:javascript
复制
y<-sample(c("A","B","C"),50,replace=TRUE)

我试图建立一个贝叶斯统计模型,其中y变量服从分类分布,参数为theta1,theta2,theta3。这些参数描述了单个彝族属于相应范畴的概率。在贝叶斯的观点中,这些参数也是随机变量,我们用超参数alpha1,alpha2,alpha3在它们之前指定一个dirichlet。

我在语法上遇到了一些问题。

代码语言:javascript
复制
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函数

代码语言:javascript
复制
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输出

代码语言:javascript
复制
  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

代码语言:javascript
复制
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

提前感谢您的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-11 18:06:02

经过大量的实验,我发现由于某种原因,OpenBUGS不能接受通常给出的因子变量。因此,我用as.numeric R函数将我的数据(格式"A“、"B”、"C")更改为数字(格式1、2、3),一切运行都很顺利!

票数 0
EN

Stack Overflow用户

发布于 2015-12-08 13:23:57

我认为你应该把theta1,theta2,theta3重新命名为alpha1,alpha2,alpha3,因为你使用alpha1,.在函数ddirch中,但您从不声明它们。相反,您可以声明theta1等等,但永远不要使用它们。

如果有其他问题,您可以查看日志文件,就像编译器建议的那样。

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

https://stackoverflow.com/questions/34158321

复制
相关文章

相似问题

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