การคำนวณค่าพยากรณ์เชิง Posterior
คุณได้สำรวจ แนวโน้ม posterior ของน้ำหนัก \(Y\) ในกลุ่มผู้ใหญ่ที่มีส่วนสูง \(X = 180\) แล้ว ซึ่งได้แก่ \(m\)180 \(= a + b * 180\) โดย data frame weight_chains มีค่าที่เป็นไปได้เชิง posterior ของ \(m\)180 จำนวน 100,000 ค่า ที่คำนวณจากค่า \(a\) และ \(b\) ที่สอดคล้องกัน:
> head(weight_chains, 2)
a b s iter m_180
1 -113.9029 1.072505 8.772007 1 79.14803
2 -115.0644 1.077914 8.986393 2 78.96014
ทีนี้ลืมเรื่องแนวโน้มไปก่อน แล้วลองคิดว่าหากต้องการ พยากรณ์ น้ำหนักของผู้ใหญ่คนหนึ่งที่มีส่วนสูง 180 ซม. จะทำได้อย่างไร? ทำได้แน่นอน! โดยต้องคำนึงถึงความแปรปรวนระดับบุคคลจากแนวโน้ม ซึ่งจำลองด้วยโมเดล
\(Y\)180 \(\sim N(m\)180\(, s^2)\)
ด้วยโมเดลนี้ คุณจะจำลองค่าพยากรณ์น้ำหนักภายใต้ชุดพารามิเตอร์เชิง posterior แต่ละชุดใน weight_chains
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างแบบจำลอง Bayesian ด้วย RJAGS
คำแนะนำการฝึกหัด
- ใช้
rnorm()เพื่อจำลองค่าพยากรณ์น้ำหนักหนึ่งค่า โดยใช้ค่าพารามิเตอร์จากแถวแรกของweight_chains - ทำซ้ำขั้นตอนข้างต้น โดยใช้ค่าพารามิเตอร์จากแถว ที่สอง ของ
weight_chains - จำลองค่าพยากรณ์น้ำหนักหนึ่งค่าสำหรับชุดพารามิเตอร์ทั้ง 100,000 ชุดใน
weight_chainsแล้วเก็บผลลัพธ์เป็นตัวแปรใหม่ชื่อY_180ในweight_chains - แสดง 6 แถวแรกของค่าพารามิเตอร์และค่าพยากรณ์ใน
weight_chains
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Simulate 1 prediction under the first parameter set
rnorm(n = 1, mean = ___, sd = ___)
# Simulate 1 prediction under the second parameter set
rnorm(n = 1, mean = ___, sd = ___)
# Simulate & store 1 prediction under each parameter set
weight_chains <- weight_chains %>%
mutate(Y_180 = rnorm(n = 100000, mean = ___, sd = ___))
# Print the first 6 parameter sets & predictions