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

การคำนวณ K-S statistic

เขียนฟังก์ชันเพื่อคำนวณ Kolmogorov-Smirnov statistic จากชุดข้อมูลสองชุด ได้แก่ data1 และ data2 โดยที่ data2 ประกอบด้วยตัวอย่างที่สุ่มจากการแจกแจงเชิงทฤษฎีที่ต้องการเปรียบเทียบกับข้อมูล ซึ่งหมายความว่าเราใช้ hacker stats ในการคำนวณ K-S statistic สำหรับชุดข้อมูลและการแจกแจงเชิงทฤษฎี ไม่ใช่ K-S statistic ระหว่างชุดข้อมูลเชิงประจักษ์สองชุด ทั้งนี้ ฟังก์ชันที่เลือกไว้สำหรับคำนวณค่า formal ECDF จะถูกกำหนดให้เป็น dcst.ecdf_formal()

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

กรณีศึกษาด้านการคิดเชิงสถิติ

ดูคอร์ส

คำแนะนำการฝึกหัด

  • คำนวณค่าที่มุม convex ของ formal ECDF สำหรับ data1 โดยใช้ dcst.ecdf() แล้วเก็บผลลัพธ์ไว้ในตัวแปร x และ y
  • ใช้ dcst.ecdf_formal() คำนวณค่าของ CDF เชิงทฤษฎีที่ได้จาก data2 ณ มุม convex x แล้วเก็บผลลัพธ์ไว้ในตัวแปร cdf
  • คำนวณระยะห่างระหว่างมุม concave ของ formal ECDF กับ CDF เชิงทฤษฎี แล้วเก็บผลลัพธ์ไว้ใน D_top
  • คำนวณระยะห่างระหว่างมุม convex ของ formal ECDF กับ CDF เชิงทฤษฎี โดยต้องลบ 1/len(data1) ออกจาก y เพื่อให้ได้ค่า y ณ มุม convex แล้วเก็บผลลัพธ์ไว้ใน D_bottom
  • คืนค่า K-S statistic เป็นค่าสูงสุดของรายการทั้งหมดใน D_top และ D_bottom โดยสามารถส่ง D_top และ D_bottom รวมกันเป็น tuple ให้ np.max() เพื่อดำเนินการนี้

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

def ks_stat(data1, data2):
    # Compute ECDF from data: x, y
    
    
    # Compute corresponding values of the target CDF
    cdf = ____

    # Compute distances between concave corners and CDF
    D_top = ____ - ____

    # Compute distance between convex corners and CDF
    D_bottom = ____ - ____ + ____/____

    return np.max((D_top, D_bottom))
แก้ไขและรันโค้ด