R 中的柯尔莫哥洛夫-斯米尔诺夫检验(附示例)
柯尔莫哥洛夫-斯米尔诺夫检验用于检验样本是否来自某个分布。
要在 R 中执行一个或两个样本 Kolmogorov-Smirnov 检验,我们可以使用ks.test()函数。
本教程展示了如何在实践中使用此功能的示例。
示例 1:Kolmogorov-Smirnov 测试样本
假设我们有以下样本数据:
#make this example reproducible seed(0) #generate dataset of 100 values that follows a Poisson distribution with mean=5 data <- rpois(n= 20 , lambda= 5 )
相关: R 中的 dpois、ppois、qpois 和 rpois 指南
以下代码展示了如何对这 100 个数据值的样本执行 Kolmogorov-Smirnov 检验,以确定它们是否来自正态分布:
#perform Kolmogorov-Smirnov test ks.test(data, “ pnorm ”) One-sample Kolmogorov–Smirnov test data:data D = 0.97725, p-value < 2.2e-16 alternative hypothesis: two-sided
从结果中,我们可以看到检验统计量为0.97725 ,相应的 p 值为2.2e-16 。由于 p 值小于 0.05,我们拒绝原假设。我们有足够的证据表明样本数据并非来自正态分布。
这个结果应该不足为奇,因为我们使用rpois()函数生成样本数据,该函数生成遵循泊松分布的随机值。
示例 2:两个样本 Kolmogorov-Smirnov 检验
假设我们有以下两个示例数据集:
#make this example reproducible seed(0) #generate two datasets data1 <- rpois(n= 20 , lambda= 5 ) data2 <- rnorm( 100 )
以下代码显示如何对这两个样本执行 Kolmogorov-Smirnov 检验,以确定它们是否来自同一分布:
#perform Kolmogorov-Smirnov test
ks.test(data1, data2)
Two-sample Kolmogorov–Smirnov test
data: data1 and data2
D = 0.99, p-value = 1.299e-14
alternative hypothesis: two-sided
从结果中,我们可以看到检验统计量为0.99 ,相应的 p 值为1.299e-14 。由于 p 值小于 0.05,我们拒绝原假设。我们有足够的证据表明这两个样本数据集并非来自同一分布。
这个结果也应该不足为奇,因为我们使用泊松分布生成第一个样本的值,使用正态分布生成第二个样本的值。
其他资源
如何在 R 中执行 Shapiro-Wilk 检验
如何在 R 中执行 Anderson-Darling 测试
如何在 R 中执行多元正态性检验