เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ความสัมพันธ์ระหว่างการแจกแจงแบบ 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() ภายใน for loop ที่เตรียมไว้ สุ่มตัวอย่าง 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))
แก้ไขและรันโค้ด