【问题标题】:Dirichlet-Categorical conjugate prior model using OpenBUGS,R and the package R2OpenBUGSDirichlet-Categorical conjugate 先验模型使用 OpenBUGS,R 和包 R2OpenBUGS
【发布时间】: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

提前感谢您的帮助

【问题讨论】:

    标签: r bayesian


    【解决方案1】:

    我认为您应该将 theta1、theta2、theta3 重命名为 alpha1、alpha2、alpha3,因为您在函数 ddirch 中使用了 alpha1,...,但您从未声明它们。相反,您声明 theta1 等,但从不使用它们。

    如果有任何其他问题,您可以按照编译器的建议查看日志文件。

    【讨论】:

    • 我搜索了一下,改了一组明显的错误;其中之一是您提到的错误。我还经常使用 log.txt 来找到自己的方式。所以谢谢你2次。问题变了,但没有解决
    【解决方案2】:

    经过多次实验,我发现由于某种原因 OpenBUGS 不能像往常一样接受因子变量。因此,我使用as.numeric R 函数将我的数据(格式“A”、“B”、“C”)更改为数字(格式 1、2、3),一切顺利!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-29
      • 2010-09-20
      • 1970-01-01
      • 2013-08-13
      • 2015-07-04
      • 2021-08-23
      • 2019-05-05
      • 2012-12-15
      相关资源
      最近更新 更多