วิธีตีความพล็อตความสัมพันธ์อัตโนมัติใน MCMC


12

ฉันคุ้นเคยกับสถิติแบบเบย์โดยการอ่านหนังสือDoing Bayesian Data Analysisโดย John K. Kruschke หรือที่เรียกว่า "puppy book" ในบทที่ 9 มีการแนะนำตัวแบบลำดับชั้นด้วยตัวอย่างง่าย ๆ นี้: และการสังเกตของเบอร์นูลีคือ 3 เหรียญต่อการโยน 10 ครั้ง หนึ่งแสดง 9 หัวอื่น ๆ 5 หัวและอีก 1 หัว

yjiBernoulli(θj)θjBeta(μκ,(1μ)κ)μBeta(Aμ,Bμ)κGamma(Sκ,Rκ)

ฉันใช้ pymc เพื่ออนุมาน hyperparamteres

with pm.Model() as model:
# define the     
    mu = pm.Beta('mu', 2, 2)
    kappa = pm.Gamma('kappa', 1, 0.1)
    # define the prior
    theta = pm.Beta('theta', mu * kappa, (1 - mu) * kappa, shape=len(N))
    # define the likelihood
    y = pm.Bernoulli('y', p=theta[coin], observed=y)

    # Generate a MCMC chain
    step = pm.Metropolis()
    trace = pm.sample(5000, step, progressbar=True)
    trace = pm.sample(5000, step, progressbar=True)


burnin = 2000  # posterior samples to discard
thin = 10  # thinning 
pm.autocorrplot(trace[burnin::thin], vars =[mu, kappa])

คำถามของฉันเกี่ยวกับความสัมพันธ์อัตโนมัติ ฉันจะตีความความสัมพันธ์อัตโนมัติได้อย่างไร คุณช่วยฉันแปลความหมายเกี่ยวกับ

ป้อนคำอธิบายรูปภาพที่นี่

มันบอกว่าเป็นตัวอย่างที่ได้รับเพิ่มเติมจากกันและกันความสัมพันธ์ระหว่างพวกเขาลดลง ขวา? เราใช้สิ่งนี้เพื่อพล็อตเพื่อค้นหาการทำให้ผอมบางที่เหมาะสมได้หรือไม่? การทำให้ผอมบางส่งผลกระทบต่อตัวอย่างหลังหรือไม่? ท้ายที่สุดแล้วการใช้พล็อตนี้คืออะไร?

คำตอบ:


13

ก่อนอื่น: ถ้าหน่วยความจำและเวลาการคำนวณสำหรับการจัดการเอาต์พุต MCMC ไม่ จำกัด การทำให้ผอมบางจะไม่ "ดีที่สุด" ที่การทำซ้ำจำนวน MCMC เท่ากันการทำให้ผอมบางของโซ่จะนำไปสู่ ​​(โดยเฉลี่ย) เพื่อความแม่นยำในการสูญเสียของการประมาณ MCMC

ประจำผอมบางอยู่บนพื้นฐานของอัตวินิจฉัยหรืออื่น ๆ ดังนั้นจึงไม่แนะนำ ดู Link, WA & Eaton, MJ (2012) เกี่ยวกับการทำให้ผอมบางของโซ่ใน MCMC วิธีการทางนิเวศวิทยาและวิวัฒนาการ, 3, 112-115

อย่างไรก็ตามในการฝึกฝนทุกวันมีกรณีทั่วไปที่คุณต้องทำงานกับแบบจำลองที่ตัวอย่างไม่ทำงานได้ดีมาก ในกรณีนี้

1) องค์ประกอบลูกโซ่ปิดมีความคล้ายคลึงกันมากซึ่งหมายความว่าการโยนทิ้งห่างไม่ได้ทำให้ข้อมูลจำนวนมากหลุดลอยไป

2) คุณต้องมีการทำซ้ำ ๆ มากมายเพื่อให้ได้คอนเวอร์เจนซ์ซึ่งหมายความว่าคุณจะได้รับเชนขนาดใหญ่มากถ้าคุณไม่ผอม ด้วยเหตุนี้การทำงานกับ full chain จึงช้ามากมีค่าใช้จ่ายในการเก็บข้อมูลจำนวนมากหรือแม้แต่นำไปสู่ปัญหาหน่วยความจำเมื่อตรวจสอบตัวแปรจำนวนมาก

3) นอกจากนี้ฉันมีความรู้สึก (แต่สิ่งที่ฉันไม่เคยทดสอบอย่างเป็นระบบ) ที่ทำให้ผอมบางทำให้ JAGS เร็วขึ้นเช่นกันดังนั้นอาจทำให้สามารถทำซ้ำได้อีกสองสามครั้งในเวลาเดียวกัน

ดังนั้นประเด็นของฉันคือ: พล็อตการบันทึกภาพอัตโนมัติให้ข้อมูลคร่าวๆเกี่ยวกับจำนวนข้อมูลที่คุณสูญเสียไปจากการทำให้ผอมบาง (โปรดทราบว่านี่เป็นค่าเฉลี่ยของคนหลังทั้งหมดการสูญเสียอาจสูงขึ้นในบางภูมิภาค)

ไม่ว่าราคานี้จะคุ้มค่าหรือไม่นั้นขึ้นอยู่กับสิ่งที่คุณได้รับจากการทำให้ผอมบางในแง่การประหยัดทรัพยากรการคำนวณและเวลาในภายหลัง หากการทำซ้ำ MCMC มีราคาถูกคุณสามารถชดเชยการสูญเสียของการทำให้ผอมบางได้ด้วยการทำซ้ำอีกสองสามครั้งเช่นกัน


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