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 に答える