เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การสุ่ม 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 เข้าไปในฟังก์ชันสุ่มด้วย construction f(*args, size=size) แล้วเก็บผลลัพธ์ไว้ใน x_f
    • สร้างอาร์เรย์ reps ให้เป็นอาร์เรย์ว่างที่มีขนาด n_reps ช่อง
    • เขียนลูป for เพื่อทำสิ่งต่อไปนี้ n_reps ครั้ง
      • สุ่มตัวอย่างจำนวน n ชุดจาก f โดยใช้ *args ในการเรียกฟังก์ชัน แล้วเก็บผลลัพธ์ไว้ในตัวแปร x_samp
      • คำนวณค่าสถิติ K-S โดยใช้ dcst.ks_stat() ซึ่งเป็นฟังก์ชันที่เขียนไว้ในแบบฝึกหัดก่อนหน้าและถูกเก็บไว้ใน module dcst แล้วบันทึกผลลัพธ์ลงในอาร์เรย์ 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
แก้ไขและรันโค้ด