ตายมีกี่ด้าน? การอนุมานแบบเบย์ใน JAGS


9

ปัญหา

ฉันต้องการอนุมานเกี่ยวกับระบบที่คล้ายคลึงกันเพื่อตายด้วยจำนวนด้านที่ไม่รู้จัก ตายถูกม้วนหลายครั้งหลังจากนั้นฉันต้องการอนุมานการกระจายความน่าจะเป็นเหนือพารามิเตอร์ที่สอดคล้องกับจำนวนด้านที่มีตายθ

ปรีชา

หากหลังจาก 40 ม้วนคุณสังเกตเห็น 10 สีแดง, 10 บลูส์, 10 กรีนและ 10 สีเหลืองดูเหมือนว่าθควรสูงสุดที่ 4 และอคติของการหมุนแต่ละด้านจะมีการจัดกึ่งกลางที่ 1/4

θมีขอบเขตล่างที่ไม่สำคัญเป็นจำนวนด้านต่าง ๆ ที่สังเกตได้ในข้อมูล

ขอบเขตบนยังไม่ทราบ อาจมีด้านที่ห้าซึ่งอาจมีอคติต่ำ ยิ่งคุณสังเกตเห็นข้อมูลที่ขาดหมวดหมู่ที่ห้ายิ่งความน่าจะเป็นด้านหลังของ of = 4 ยิ่งสูงขึ้น

เข้าใกล้

ฉันใช้ JAGS สำหรับปัญหาที่คล้ายกัน (ผ่าน R และ rjags) ซึ่งดูเหมือนเหมาะสมที่นี่

ด้วยความเคารพต่อข้อมูลให้พูดobs <- c(10, 10, 10, 10)สอดคล้องกับการสังเกตในตัวอย่างข้างต้น

ผมคิดว่าข้อสังเกตที่ควรจะสร้างแบบจำลองที่มีการกระจายพหุนามobs ~ dmulti(p, n)ที่และp ~ ddirch(alpha)n <- length(obs)

θเชื่อมโยงกับจำนวนหมวดหมู่โดยนัยalphaดังนั้นฉันalphaจะทำแบบจำลองเพื่อรวมจำนวนหมวดหมู่ที่เป็นไปได้ที่แตกต่างกันอย่างไร

ทางเลือก?

ฉันค่อนข้างใหม่กับการวิเคราะห์แบบเบย์ดังนั้นอาจเห่าต้นไม้ผิดทั้งหมดมีแบบจำลองทางเลือกซึ่งอาจให้ข้อมูลเชิงลึกที่แตกต่างกันเกี่ยวกับปัญหานี้หรือไม่?

ขอบคุณมาก! เดวิด

คำตอบ:


6

ปัญหาที่น่าสนใจนี้เรียกว่า 'การสุ่มตัวอย่างแบบสปีชีส์' ซึ่งได้รับความสนใจอย่างมากในช่วงหลายปีที่ผ่านมาและรวมถึงปัญหาการประมาณค่าอื่น ๆ อีกมากมาย พอจะพูดได้ว่า 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,)

nP(λ),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=1p(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

ซึ่งมีการสนับสนุนใน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)=Γ(i=1nyi+1)i=1nΓ(yi+1)i=1nωiyi

โดยที่ ,และแต่อย่างอื่นดัชนีจะผิด ก่อนหน้านี้ปัญหาคืออนุมานจำนวนจริงของหมวดหมู่และเราเริ่มต้นด้วยก่อนเช่น Poisson ที่ไม่มีการตัดทอน: yNy1ym>0ym+1yn=0nn

Pr(n|λ)=λn(exp{λ}1)n!, nZ+

เช่นเดียวกับก่อนหน้านี้เราปฏิบัติต่อความน่าจะเป็นหลายระดับเมื่อ Dirichlet กระจายด้วย hyperparameter สมมาตรเช่นสำหรับ , Ωα~n

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

การบูรณาการ (marginalizing) เหนือเวกเตอร์ของความน่าจะเป็นให้ Dirichlet Multinomial:

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

นี่คือที่ที่เราแตกต่างจากโมเดลในตอนที่ 1 ข้างต้น ในส่วนที่ฉันมีการจัดหมวดหมู่โดยปริยาย: ตัวอย่างเช่นในด้านตายหมวดหมู่ (ด้าน) มีคำสั่งโดยปริยายและการสังเกตหมวดหมู่ใด ๆ ที่หมายถึง การดำรงอยู่ของประเภทน้อย<i ในส่วนที่สองเรามีเวกเตอร์สุ่มหลายส่วนที่สังเกตได้ซึ่งไม่มีการเรียงลำดับโดยปริยาย ในคำอื่น ๆ ข้อมูลแทนพาร์ทิชันไม่เรียงลำดับของจุดข้อมูลลงในประเภทสังเกต ฉันจะแสดงพาร์ทิชันไม่เรียงลำดับว่าผลจากเติมโดยประเภทสังเกตเช่น[Y]ni{1n}j<imnYnmP[Y]

ความน่าจะเป็นของพาร์ทิชันที่ไม่มีการเรียงลำดับตามจำนวนจริงของหมวดหมู่สามารถพบได้โดยพิจารณาจำนวนการเปลี่ยนลำดับหมวดหมู่ซึ่งส่งผลให้พาร์ติชันเดียวกัน: n

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

และนี้สามารถบูรณาการมากกว่าเพื่อให้: n

Pr(P[Y]|α~,λ)=j=mPr(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))

ขอบคุณมากสำหรับคำตอบที่สมบูรณ์ของคุณ (ขออภัยสำหรับการตอบกลับที่ช้ามาก) ฉันกลับมาที่คำถามประเภทนี้และฉันยังคงทำงานต่อไปในวิชาคณิตศาสตร์ ในระบบของฉันหมวดหมู่ไม่ใช่ลำดับดังนั้นการสันนิษฐานว่าการสังเกตหมวดหมู่ที่กำหนดแสดงถึงการมีอยู่ของหมวดหมู่ของอันดับที่น้อยกว่านั้นไม่ถูกต้อง
davipatti

@davipatti ตอบในส่วนที่สอง
เนทพระสันตะปาปา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.