วิธีใช้การแจกแจงแบบเอ็กซ์โปเนนเชียลใน python
การแจกแจงแบบเอ็กซ์โปเนนเชียล คือการแจกแจงความน่าจะเป็นที่ใช้จำลองเวลาที่เราต้องรอจนกว่าเหตุการณ์บางอย่างจะเกิดขึ้น
หาก ตัวแปรสุ่ม X ตามหลังการแจกแจงแบบเอกซ์โพเนนเชียล ฟังก์ชันการแจกแจงสะสมของ X ก็สามารถเขียนได้:
F (x; แลมบ์ดา) = 1 – อี – แลมx
ทอง:
- แล: พารามิเตอร์อัตรา (คำนวณเป็น แล = 1/μ)
- e: ค่าคงที่ประมาณเท่ากับ 2.718
บทช่วยสอนนี้จะอธิบายวิธีใช้การแจกแจงแบบเอ็กซ์โปเนนเชียลใน Python
วิธีสร้างการแจกแจงแบบเอ็กซ์โพเนนเชียล
คุณสามารถใช้ฟังก์ชัน expon.rvs(scale, size) จากไลบรารี SciPy ใน Python เพื่อสร้างค่าสุ่มจากการแจกแจงแบบเอ็กซ์โพเนนเชียลด้วยพารามิเตอร์อัตราเฉพาะและขนาดตัวอย่าง:
from scipy. stats import expo #generate random values from exponential distribution with rate=40 and sample size=10 expon. rvs (scale= 40 , size= 10 ) array([116.5368323 , 67.23514699, 12.00399043, 40.74580584, 34.60922432, 2.68266663, 22.70459831, 97.66661811, 6.64272914, 46.15547298])
หมายเหตุ : คุณสามารถค้นหาเอกสารประกอบไลบรารี SciPy ฉบับเต็มได้ ที่นี่
วิธีการคำนวณความน่าจะเป็นโดยใช้การแจกแจงแบบเอ็กซ์โปเนนเชียล
สมมติว่าจำนวนนาทีโดยเฉลี่ยระหว่างการปะทุของไกเซอร์บางแห่งคือ 40 นาที มีความเป็นไปได้มากเพียงใดที่เราจะต้องรอไม่ถึง 50 นาทีจึงจะเกิดการปะทุ?
เพื่อแก้ไขปัญหานี้ เราต้องคำนวณพารามิเตอร์อัตราก่อน:
- แล = 1/ไมโคร
- แล = 1/40
- แล = 0.025
เราสามารถแทนค่า แล = 0.025 และ x = 50 ลงในสูตร CDF ได้:
- P(X ≤ x) = 1 – อี – แลมx
- P(X ≤ 50) = 1 – อี -0.025(50)
- พี(X ≤ 50) = 0.7135
ความน่าจะเป็นที่เราจะต้องรอไม่ถึง 50 นาที การปะทุครั้งต่อไปคือ 0.7135 .
เราสามารถใช้ฟังก์ชัน expon.cdf() ของ SciPy เพื่อแก้ไขปัญหานี้ใน Python:
from scipy. stats import expo #calculate probability that x is less than 50 when mean rate is 40 expon. cdf (x=50, scale=40) 0.7134952031398099
ความน่าจะเป็นที่เราจะต้องรอไม่ถึง 50 นาที การปะทุครั้งต่อไปคือ 0.7135 .
ซึ่งสอดคล้องกับค่าที่เราคำนวณด้วยตนเอง
วิธีการพล็อตการกระจายแบบเอ็กซ์โปเนนเชียล
คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อพล็อตการแจกแจงแบบเอ็กซ์โปเนนเชียลด้วยพารามิเตอร์อัตราที่กำหนด:
from scipy. stats import expo import matplotlib. pyplot as plt #generate exponential distribution with sample size 10000 x = expon. rvs (scale= 40 ,size= 10000 ) #create plot of exponential distribution plt. hist (x, density= True , edgecolor=' black ')

แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีใช้การแจกแจงทั่วไปอื่น ๆ ใน Python:
วิธีใช้การแจกแจงปัวซองใน Python
วิธีใช้การแจกแจง t ใน Python
วิธีใช้การกระจายแบบสม่ำเสมอใน Python