ทำไมต้องใช้การจำลอง?
ในบทเรียนที่ผ่านมา คุณได้ทำการแจกแจงแบบ multivariate normal โดยใช้ค่าเฉลี่ยและเมทริกซ์ความแปรปรวนร่วมของ dia แล้ว ต่อไปจะนำผลลัพธ์จากการจำลองมาตอบคำถามที่น่าสนใจ!
อาจเกิดคำถามขึ้นว่า ในเมื่อมีข้อมูลย้อนหลังอยู่แล้ว ทำไมต้องจำลองด้วย? ใช้ข้อมูลที่มีอยู่ตอบคำถามโดยตรงไม่ได้หรือ?
นี่เป็นคำถามที่ดีมาก การจำลอง Monte Carlo อาศัยการสร้างโมเดลด้วยการแจกแจงความน่าจะเป็น ซึ่งให้การแจกแจงความน่าจะเป็นทั้งหมดสำหรับการวิเคราะห์ (ผ่านตัวอย่างจำนวนมาก) แทนที่จะจำกัดอยู่แค่จุดข้อมูลที่มีในข้อมูลย้อนหลัง
ตัวอย่างเช่น สามารถถามได้ว่า quantile ที่ 0.1 ของตัวแปร age สำหรับผู้ป่วยเบาหวานในการจำลองของเราคือเท่าใด? คำถามนี้ไม่สามารถตอบได้โดยตรงจากข้อมูลเดิม dia เพราะมีเพียง 442 รายการ ทำให้ไม่สามารถคำนวณค่าที่หนึ่งในพันได้ แต่สามารถใช้ผลลัพธ์จากการจำลอง Monte Carlo ได้ ซึ่งจะทำในขั้นตอนนี้!
ชุดข้อมูลเบาหวานถูกโหลดเป็น DataFrame ชื่อ dia และมีการนำเข้าไลบรารีต่อไปนี้ให้แล้ว ได้แก่ pandas เป็น pd, numpy เป็น np และ scipy.stats เป็น st
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Monte Carlo Simulations ใน Python
คำแนะนำการฝึกหัด
- คำนวณ quantile ที่ 0.1 (1,000 ส่วนล่างสุด) ของตัวแปร
tcจากผลลัพธ์การจำลอง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
cov_dia = dia[["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"]].cov()
mean_dia = dia[["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"]].mean()
simulation_results = st.multivariate_normal.rvs(mean=mean_dia, size=10000, cov=cov_dia)
df_results = pd.DataFrame(simulation_results, columns=["age", "bmi", "bp", "tc", "ldl", "hdl", "tch", "ltg", "glu"])
# Calculate the 0.1st quantile of the tc variable
print(____)