- kカテゴリあって、全部でN回サンプリングしたところ、それぞれが回ずつ観測されたとする。ただし
- このとき、サンプリング元のkカテゴリの割合をは確率変数であって、そのような確率はに従うと想定するとよいことが知られていて、この分布をディリクレ分布と言う。
- 観測数をと置くことの方が一般的で、この場合、0回の観測をからに対応づけるが、こちらを採用するとと表される
- 例を扱っておこう
- k=3タイプある場合に、タイプ1が3個、タイプ2が2個、タイプ3が1個、観察されたとすれば、3タイプの割合が0.5,0.3,0.2であるのは
library(MCMCpack)
obs <- c(3,2,1)
pr <- c(0.5,0.3,0.2)
ddirichlet(pr,obs+1)
my.beta <- function(a){
exp(sum(lgamma(a))-lgamma(sum(a)))
}
1/my.beta(obs+1) * prod(pr^obs)
- 今、ある観察をすると、それに応じて、サンプリング元の割合の確率密度分布がディリクレ分布として得られるわけであるが、じゃあ、そんな確率密度分布から、実際に観察データが得られる確率の期待値を得る、となったらどうなるだろうか
- は、確率密度関数の定義から言える。ただしはkカテゴリの比率が取りうるk-1正単体空間である。
- それぞれのにおいて、回のうち、と観測する確率はであるから
- これを少しいじると
- [tex:\frac{C(\mathbf{a})}{B(\mathbf{a})}B*1\int_{\math{x}\in \Omega_k} \frac{1}{B*2}\prod_{i=1}^k x_i^{(2a_i -1)-1} d\mathbf{x}]となり、この積分部分は、ディリクレ分布の全体の積分なので1であるから、積分は消えて
- となる
- 今、ある観察データに関しては共通なので、この値の比を問題にする場合には無視できる
- ここで、カテゴリ数がの場合との場合とを考えることとする。今、確かにkカテゴリは観察されているが、それ以上のカテゴリが観察していないとすると、
- というk次元の確率ベクトルとという確率ベクトルとの2つを考えることとなる。
- ここで先ほどのを無視したを、kの場合とKの場合とで比較しよう
- ここで、観察サンプル総数をn、その観察内訳をとすれば、kカテゴリのすべてが少なくとも1回以上、観察されたことになっている。ここで、K>kカテゴリを想定しているから、とする。これに対応する、は次のようになる
- ここで、であることに注意する。これは観測されているカテゴリはkカテゴリであるが、1回も観測されていないK-kカテゴリについての項である。このK-kカテゴリが、今考えている比に与える影響は、ももその値は1であって、影響を与えない、ということを意味する。
- また、であることにも注意すれば、であり、である。
- したがって
- は、観測総数と考慮するカテゴリ数との和とを用いて表されるガンマ関数4つだけが残る。この意味するところは、「観測総数」と「カテゴリ数」とが決めるのであって、観測カテゴリの個々のカテゴリ別観測数は、この比に影響しないことを意味している。
- となる
my.beta <- function(a){
exp(sum(lgamma(a))-lgamma(sum(a)))
}
my.comb <- function(a){
exp(lgamma(sum(a)+1)-sum(lgamma(a+1)))
}
my.CBB <- function(a){
my.like.dir(a)*exp(lgamma(sum(a)-length(a)+1)-sum(lgamma(a)))
}
my.like.dir <- function(a){
my.beta(2*a-1)/my.beta(a)
}
my.like.dir.obs <- function(b){
if(length(b)==1){
return(1)
}
a <- b+1
my.like.dir(a)
}
my.ratio.dir.integral <- function(n,k,K){
exp(lgamma(n+K)-lgamma(2*n+K)-lgamma(n+k)+lgamma(2*n+k))
}