การคำนวณ 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ณ มุม convexxแล้วเก็บผลลัพธ์ไว้ในตัวแปร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))