使用 Kolmogorov–Smirnov 检验

机器算法验证 分布 假设检验 kolmogorov-smirnov 测试
2022-03-07 22:11:50

一个新手问题(请提供详细答案):我正在尝试使用 Kolmogorov-Smirnov 测试。我设法计算了经验点和理论分布之间的差异D(遵循维基百科)。但是后来我对测试有点困惑:

  1. 经验数据是否根据理论分布进行分布的零假设?
  2. 如何确定临界水平α当我有D? 我可以使用这个类来计算 Kolmogorov Smirnov 分布。

我想我有所有的成分,但我不知道如何把它们放在一起。

2个回答

1) 原假设是数据按照理论分布进行分布。

2)让N是你的样本量,D是 Kolmogorov-Smirnov 检验统计量的观测值,并定义λ=D(0.12+N+0.11/N). 那么检验统计量的 p 值大约为:

Q=2j=1(1)j1exp{2j2λ2}

显然你不能计算无限和,但如果你对超过 100 个值求和,这会让你非常非常接近。即使对于较小的值,该近似值也非常好N,如果我没记错的话,低至 5,并且变得更好N增加。但是请注意,评论中的@whuber 提出了一种更好的方法。

顺便说一句,这是我在回答您的另一个问题时建议的夏皮罗-威尔克测试的一个完全合理的替代方案。Shapiro-Wilk 更强大,但如果您的样本量高达数百,Kolmogorov-Smirnov 检验也将具有相当大的功效。

  1. 否。零假设,即经验数据根据理论分布进行分布。

  2. 不熟悉java函数。但 KS 测试临界值可在线获得。也可在处理非参数检验的统计书籍的附录中找到。您可以将几个值与 java 函数和表进行比较。(如有不同请告知)