วิธีใช้การแจกแจงแบบทวินามใน python
การแจกแจงแบบทวินาม เป็นหนึ่งในการแจกแจงที่ใช้บ่อยที่สุดในสถิติ อธิบายความน่าจะเป็นที่จะประสบความสำเร็จ k รายการในการทดลองทวินาม n รายการ
หาก ตัวแปรสุ่ม X เป็นไปตามการแจกแจงแบบทวินาม ความน่าจะเป็นที่ X = k สำเร็จจะพบได้จากสูตรต่อไปนี้:
P(X=k) = n C k * p k * (1-p) nk
ทอง:
- n: จำนวนการทดลอง
- k: จำนวนความสำเร็จ
- p: ความน่าจะเป็นที่จะประสบความสำเร็จในการทดลองที่กำหนด
- n C k : จำนวนวิธีในการได้รับ k ความสำเร็จในการทดลอง n ครั้ง
บทช่วยสอนนี้จะอธิบายวิธีใช้การแจกแจงแบบทวินามใน Python
วิธีสร้างการแจกแจงแบบทวินาม
คุณสามารถสร้างอาร์เรย์ของค่าที่ตามหลังการแจกแจงแบบทวินามได้โดยใช้ฟังก์ชัน Random.binomial ของไลบรารี numpy:
from numpy import random #generate an array of 10 values that follows a binomial distribution random.binomial(n=10, p=.25, size=10) array([5, 2, 1, 3, 3, 3, 2, 2, 1, 4])
แต่ละตัวเลขในตารางผลลัพธ์แสดงถึงจำนวน “ความสำเร็จ” ที่พบในการทดลอง 10 ครั้ง โดยความน่าจะเป็นที่จะประสบความสำเร็จในการทดลองที่กำหนดคือ 0.25
วิธีคำนวณความน่าจะเป็นโดยใช้การแจกแจงแบบทวินาม
คุณยังสามารถตอบคำถามเกี่ยวกับความน่าจะเป็นแบบทวินามได้โดยใช้ ฟังก์ชันทวินาม ของไลบรารี scipy
คำถามที่ 1: นาธานพยายามโยนโทษ 60% ถ้าเขาโยนโทษ 12 ครั้ง ความน่าจะเป็นที่เขาโยนโทษได้ 10 ครั้งพอดีเป็นเท่าใด?
from scipy.stats import binom #calculate binomial probability binom.pmf(k= 10 , n= 12 , p= 0.6 ) 0.0639
ความน่าจะเป็นที่นาธานโยนโทษ 10 ครั้งพอดีคือ 0.0639
คำถามที่ 2: มาร์ตี้โยนเหรียญยุติธรรม 5 ครั้ง ความน่าจะเป็นที่เหรียญจะขึ้นหัว 2 เท่าหรือน้อยกว่านั้นเป็นเท่าใด?
from scipy.stats import binom #calculate binomial probability binom.cdf(k= 2 , n= 5 , p= 0.5 ) 0.5
ความน่าจะเป็นที่เหรียญจะขึ้นหัว 2 ครั้งหรือน้อยกว่าคือ 0.5
คำถามที่ 3: เรารู้ว่า 70% ของบุคคลสนับสนุนกฎหมายบางประการ หากสุ่มเลือกบุคคล 10 คน ความน่าจะเป็นที่ระหว่าง 4 ถึง 6 คนในจำนวนนั้นสนับสนุนกฎหมายเป็นเท่าใด
from scipy.stats import binom #calculate binomial probability binom.cdf(k= 6 , n= 10 , p= 0.7 ) - binom.cdf(k= 3 , n= 10 , p= 0.7 ) 0.3398
ความน่าจะเป็นที่ผู้สุ่มเลือกระหว่าง 4 ถึง 6 คนสนับสนุนกฎหมายคือ 0.3398
วิธีแสดงภาพการแจกแจงแบบทวินาม
คุณสามารถเห็นภาพการแจกแจงแบบทวินามใน Python โดยใช้ไลบรารี seaborn และ matplotlib :
from numpy import random import matplotlib.pyplot as plt import seaborn as sns x = random.binomial(n= 10 , p= 0.5 , size= 1000 ) sns.distplot(x, hist= True , kde= False ) plt.show()
ชา