ความสัมพันธ์ระหว่างการแจกแจงแบบ Binomial และ Poisson
เราได้เรียนรู้ว่าการแจกแจงแบบ Poisson คือขีดจำกัดของการแจกแจงแบบ Binomial สำหรับเหตุการณ์ที่เกิดขึ้นได้ยาก ซึ่งสมเหตุสมผลเมื่อลองนึกถึงบริบทของแต่ละการแจกแจง สมมติว่าเราทดลองแบบ Bernoulli ทุกนาทีเป็นเวลาหนึ่งชั่วโมง โดยแต่ละครั้งมีความน่าจะเป็นของความสำเร็จอยู่ที่ 0.1 เราจะทำการทดลองทั้งหมด 60 ครั้ง และจำนวนครั้งที่สำเร็จจะมีการแจกแจงแบบ Binomial โดยคาดว่าจะได้ประมาณ 6 ครั้ง ซึ่งตรงกับแนวคิดแบบ Poisson ที่กล่าวถึงในวิดีโอ เช่น การได้รับผู้เข้าชมเว็บไซต์เฉลี่ย 6 ครั้งต่อชั่วโมง ดังนั้น การแจกแจงแบบ Poisson ที่มีอัตราการมาถึงเท่ากับ \(np\) จึงเป็นการประมาณการแจกแจงแบบ Binomial สำหรับ \(n\) การทดลองแบบ Bernoulli ที่มีความน่าจะเป็นของความสำเร็จเท่ากับ \(p\) (เมื่อ \(n\) มีค่ามากและ \(p\) มีค่าน้อย) ที่สำคัญ การแจกแจงแบบ Poisson มักใช้งานได้ง่ายกว่า เนื่องจากมีพารามิเตอร์เพียงตัวเดียว แทนที่จะเป็นสองตัวของการแจกแจงแบบ Binomial
มาสำรวจการแจกแจงทั้งสองแบบนี้ผ่านการคำนวณกัน โดยจะคำนวณค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานของตัวอย่างที่สุ่มจากการแจกแจงแบบ Poisson ที่มีอัตราการมาถึงเท่ากับ 10 จากนั้นจะคำนวณค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานของตัวอย่างจากการแจกแจงแบบ Binomial ที่มีพารามิเตอร์ \(n\) และ \(p\) โดยที่ \(np = 10\)
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Statistical Thinking in Python (ตอนที่ 1)
คำแนะนำการฝึกหัด
- ใช้ฟังก์ชัน
rng.poisson()สุ่มตัวอย่าง10000ค่าจากการแจกแจงแบบ Poisson ที่มีค่าเฉลี่ยเท่ากับ10 - สร้างลิสต์ค่า
nและpสำหรับการแจกแจงแบบ Binomial โดยเลือกn = [20, 100, 1000]และp = [0.5, 0.1, 0.01]เพื่อให้ \(np\) มีค่าเท่ากับ 10 เสมอ - ใช้
rng.binomial()ภายในforloop ที่เตรียมไว้ สุ่มตัวอย่าง10000ค่าจากการแจกแจงแบบ Binomial สำหรับคู่n, pแต่ละคู่ แล้วพิมพ์ค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานของตัวอย่าง โดยมีคู่n, pทั้งหมด 3 คู่ ได้แก่20, 0.5,100, 0.1และ1000, 0.01ซึ่งเข้าถึงได้ภายใน loop ในรูปแบบn[i], p[i]
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Draw 10,000 samples out of Poisson distribution: samples_poisson
# Print the mean and standard deviation
print('Poisson: ', np.mean(samples_poisson),
np.std(samples_poisson))
# Specify values of n and p to consider for Binomial: n, p
# Draw 10,000 samples for each n,p pair: samples_binomial
for i in range(3):
samples_binomial = ____
# Print results
print('n =', n[i], 'Binom:', np.mean(samples_binomial),
np.std(samples_binomial))