การสุ่ม K-S Replicate
ขั้นตอนต่อไป คือการสร้างฟังก์ชันสำหรับสุ่ม Kolmogorov-Smirnov replicate จากการแจกแจงเป้าหมาย f โดยให้สร้างฟังก์ชันที่มี signature ว่า draw_ks_reps(n, f, args=(), size=10000, n_reps=10000) ในที่นี้ n คือจำนวนจุดข้อมูล และ f คือฟังก์ชันที่ใช้สุ่มตัวอย่างจาก CDF เป้าหมาย ตัวอย่างเช่น หากต้องการทดสอบกับการแจกแจงแบบเอกซ์โพเนนเชียล ให้ส่ง np.random.exponential เป็น f โดยทั่วไปฟังก์ชันนี้จะรับอาร์กิวเมนต์ ซึ่งต้องส่งในรูป tuple ดังนั้น หากต้องการสุ่มตัวอย่างจากการแจกแจงแบบเอกซ์โพเนนเชียลที่มีค่าเฉลี่ย x_mean ให้ใช้ keyword args=(x_mean,) ส่วน keyword arguments size และ n_reps หมายถึงจำนวนตัวอย่างที่สุ่มจากการแจกแจงเป้าหมาย และจำนวน replicate ที่ต้องการสุ่มตามลำดับ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
กรณีศึกษาด้านการคิดเชิงสถิติ
คำแนะนำการฝึกหัด
- เขียนฟังก์ชันที่มี signature ว่า
draw_ks_reps(n, f, args=(), size=10000, n_reps=10000)โดยให้ทำดังนี้- สุ่มตัวอย่างจำนวน
sizeชุดจากการแจกแจงเป้าหมายfจำไว้ว่าต้องส่งargsเข้าไปในฟังก์ชันสุ่มด้วย constructionf(*args, size=size)แล้วเก็บผลลัพธ์ไว้ในx_f - สร้างอาร์เรย์
repsให้เป็นอาร์เรย์ว่างที่มีขนาดn_repsช่อง - เขียนลูป
forเพื่อทำสิ่งต่อไปนี้n_repsครั้ง- สุ่มตัวอย่างจำนวน
nชุดจากfโดยใช้*argsในการเรียกฟังก์ชัน แล้วเก็บผลลัพธ์ไว้ในตัวแปรx_samp - คำนวณค่าสถิติ K-S โดยใช้
dcst.ks_stat()ซึ่งเป็นฟังก์ชันที่เขียนไว้ในแบบฝึกหัดก่อนหน้าและถูกเก็บไว้ใน moduledcstแล้วบันทึกผลลัพธ์ลงในอาร์เรย์reps
- สุ่มตัวอย่างจำนวน
- คืนค่าอาร์เรย์
reps
- สุ่มตัวอย่างจำนวน
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
____ ____:
# Generate samples from target distribution
x_f = ____
# Initialize K-S replicates
reps = ____
# Draw replicates
for i in range(n_reps):
# Draw samples for comparison
x_samp = ____
# Compute K-S statistic
____[i] = ____
return reps