計算 K-S 統計量
撰寫一個函式,從兩個資料集 data1 與 data2 計算 Kolmogorov–Smirnov(K-S)統計量,其中 data2 為你用來比較資料的理論分配之樣本。請注意,這代表我們是用 hacker stats 的方式,來計算「資料集 vs. 理論分配」的 K-S 統計量,並非計算兩個經驗資料集之間的 K-S 統計量。剛才你選用來計算形式 ECDF 的函式正是 dcst.ecdf_formal()。
本練習屬於課程
統計思維個案研究
練習說明
- 使用
dcst.ecdf()計算data1的形式 ECDF 之凸角(convex corners)位置的取值。將結果儲存為變數x與y。 - 使用
dcst.ecdf_formal(),在凸角x上計算由data2決定的理論 CDF 取值。將結果儲存為變數cdf。 - 計算形式 ECDF 的凹角(concave corners)與理論 CDF 之間的距離。將結果儲存為
D_top。 - 計算形式 ECDF 的凸角與理論 CDF 之間的距離。注意,你需要從
y中減去1/len(data1)才能得到凸角的y值。將結果儲存為D_bottom。 - 回傳 K-S 統計量,做法是取
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))