ダイにはいくつの面がありますか?JAGSのベイズ推定


9

問題

辺の数が不明で死ぬのに類似したシステムについて、いくつかの推論をしたいと思います。サイコロを数回振り、その後、サイコロの側面の数θに対応するパラメーターの確率分布を推測します。

直感

40回ロールした後、10個の赤、10個の青、10個の緑、10個の黄を観察した場合、θは4でピークになり、各側のロールのバイアスは1/4を中心とした分布になります。

θには自明な下限があり、これはデータで観測されたさまざまな辺の数です。

上限はまだ不明です。おそらくバイアスが低い5番目のサイドが存在する可能性があります。5番目のカテゴリがないことを示すデータが多いほど、θ= 4の事後確率が高くなります。

アプローチ

ここでは適切と思われる同様の問題(Rおよびrjagsを介して)にJAGSを使用しました。

データに関してobs <- c(10, 10, 10, 10)、上の例の観測に対応するとします。

私は観測が多項分布でモデル化されるべきだと思うobs ~ dmulti(p, n)、p ~ ddirch(alpha)とn <- length(obs)。

θはによって暗示されるカテゴリの数にリンクされているalphaのでalpha、さまざまな数のカテゴリを含むようにモデル化するにはどうすればよいですか?

代替案?

私はベイジアン分析にかなり新しいので、間違ったツリーを完全に見つけ出すかもしれませんが、この問題について異なる洞察を提供するかもしれない代替モデルはありますか?

どうもありがとう!デビッド

回答:


6

これは、「種サンプリング」と呼ばれる興味深い問題であり、長年にわたって多くの注目を集めており、他の多くの推定問題(マークの再取得など)を網羅しています。この場合、JAGSは役に立ちません。JAGSは、反復全体で可変次元のマルコフ連鎖を処理できません。リバーシブルジャンプMCMCなど、このような問題のために設計されたMCMCスキームに頼る必要があります。

ここに、あなたが説明している特定のモデルに適したアプローチの1つを示します。これは、Jeff Miller(arxived)の作業で最初に出会ったものです。

パートI(元の質問)

私が行う1つの仮定は、与えられたカテゴリの観察はより低いランクのカテゴリの存在を意味するということです。つまり、サイド9のサイコロを観察すると、サイド1〜8が存在することになります。この方法である必要はありません-カテゴリは任意である可能性があります-しかし、私の例ではそれを仮定します。これは、他の種の推定問題とは対照的に、0の値が観測可能であることを意味します。

多項式サンプルがあるとしましょう。

Y={y1,y2,…,ym,ym+1,…,yn}∼M({p1,p2,…,pm,pm+1,…,pn})

mn{ym+1,…,yn}n[1,∞)

n∼P(λ),n>0

多項確率の便利な事前分布はディリクレです。

P={p1,…,pn}∼D({α1,…,αn})

α1=α2=⋯=αn=α~

問題を扱いやすくするために、重みを取り除きます。

p(Y|α~,n)=∫Pp(Y|P,n)p(P|α~,n)dP

この場合、これはよく研究されたディリクレ多項分布を導きます。目標は、条件付き事後を推定することです。

p(n|Y,α~,λ)=p(Y|n,α~)p(n|λ)p(Y|α~,λ)

α~λ

p(Y|α~,λ)=∑n=1∞p(Y|n,α~)p(n|λ)

p(Y|n,α~)=0n<m

p(Y|α~,λ)=1(eλ−1)∑n=m∞Γ(nα~)∏i=1nΓ(yi+α~)Γ(nα~+∑i=1nyi)Γ(α~)n⋅λnn!

につながる:

p(n|Y,α~,λ)=Γ(nα~)∏i=1nΓ(yi+α~)Γ(nα~+∑i=1nyi)Γ(α~)n⋅λnn!⋅(∑j=m∞Γ(jα~)∏i=1jΓ(yi+α~)Γ(jα~+∑i=1jyi)Γ(α~)j⋅λjj!)−1

[m,∞)

これがRのずさんな例です:

logPosteriorN <- function(max, Y, lambda, alpha){
    m <- length(Y)
    sumy <- sum(Y)
    pp <- sapply(1:max, function(j){
        prior <- log(lambda)*j - log(exp(lambda)-1) - lgamma(j+1)
        posterior <- lgamma(alpha*j) + sum(lgamma(Y + alpha)) - j*lgamma(alpha) - lgamma(sumy + j*alpha)
        if( j > m ) { posterior <- posterior + (j-m)*lgamma(alpha) } 
        else if( j < m ) { posterior = -Inf }
        prior + posterior
        })
    evidence <- log(sum(exp(pp))) # there's no check that this converges
    pp - evidence
}

## with even representation of sides
Y <- c(10, 10, 10, 10)
post <- logPosteriorN(30, Y, 10, 1.2)
plot(1:30, exp(post), pch=19, type="b")

## with uneven representation of sides
Y <- c(1, 2, 1, 0, 0, 2, 1, 0, 1)
post <- logPosteriorN(30, Y, 10, 1.2)
plot(1:30, exp(post), pch=19, type="b")

α~nα~

もちろん、これは推定方法の1つです。少し検索するだけで、他の(ベイジアンフレーバーと非ベイジアンフレーバー)を簡単に見つけることができます。

パートII(コメントへの回答)

Y={y1,…,ym,ym+1,…,yn}Ω={ω1,…,ωm,ωm+1,…,ωn}

Pr(Y|Ω,n)=Γ(∑i=1nyi+1)∏i=1nΓ(yi+1)∏i=1nωiyi

y∈Ny1…ym>0ym+1…yn=0nn

Pr(n|λ)=λn(exp⁡{λ}−1)n!, n∈Z+

Ωα~n

Pr(Ω|α~,n)=Γ(nα~)Γ(α~)n∏i=1nωiα~−1

Pr(Y|α~,n)=∫Pr(Y|Ω,n)Pr(Ω|α~,n)=Γ(nα~)Γ(∑i=1nyi+nα~)Γ(α~)n∏i=1nΓ(yi+α~)

ni∈{1…n}j<im≤nYn−mP[Y]

n

Pr(P[Y]|α~,n)=n!(n−m)!Pr(Y|α~,n)

n

Pr(P[Y]|α~,λ)=∑j=m∞Pr(P[Y]|α~,n)Pr(n|λ)

Pr(n|P[Y],α~,λ)=Pr(P[Y]|n,α~)Pr(n|λ)Pr(P[Y]|α~,λ)

上記の定義からプラグインするだけです。繰り返しますが、分母はすばやく収束する無限級数です。この単純なモデルでは、MCMCが適切な近似を行う必要はありません。

パートIのRコードを変更する:

logPosteriorN_2 <- function(max, Y, lambda, alpha){
    m <- length(Y)
    sumy <- sum(Y)
    pp <- sapply(1:max, function(j){
        prior <- log(lambda)*j - log(exp(lambda)-1) - lgamma(j+1)
        likelihood <- lchoose(j, m) + lgamma(m + 1) + lgamma(alpha*j) + sum(lgamma(Y + alpha)) - j*lgamma(alpha) - lgamma(sumy + j*alpha)
        if( j > m ) { likelihood <- likelihood + (j-m)*lgamma(alpha) } 
        else if( j < m ) { likelihood = -Inf }
        prior + likelihood
        })
    evidence <- log(sum(exp(pp))) # there's no check that this converges
    pp - evidence
}

Y_1 <- rep(10, 15)
pos_1 <- logPosteriorN_2(50, Y_1, 6, 1)
plot(1:50, exp(pos_1))

あなたの非常に完全な答えに感謝します。(私の非常に遅い応答のため申し訳ありません)。私はこのタイプの質問に戻ってきましたが、まだ数学を通して自分の道を進んでいます。私のシステムでは、カテゴリは序数ではないため、特定のカテゴリの観測がより低いランクのカテゴリの存在を暗示するという仮定は無効です。
— davipatti 2015年

@davipatti 2番目の部分で回答。
— Nate Pope
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.