ปัญหาที่น่าสนใจนี้เรียกว่า 'การสุ่มตัวอย่างแบบสปีชีส์' ซึ่งได้รับความสนใจอย่างมากในช่วงหลายปีที่ผ่านมาและรวมถึงปัญหาการประมาณค่าอื่น ๆ อีกมากมาย พอจะพูดได้ว่า JAGS จะไม่ช่วยคุณในกรณีนี้ - JAGS ไม่สามารถจัดการกับลูกโซ่มาร์คอฟที่มีมิติที่หลากหลายในการวนซ้ำ เราจะต้องขอความช่วยเหลือจากโครงการ MCMC ที่ออกแบบมาสำหรับปัญหาดังกล่าวเช่น MCMC กระโดดกลับได้
นี่คือวิธีการหนึ่งที่เหมาะสำหรับรุ่นที่คุณกำลังอธิบายซึ่งฉันพบครั้งแรกในงานของ Jeff Miller (มีอยู่แล้ว )
ส่วนที่ฉัน (คำถามเดิม)
สมมติฐานหนึ่งที่ฉันจะทำคือการสังเกตหมวดหมู่ที่กำหนดแสดงถึงการดำรงอยู่ของหมวดหมู่ของอันดับที่น้อยกว่า นั่นคือการสังเกตการหมุนตายที่ 9 หมายถึงการดำรงอยู่ของฝ่าย 1-8 มันไม่จำเป็นต้องเป็นอย่างนี้ - หมวดหมู่อาจเป็นแบบสุ่มก็ได้ แต่ฉันจะสมมติในตัวอย่างของฉัน ซึ่งหมายความว่าค่า 0 สามารถสังเกตได้ตรงกันข้ามกับปัญหาการประมาณค่าสปีชีส์อื่น ๆ
สมมุติว่าเรามีตัวอย่างหลายตัวอย่าง
Y={y1,y2,…,ym,ym+1,…,yn}∼M({p1,p2,…,pm,pm+1,…,pn})
โดยที่คือหมวดหมู่สูงสุดที่สังเกตได้คือจำนวนหมวดหมู่ (ไม่ทราบ) และเท่ากับ 0 พารามิเตอร์เป็นขอบเขตและเราต้องการ ก่อนหน้านี้สำหรับมัน ไม่ต่อเนื่องเหมาะสมก่อนด้วยการสนับสนุนในจะทำงาน; ยกตัวอย่างปัวซองที่ไม่มีการตัดทอน:mn{ym+1,…,yn}n[1,∞)
n∼P(λ),n>0
สิ่งที่สะดวกก่อนสำหรับความน่าจะเป็นแบบมัลติโนเมียลคือ Dirichlet
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α~)∏ni=1Γ(yi+α~)Γ(nα~+∑ni=1yi)Γ(α~)n⋅λnn!
นำไปสู่:
p(n|Y,α~,λ)=Γ(nα~)∏ni=1Γ(yi+α~)Γ(nα~+∑ni=1yi)Γ(α~)n⋅λnn!⋅(∑j=m∞Γ(jα~)∏ji=1Γ(yi+α~)Γ(jα~+∑ji=1yi)Γ(α~)j⋅λjj!)−1
ซึ่งมีการสนับสนุนในinfty) ไม่จำเป็นต้องมี MCMC ในกรณีนี้เนื่องจากซีรี่ส์ที่ไม่มีที่สิ้นสุดในกฎของ Bayes สามารถประมาณได้โดยไม่ต้องใช้ความพยายามมากเกินไป[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")
สัญชาตญาณของคุณถูกต้อง: การสุ่มตัวอย่างแบบเบาบางข้ามหมวดหมู่นำไปสู่ความไม่แน่นอนที่มากขึ้นเกี่ยวกับจำนวนหมวดหมู่ทั้งหมด ถ้าคุณอยากจะรักษาเป็นพารามิเตอร์ที่ไม่รู้จักคุณจะต้องใช้ MCMC และการปรับปรุงอื่นของและalpha}α~nα~
แน่นอนว่านี่เป็นวิธีหนึ่งในการประมาณค่า คุณจะพบคนอื่น ๆ (ของรสชาติแบบเบย์และไม่ใช่แบบเบย์) พร้อมการค้นหาเพียงเล็กน้อย
ส่วนที่ II (ตอบกลับความคิดเห็น)
Y={y1,…,ym,ym+1,…,yn}เป็นเวกเตอร์พหุ Multinomial ที่สังเกตได้บางส่วนซึ่งมีความน่าจะเป็นที่สอดคล้องกัน :
Ω={ω1,…,ωm,ωm+1,…,ωn}
Pr(Y|Ω,n)=Γ(∑ni=1yi+1)∏ni=1Γ(yi+1)∏i=1nωyii
โดยที่ ,และแต่อย่างอื่นดัชนีจะผิด ก่อนหน้านี้ปัญหาคืออนุมานจำนวนจริงของหมวดหมู่และเราเริ่มต้นด้วยก่อนเช่น Poisson ที่ไม่มีการตัดทอน:
y∈Ny1…ym>0ym+1…yn=0nn
Pr(n|λ)=λn(exp{λ}−1)n!, n∈Z+
เช่นเดียวกับก่อนหน้านี้เราปฏิบัติต่อความน่าจะเป็นหลายระดับเมื่อ Dirichlet กระจายด้วย hyperparameter สมมาตรเช่นสำหรับ ,
Ωα~n
Pr(Ω|α~,n)=Γ(nα~)Γ(α~)n∏i=1nωα~−1i
การบูรณาการ (marginalizing) เหนือเวกเตอร์ของความน่าจะเป็นให้ Dirichlet Multinomial:
Pr(Y|α~,n)=∫Pr(Y|Ω,n)Pr(Ω|α~,n)=Γ(nα~)Γ(∑ni=1yi+nα~)Γ(α~)n∏i=1nΓ(yi+α~)
นี่คือที่ที่เราแตกต่างจากโมเดลในตอนที่ 1 ข้างต้น ในส่วนที่ฉันมีการจัดหมวดหมู่โดยปริยาย: ตัวอย่างเช่นในด้านตายหมวดหมู่ (ด้าน) มีคำสั่งโดยปริยายและการสังเกตหมวดหมู่ใด ๆ ที่หมายถึง การดำรงอยู่ของประเภทน้อย<i ในส่วนที่สองเรามีเวกเตอร์สุ่มหลายส่วนที่สังเกตได้ซึ่งไม่มีการเรียงลำดับโดยปริยาย ในคำอื่น ๆ ข้อมูลแทนพาร์ทิชันไม่เรียงลำดับของจุดข้อมูลลงในประเภทสังเกต ฉันจะแสดงพาร์ทิชันไม่เรียงลำดับว่าผลจากเติมโดยประเภทสังเกตเช่น[Y]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 ที่จะให้การประมาณที่เพียงพอ
โดยการแก้ไขรหัส 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))