使用 Kolmogorov-Smirnov 检验比较两个 ECDF(替代假设)

机器算法验证 r kolmogorov-smirnov 测试 经验累积分布
2022-04-01 06:23:08

我正在随着时间的推移测量计算机系统的性能,我想了解随着时间的推移性能是否会下降或提高..

在做了一些研究之后,我选择了KS测试来进行这个比较,我想确认我对这个问题的双样本KS测试的理解和应用实际上是正确的还是我做的完全错误。

无论如何,我有一些时间序列数据,测量我在 11 月和 12 月的系统响应时间(以毫秒为单位)。以下是示例结果,为简洁起见总结:

Label: "December 2015"
Samples: 3082
Percentiles:
   0%     10%     50%     25%     50%     75%    90%     99%    100%
   25.0   275.0   550.0   400.0   550.0   825.0  1425.0  9242.5 12500.0

Label: "November 2015"
Samples: 3717
Percentiles:
   0%   10%   50%   25%   50%   75%   90%   99%  100%
   25   275   550   375   550   775  1425 10346 11225

我从直方图生成 ECDF 并使用以下方法绘制R

ggplot(data.frame, aes(x=value)) + stat_ecdf(aes(colour=label)) ...

结果图如下所示:

在此处输入图像描述

从目测来看,很明显,12 月的结果普遍好于 11 月,尤其是在前四分之一。

我使用不同的替代假设对以下数据进行了两个样本的 KS 检验:

ks.ts <- ks.test(cdf_November, cdf_December, alternative = "two.sided")
ks.lt <- ks.test(cdf_November, cdf_December, alternative = "less")
ks.gt <- ks.test(cdf_November, cdf_December, alternative = "greater")

这导致以下结果:

Two-sample Kolmogorov-Smirnov test
[1] "CDF(x) =  November 2015"
[1] "CDF(y) =  December 2015"

Hypothesis:  two-sided (equal)
KS-statistic (D-value) =  0.0369063
p-value =  0.02030601

Hypothesis:  the CDF of x lies below that of y
KS-statistic (D-value) =  0.01177649
p-value =  0.6266612

Hypothesis:  the CDF of x lies above that of y
KS-statistic (D-value) =  0.0369063
p-value =  0.01015301

如果我理解了 KS 测试并正确解释了结果,这就是测试告诉我的关于我的数据的内容:

假设 #1:两侧(相等)

两个分布相同的概率为 2.03%(p 值 = 0.02030601)。

假设 #2:x 的 CDF 低于 y

CDF(11 月)比 CDF(12 月)差的概率为 62.6%(p 值 = 0.6266612)。

假设 #3:x 的 CDF 高于 y

CDF(11 月)优于 CDF(12 月)的概率为 1.01%(p 值 = 0.01015301)。

因此,我可以肯定地说,11 月比 12 月更糟。

我是否正确解释了结果,或者我完全误解了测试(可能还有测试的目的/应用)?

-- ab1

2个回答

首先,请注意您对 p 值含义的理解是不正确的。例如:

假设 #1:两侧(相等)

两个分布相同的概率为 2.03%(p 值 = 0.02030601)。

不是这种情况。p 值不是原假设为真的概率。正确的定义是:如果原假设为真(您不知道),则 p 值是您获得特定检验统计量*值的(最大)概率,您从您的样本中计算出纯粹的机会

如果 p 值被认为是“非常低”(多少,由您决定通过规定 p 值阈值,例如传统上的 0.05),那么您可能会说检验统计量似乎不太可能值偶然来自零分布(尽管它可以!),因此拒绝零假设是合理的。

其次,使用 t 检验(如果原始数据近似正态分布)仅比较 11 月/12 月之间系统响应时间的平均值,或者将样本位置与 Wilcoxon-Mann 进行比较,会不会更容易? -惠特尼 U 测试?请注意,我不熟悉手头的任务,所以这可能是一个完全无用的建议。


*通常,测试统计量是您从样本中计算出的数字。如果原假设为真,它的分布就是原分布。对于 KS 测试,测试统计量是两个(经验)CDF 之间的最大差异。

抱歉,我认为您误解了此指标的目的。KS 给出了一个关于两个数据集分布相似性的标准。在这种情况下,p 值表示两个数据集具有相同分布的概率。