開始使用免費開始

計算 K-S 統計量

撰寫一個函式,從兩個資料集 data1data2 計算 Kolmogorov–Smirnov(K-S)統計量,其中 data2 為你用來比較資料的理論分配之樣本。請注意,這代表我們是用 hacker stats 的方式,來計算「資料集 vs. 理論分配」的 K-S 統計量,並非計算兩個經驗資料集之間的 K-S 統計量。剛才你選用來計算形式 ECDF 的函式正是 dcst.ecdf_formal()

本練習屬於課程

統計思維個案研究

檢視課程

練習說明

  • 使用 dcst.ecdf() 計算 data1 的形式 ECDF 之凸角(convex corners)位置的取值。將結果儲存為變數 xy
  • 使用 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_topD_bottom 全部元素的最大值。你可以將 D_topD_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))
編輯並執行程式碼