4

バグを使用してディリクレ多項式モデルをコーディングしようとしています。基本的に、18 の地域と地域ごとに 3 つのカテゴリがあります。たとえば、リージョン 1: 0.50 は Low、0.30 は Middle、0.20 は High に属します。リストは、もちろんさまざまな比率でリージョン 18 に続きます。私が取得した唯一のコードはこれです

`model  {
 for (i in 1:N) {
 x[1:3] ~ dmulti(p[],n[i])
 p[1:3] ~ ddirch(alpha[])
 }
 for (k in 1:3) {
 alpha[k] <- 1
 }
 }
 DATA list(n=c(38483, 2259, 1900),x=c(29256.42719, 1857.431404, 1548.007808, 29256.42719, 1857.431404, 1548.007808, 29256.42719, 1857.431404, 1548.007808), N=3)`

たとえば、最初に3つのリージョンに短縮しました。「gen inits」をクリックすると、「Dirichlet36」と表示されます。これをコーディングするのを手伝ってください。

4

1 に答える 1

5

これは役に立つかもしれません ( source ):

ディリクレ分布のパラメータについて学ぶ

モデルの一部として、J 個の確率配列 p[j, 1:K], j = 1, ..., J があるとします。ここで、K は各配列の次元であり、sum(p[j, 1:K]) です。 = すべての j に対して 1。それぞれにディリクレ事前分布を与えます。

      p[j, 1:K] ~ ddirch(alpha[])

alpha[]について学びたいと思います。ただし、ディリクレ分布のパラメータ alpha[] は確率的ノードにすることはできません。トリックは、delta[k] ~ dgamma(alpha[k], 1) の場合、要素 delta[k] / sum(delta[1:K]), k = 1, ..., を持つベクトルに注意することです。 K は、パラメーター alpha[k]、k = 1、...、K を持つディリクレです。したがって、次の構成により、パラメーター alpha[] について学習できるようになります。

      for (k in 1:K) {
              p[j, k] <- delta[j, k] / sum(delta[j,])
              delta[j, k] ~ dgamma(alpha[k], 1)
      }

事前確率は alpha[k] に直接置くことができます。

于 2014-08-16T08:09:15.570 に答える