Estoy tratando de entender el resultado de la función de prueba de Kolmogorov-Smirnov (dos muestras, dos caras). Aquí hay una prueba simple.
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
Hay algunas cosas que no entiendo aquí.
De la ayuda , parece que el valor p se refiere a la hipótesis
var1=var2
. Sin embargo, aquí eso significaría que la prueba dice (p<0.05
):a. No puedo decir eso
X = Y
;si. Puede decir eso
X = Z
;C. No puedo decir eso
X = X
(!)
Además de parecer que x es diferente de sí mismo (!), También es bastante extraño para mí x=z
, ya que las dos distribuciones tienen cero soporte superpuesto. ¿Cómo es eso posible?
Según la definición de la prueba,
D
debería ser la máxima diferencia entre las dos distribuciones de probabilidad, pero por ejemplo en el caso(x,y)
que debe serD = Max|P(x)-P(y)| = 4
(en el caso cuandoP(x)
,P(y)
no están normalizados) oD=0.3
(si es que se normalizan). ¿Por qué D es diferente de eso?He hecho un ejemplo intencionalmente con muchos vínculos , ya que los datos con los que estoy trabajando tienen muchos valores idénticos. ¿Por qué esto confunde la prueba? Pensé que calculaba una distribución de probabilidad que no debería verse afectada por los valores repetidos. ¿Alguna idea?
fuente
dgof::ks.test(x,y,simulate.p.value=TRUE, B=1000)
yMatching::ks.boot(x,y, nboots=1000)
( sekhon.berkeley.edu/matching/ks.boot.html ). Tanto D como el valor p calculado son absolutamente idénticos en ambos casos. Esto me hace pensar que quizás KS no sea tan malo, incluso cuando uno tiene varios vínculos y no se garantiza que el método funcione. La razón por la que me gusta KS es que no es paramétrica, es decir, no necesito asumir una distribución para las muestras.D(x,y) = sqrt(100/20)*0.3=0.67
, lo que sigue siendo diferente.Para calcular la D (desde
ks.test
código):fuente