計算形式 ECDF 的值
為了進行 Kolmogorov–Smirnov 檢定,我們需要在任意點上計算形式 ECDF 的值。換句話說,我們需要一個函式 ecdf_formal(x, data),對陣列 x 中的每個值,回傳由資料集 data 推導出的形式 ECDF 值。有兩個函式能做到這件事,另一個不行。在能正確計算的兩個當中,有一個更快。請為每個函式加上標籤。
提醒一下,ECDF 的正式定義是 ECDF(×) =(樣本數量 ≤ ×)/(樣本總數)。你也可以查看 np.searchsorted() 的文件字串。
a)
def ecdf_formal(x, data):
return np.searchsorted(np.sort(data), x) / len(data)
b)
def ecdf_formal(x, data):
return np.searchsorted(np.sort(data), x, side='right') / len(data)
c)
def ecdf_formal(x, data):
output = np.empty(len(x))
data = np.sort(data)
for i, x_val in x:
j = 0
while j < len(data) and x_val >= data[j]:
j += 1
output[i] = j
return output / len(data)
本練習屬於課程
