计算 K-S 统计量
请编写一个函数,从两个数据集 data1 和 data2 计算 Kolmogorov–Smirnov 统计量,其中 data2 为与您的数据进行比较的理论分布所生成的样本。注意,这意味着我们使用 hacker stats 来计算"数据集 vs. 理论分布"的 K-S 统计量,而不是两个经验数据集之间的 K-S 统计量。方便的是,您刚刚选用来计算形式 ECDF 取值的函数是 dcst.ecdf_formal()。
本练习是课程的一部分
统计思维案例研习
练习说明
- 使用
dcst.ecdf()计算data1的形式 ECDF 的凸角取值。将结果存入变量x和y。 - 使用
dcst.ecdf_formal()计算由data2确定的理论 CDF 在凸角x处的取值。将结果存入变量cdf。 - 计算形式 ECDF 的凹角与理论 CDF 之间的距离。将结果存为
D_top。 - 计算形式 ECDF 的凸角与理论 CDF 之间的距离。注意,您需要从
y中减去1/len(data1)才能得到凸角处的 y 值。将结果存为D_bottom。 - 将 K-S 统计量作为
D_top和D_bottom所有条目的最大值返回。为此,您可以将D_top和D_bottom以元组形式一起传给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))