คาดว่าจะมีการผิดนัดชำระหนี้กี่ครั้ง?
สมมติว่าธนาคารปล่อยสินเชื่อที่อยู่อาศัย 100 รายการ จำนวนรายการที่อาจผิดนัดชำระหนี้นั้นอยู่ระหว่าง 0 ถึง 100 รายการ เราต้องการทราบความน่าจะเป็นของจำนวนการผิดนัดชำระหนี้ในแต่ละค่า เมื่อกำหนดให้ความน่าจะเป็นของการผิดนัดชำระหนี้คือ p = 0.05 ในการศึกษานี้จะใช้การจำลอง โดยทดสอบ Bernoulli 100 ครั้งด้วยฟังก์ชัน perform_bernoulli_trials() ที่เขียนไว้ในแบบฝึกหัดก่อนหน้า แล้วบันทึกจำนวนการผิดนัดชำระหนี้ที่ได้ ในที่นี้ "ความสำเร็จ" หมายถึงการผิดนัดชำระหนี้ (โปรดจำไว้ว่า "ความสำเร็จ" หมายถึงการที่ผล Bernoulli trial มีค่าเป็น True นั่นคือผู้กู้ผิดนัดชำระหนี้หรือไม่?) จากนั้นจะทำการทดสอบ Bernoulli อีก 100 ครั้ง แล้วทำซ้ำไปเรื่อย ๆ จนครบ 1000 รอบ จากนั้นจะวาด histogram เพื่อแสดงความน่าจะเป็นของจำนวนการผิดนัดชำระหนี้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Statistical Thinking in Python (ตอนที่ 1)
คำแนะนำการฝึกหัด
- กำหนด seed ของตัวสร้างเลขสุ่มเป็น 42
- สร้าง
n_defaultsซึ่งเป็นอาร์เรย์ว่างโดยใช้np.empty()โดยให้มี 1000 สมาชิก เนื่องจากจะทำการจำลอง 1000 รอบ - เขียนลูป
forจำนวน1000รอบ เพื่อคำนวณจำนวนการผิดนัดชำระหนี้จากสินเชื่อ 100 รายการโดยใช้ฟังก์ชันperform_bernoulli_trials()ซึ่งรับอาร์กิวเมนต์ 2 ตัว ได้แก่ จำนวนการทดสอบn— ในที่นี้คือ 100 — และความน่าจะเป็นของความสำเร็จp— ในที่นี้คือความน่าจะเป็นของการผิดนัดชำระหนี้ซึ่งเท่ากับ0.05โดยในแต่ละรอบของลูปให้เก็บผลลัพธ์ไว้ในn_defaults - วาด histogram ของ
n_defaultsโดยใส่อาร์กิวเมนต์density=Trueเพื่อให้ความสูงของแท่งแสดงถึงความน่าจะเป็น - แสดงกราฟที่ได้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Instantiate and seed random number generator
# Initialize the number of defaults: n_defaults
# Compute the number of defaults
for i in ____:
n_defaults[i] = ____
# Plot the histogram with default number of bins; label your axes
_ = plt.hist(____, ____)
_ = plt.xlabel('number of defaults out of 100 loans')
_ = plt.ylabel('probability')
# Show the plot