我试图了解 Kolmogorov-Smirnov 测试函数的输出(两个样本,双面)。这是一个简单的测试。
x <- c(1,2,2,3,3,3,3,4,5,6)
y <- c(2,3,4,5,5,6,6,6,6,7)
z <- c(12,13,14,15,15,16,16,16,16,17)
ks.test(x,y)
# Two-sample Kolmogorov-Smirnov test
#
#data: x and y
#D = 0.5, p-value = 0.1641
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, y) : cannot compute exact p-value with ties
ks.test(x,z)
#Two-sample Kolmogorov-Smirnov test
#data: x and z
#D = 1, p-value = 9.08e-05
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, z) : cannot compute exact p-value with ties
ks.test(x,x)
#Two-sample Kolmogorov-Smirnov test
#data: x and x
#D = 0, p-value = 1
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, x) : cannot compute exact p-value with ties
这里有几件事我不明白。
从帮助看来,p 值是指假设
var1=var2
。但是,这意味着测试显示 (p<0.05
):一种。不能这么说
X = Y
;湾。可以这么说
X = Z
;C。不能这么说
X = X
(!)
除了看起来 x 与自身不同(!)之外,我也很奇怪x=z
,因为这两个分布的重叠支持为零。这怎么可能?
根据测试的定义,
D
应该是两个概率分布之间的最大差异,但例如在这种情况下(x,y)
它应该是D = Max|P(x)-P(y)| = 4
(在P(x)
,P(y)
未归一化的情况下)或D=0.3
(如果它们被归一化)。为什么 D 与此不同?我特意做了一个有很多关系的例子,因为我正在使用的数据有很多相同的值。为什么这会混淆测试?我认为它计算了一个不受重复值影响的概率分布。任何的想法?