Estou tentando entender a saída da função de teste Kolmogorov-Smirnov (duas amostras, duas faces). Aqui está um teste simples.
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
Existem algumas coisas que não entendo aqui.
Com a ajuda , parece que o valor-p se refere à hipótese
var1=var2
. No entanto, aqui isso significaria que o teste diz (p<0.05
):uma. Não posso dizer isso
X = Y
;b. Pode dizer isso
X = Z
;c. Não posso dizer isso
X = X
(!)
Além de parecer que x é diferente de si mesmo (!), Também é bastante estranho para mim que x=z
, como as duas distribuições têm zero suporte sobreposto. Como isso é possível?
De acordo com a definição do teste,
D
deve ser a diferença máxima entre as duas distribuições de probabilidade, mas, por exemplo no caso(x,y)
deve serD = Max|P(x)-P(y)| = 4
(no caso em queP(x)
,P(y)
não são normalizadas) ouD=0.3
(se eles são normalizados). Por que D é diferente disso?Intencionalmente, fiz um exemplo com muitos vínculos , pois os dados com os quais estou trabalhando têm muitos valores idênticos. Por que isso confunde o teste? Eu pensei que calculava uma distribuição de probabilidade que não deveria ser afetada por valores repetidos. Qualquer ideia?
fonte
dgof::ks.test(x,y,simulate.p.value=TRUE, B=1000)
eMatching::ks.boot(x,y, nboots=1000)
( sekhon.berkeley.edu/matching/ks.boot.html ). D e o valor p calculado são absolutamente idênticos em ambos os casos. Isso me faz pensar que talvez o KS não seja tão ruim, mesmo quando se tem vários laços e o método não está garantido para funcionar? A razão pela qual eu gosto do KS é que isso não é paramétrico, ou seja, eu não preciso assumir uma distribuição para as amostras.D(x,y) = sqrt(100/20)*0.3=0.67
, que ainda é diferente.Para calcular o D (do
ks.test
código):fonte