วิธีใช้การแจกแจงแบบเอ็กซ์โปเนนเชียลใน 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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *