ディリクレ分布
| 期待値 | |
(?,?,?) |
| 最頻値 | |
(?,?,?) |
| 分散 | |
(?,?,?) |
定義と性質
ディリクレ分布 (dirichlet distribution) は独立した事象
ここで
事象のモデルは多項分布
多項分布が事象
ディリクレ分布の可視化
一様分布
対称ディリクレ分布
対称ディリクレ分布
ディリクレ分布
ディリクレ分布
対称ディリクレ分布
このとき、 しか取り得ないという意味なのか の値は取りえないという意味なのか、確率分布として発散の意味は何なのか (そもそも がどういう意味なのか想像が及んでいない)。 しかとりえないのであれば の対象ディリクレ分布は となり を満たさなくなる。
実用例
多項分布を尤度関数としたときの事後確率となるため、カテゴリカル分布に従う試行を繰り返すときのそれぞれの事象
| |
0 |
| |
() |
| |
() |
| |
() |
| |
() |
| |
() |
| |
() |
| |
0 |
Example 1
一様に落ちてくる 10 個のボールが 5 つの区画にそれぞれ
適当な点を採用して生起確率
Example 2
アルゴリズム
ディリクレ分布の式 (
ここでは対数ガンマ関数を使用している。
def dirichletln(alpha:Array[Double])(p:Array[Double]):Double = {
assert(p.length == alpha.length && p.length != 0)
val k = p.length;
var Σa = 0.0
var ΣlogΓa = 0.0
var Σa1logp = 0.0
for(k <- 0 until k){
Σa += a(k)
ΣlogΓa += gammaln(a(k))
Σa1logp += (a(k) - 1) * math.log(p(k))
}
gammaln(Σa) - ΣlogΓa + Σa1logp
}
def dirichlet(alpha:Array[Double])(p:Array[Double]):Double = math.exp(dirichletln(p, a))
参照
- 多項分布の推定 (MOXBOX)