0

我想在我的模型中定义一个分布形式:P(x=10)=0.10, P(x=15)=0.20, P(x=20)=0.70

WinBUGS FAQ 说可以将我自己的离散均匀分布构造为具有统一先验的分类变量,并且可以采用必要的整数值。请参阅手册第一部分中的 blockerht 示例。

我查了这个例子,我认为是这个:“具有未知自由度的分层 t 分布”

在模型规范中,他们执行以下操作:

for (n in 1:Nbins) {
   prior[n] <- 1/Nbins;   # Uniform prior on v
}
 k ~ dcat(prior[]);

它确实定义了一个离散的制服。但我不知道如何获得我需要的表格。谁能帮我?

4

2 回答 2

3

如果我正确理解您的问题,则不需要循环...

#BUGS script to obtain distribution
m1<-"model{
  ind ~ dcat(p[])
  pmix <- x[ind]
}"
writeLines(m1,"m1.txt")

#simulate from the distribution    
library("R2OpenBUGS")
m1.bug<-bugs(data = list(x=c(10, 15, 20), p=c(0.1,0.2,0.7)),
             inits = NULL,
             param = "pmix",
             model = "m1.txt", 
             n.iter = 1100, n.burnin = 100, n.chains = 1, n.thin=1, DIC=FALSE)

hist(m1.bug$sims.list$pmix)

应该管用...

在此处输入图像描述

于 2013-03-18T14:05:24.660 回答
1

我正在学习如何自己做这件事。我想知道你是否可以这样做:

prior[10] <- .1
prior[15] <- .2
prior[20] <- .7
x ~ dcat(prior[])
于 2013-04-23T13:31:16.633 回答