Kolmogorov-Smirnov 检验是否有多样本版本或替代方案?

机器算法验证 非参数 kolmogorov-smirnov 测试
2022-01-17 14:28:07

我正在比较六对地块中树木的大小分布,其中一个地块接受处理,另一个地块接受控制。在每对图上使用 Kolmogorov-Smirnov 检验,我发现的范围从是否有任何适当的方法可以同时处理所有重复,例如 KS 测试的多样本扩展,或者是否有适当的后续测试?或者我应该得出类似“两对地块的大小分布显着不同)和)”之类的结论。p0.00037070.75(p<0.05p=0.59

3个回答

实际上有一些多样本 KS 测试。例如,具有的r 样本 Kolmogorov-Smirnov-Test,我相信它具有良好的功效。在此处获得该精美论文的预印本。我也知道Kolmogorov-Smirnov 和 Cramer-V 的 K-Sample 类似物。Mises 测试(但据我所知,它们的功能较少)。r2

有一个 R 包kSamples可以为您提供非参数 k 样本 Anderson-Darling 检验等。原假设是所有 k 个样本都来自不需要指定的相同分布。也许你可以使用这个。

关于比较正态分布和伽马分布样本的小例子,它们按比例缩放以使它们具有相同的均值和方差:

library("kSamples")
set.seed(142)
samp.num <- 100
alpha <- 2.0; theta <- 3.0  # Gamma parameters shape and scale, using Wikipedia notation
gam.mean <- alpha * theta # mean of the Gamma
gam.sd <- sqrt(alpha) * theta # S.D. of the Gamma
norm.data <- rnorm(samp.num, mean=gam.mean, sd=gam.sd)  # Normal with the same mean and SD as the Gamma
gamma.data <- rgamma(samp.num, shape=alpha, scale=theta)
norm.data2 <- rnorm(samp.num, mean=gam.mean, sd=gam.sd)
norm.data3 <- rnorm(samp.num, mean=gam.mean, sd=gam.sd)
ad.same <- ad.test(norm.data,norm.data2,norm.data3) # "not significant, p ~ 0.459"
ad.diff <- ad.test(gamma.data,norm.data2,norm.data3) # "significant, p ~ 0.00066"

几种方法:

使用成对的 p 值,但使用 Bon Feroni 或错误发现率调整(第一个可能有点过于保守)来调整它们以进行多重比较。然后你可以确信任何仍然显着不同的可能不是由于多次测试。

您可以通过找到任何分布之间的最大距离来创建 KS 风格的整体测试,即绘制所有经验 cdf 并找到从最底线到最顶线的最大距离,或者平均距离或其他一些有意义的措施。然后您可以通过排列测试来确定这是否重要:将所有数据分组到 1 个大箱中,然后将其随机分成与原始组具有相同样本大小的组,重新计算排列数据的统计数据并重复该过程多次(999 次左右)。然后查看您的原始数据与置换数据集的比较情况。如果原始数据统计量落在置换的中间,则没有发现显着差异,但如果它位于边缘,或超出任何排列的,然后有一些重要的事情发生(但这并不能告诉你哪些是不同的)。您可能应该使用模拟数据进行尝试,您知道存在足够大的差异以引起人们的兴趣,以检查此测试的功效以找到有趣的差异。