Masalah yang menarik ini disebut 'pengambilan sampel spesies', yang telah menerima banyak perhatian selama bertahun-tahun, dan mencakup banyak masalah estimasi lainnya (seperti mark-recapture). Cukuplah untuk mengatakan, JAGS tidak akan membantu Anda dalam hal ini - JAGS tidak dapat menangani rantai Markov dengan dimensi variabel di seluruh iterasi. Seseorang harus beralih ke skema MCMC yang dirancang untuk masalah seperti itu, seperti MCMC lompat terbalik.
Inilah satu pendekatan yang cocok untuk model spesifik yang Anda gambarkan, yang pertama kali saya temui dalam karya Jeff Miller ( arxived ).
Bagian I (Pertanyaan awal)
Satu asumsi yang akan saya buat adalah bahwa pengamatan kategori tertentu menyiratkan adanya kategori dengan peringkat yang lebih rendah. Artinya, mengamati gulungan mati di sisi 9 menyiratkan keberadaan sisi 1-8. Tidak harus seperti ini - kategorinya bisa sewenang-wenang - tetapi saya akan berasumsi demikian dalam contoh saya. Ini berarti bahwa 0 nilai dapat diamati, berbeda dengan masalah estimasi spesies lainnya.
Katakanlah kita memiliki sampel multinomial,
Y={y1,y2,…,ym,ym+1,…,yn}∼M({p1,p2,…,pm,pm+1,…,pn})
mn{ym+1,…,yn}n[1,∞)
n∼P(λ),n>0
Sebelum nyaman untuk probabilitas multinomial adalah Dirichlet,
P={p1,…,pn}∼D({α1,…,αn})
α1=α2=⋯=αn=α~
Untuk membuat masalah lebih mudah ditangani, kami meminggirkan bobot:
p(Y|α~,n)=∫Pp(Y|P,n)p(P|α~,n)dP
Yang dalam hal ini memimpin distribusi Dirichlet-multinomial yang dipelajari dengan baik . Tujuannya kemudian untuk memperkirakan posterior bersyarat,
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α~)∏ni=1Γ(yi+α~)Γ(nα~+∑ni=1yi)Γ(α~)n⋅λnn!
Menuju ke:
p(n|Y,α~,λ)=Γ(nα~)∏ni=1Γ(yi+α~)Γ(nα~+∑ni=1yi)Γ(α~)n⋅λnn!⋅(∑j=m∞Γ(jα~)∏ji=1Γ(yi+α~)Γ(jα~+∑ji=1yi)Γ(α~)j⋅λjj!)−1
[m,∞)
Berikut ini contoh ceroboh dalam 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α~
Tentu saja, ini adalah salah satu pendekatan untuk estimasi. Anda akan segera menemukan orang lain (dari rasa Bayesian dan non-Bayesian) dengan sedikit pencarian.
Bagian II (Jawaban untuk berkomentar)
Y={y1,…,ym,ym+1,…,yn}Ω={ω1,…,ωm,ωm+1,…,ωn}
Pr(Y|Ω,n)=Γ(∑ni=1yi+1)∏ni=1Γ(yi+1)∏i=1nωyii
y∈Ny1…ym>0ym+1…yn=0nn
Pr(n|λ)=λn(exp{λ}−1)n!, n∈Z+
Ωα~n
Pr(Ω|α~,n)=Γ(nα~)Γ(α~)n∏i=1nωα~−1i
Pr(Y|α~,n)=∫Pr(Y|Ω,n)Pr(Ω|α~,n)=Γ(nα~)Γ(∑ni=1yi+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]|α~,λ)
Cukup colokkan dari definisi di atas. Sekali lagi, penyebutnya adalah seri tak terbatas yang akan menyatu dengan cepat: dalam model sederhana ini, MCMC tidak perlu memberikan perkiraan yang memadai.
Dengan memodifikasi kode R dari Bagian I:
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))