การจำลองความสัมพันธ์ระหว่าง X กับ p
ในแคมเปญหาเสียงของคุณ ทีมงานสำรวจผู้มีสิทธิ์เลือกตั้ง 10 คน กำหนดให้ \(X\) คือจำนวนคนที่ให้การสนับสนุน แน่นอนว่า \(X\) จะแปรผันในแต่ละกลุ่มตัวอย่าง และขึ้นอยู่กับ \(p\) ซึ่งคือสัดส่วนการสนับสนุนในประชากรทั้งหมด เนื่องจาก \(X\) คือจำนวนครั้งที่สำเร็จใน 10 การทดลองอิสระ โดยแต่ละครั้งมีความน่าจะเป็นของความสำเร็จเท่ากับ \(p\) จึงสามารถสร้างโมเดลความสัมพันธ์ระหว่าง \(X\) กับ \(p\) ได้โดยใช้การแจกแจงทวินาม: Bin(10, \(p\))
จะจำลองโมเดล Binomial โดยใช้ตัวอย่างสุ่มจากฟังก์ชัน rbinom(n, size, prob) ฟังก์ชันแบบ vectorized นี้สุ่ม n ตัวอย่างจากการแจกแจง Bin(size, prob) เมื่อกำหนด vector ของค่า prob ค่า prob แรกจะใช้สำหรับการสุ่มครั้งแรก ค่าที่สองจะใช้สำหรับการสุ่มครั้งที่สอง และต่อไปเรื่อย ๆ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างแบบจำลอง Bayesian ด้วย RJAGS
คำแนะนำการฝึกหัด
- กำหนดลำดับค่าที่เป็นไปได้ของ \(p\) จำนวน 1000 ค่าโดยใช้
seq()ตั้งแต่ 0 ถึง 1 แล้วเก็บไว้ในตัวแปรp_grid - ใช้
rbinom()เพื่อจำลองผลสำรวจ \(X\) หนึ่งรายการสำหรับแต่ละค่า \(p\) ทั้ง 1000 ค่าในp_gridแล้วกำหนดค่าเหล่านี้ให้กับpoll_result - data frame
likelihood_simรวมp_gridและpoll_resultเข้าด้วยกัน ใช้ggplot()พร้อม layergeom_density_ridges()เพื่อแสดงการกระจายของค่าp_grid(แกนx) ที่ใช้จำลองpoll_resultแต่ละค่า (แกนy)
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define a vector of 1000 p values
p_grid <- seq(from = ___, to = ___, length.out = ___)
# Simulate 1 poll result for each p in p_grid
# Create likelihood_sim data frame
likelihood_sim <- data.frame(p_grid, poll_result)
# Density plots of p_grid grouped by poll_result
ggplot(likelihood_sim, aes(x = ___, y = ___, group = poll_result)) +
geom_density_ridges()