计算形式 ECDF 的值
为进行 Kolmogorov–Smirnov 检验,我们需要在任意点计算形式 ECDF 的值。换句话说,需要一个函数 ecdf_formal(x, data),对数组 x 中的每个值,返回由数据集 data 导出的形式 ECDF 值。其中有两个函数能实现该计算,另一个不能。在能正确计算的两个函数中,有一个更快。请分别标注。
提醒一下,ECDF 的形式定义为 ECDF(x) = (样本数 ≤ x)/(样本总数)。您也可以查看 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)
本练习是课程的一部分
