Me gustaría utilizar dos muestras Prueba de Kolmogorov-Smirnov para comprobar si dos muestras dadas proceden de distribuciones diferentes. Para ello utilizo implementación de scipy de la prueba KS.
He descubierto que en algunos casos, cuando las muestras provienen obviamente de dos distribuciones diferentes, el KS no lo "ve" (los valores de p son altos (alrededor de 0,1)). En particular, la prueba T "ve" claramente que las medias de dos distribuciones son diferentes (valor p en torno a 10^-10
). En otras palabras, las pruebas T ven que las medias de dos distribuciones son diferentes por KS no ve que las distribuciones son diferentes.
El siguiente es un ejemplo que reproduce este comportamiento. Una muestra se genera con dos gaussianos con medias 0 y -10 mientras que otra muestra se genera con una mezcla con medias 0 y 10. La prueba KS no "ve" la diferencia entre las muestras:
import random
from scipy import stats
shift = 10.0
prob = 0.07
for i in range(20):
ls1 = [
random.normalvariate(-shift, 1.0) if random.uniform(0.0, 1.0) < prob
else random.normalvariate(0.0, 1.0)
for i in range(1000)]
ls2 = [
random.normalvariate( shift, 1.0) if random.uniform(0.0, 1.0) < prob
else random.normalvariate(0.0, 1.0)
for i in range(1000)]
ks_2samp = stats.ks_2samp(ls1, ls2).pvalue
ttest_ind = stats.ttest_ind(ls1, ls2).pvalue
print ks_2samp, ttest_ind
Este es el resultado:
0.16580778180902842 9.060856080948288e-12
0.01851544068151054 5.898586305260549e-14
0.00427744491524331 9.7049212240596e-16
0.027130694162290223 1.0689263790159754e-14
0.010125210232304454 3.296184221499672e-14
0.0006280816342195499 1.0177034143495455e-18
0.03264195164443303 1.4076742121406555e-12
0.09090010387130891 1.2443419177675215e-13
0.01851544068151049 2.747214603788716e-15
0.01851544068151049 8.121824308260815e-14
0.00427744491524331 5.6988053773438894e-18
0.006634750962621394 1.3293198764640583e-13
0.05547862104852167 2.8550937455660035e-14
0.2828891626185374 6.495297514372301e-09
0.006634750962621394 3.0442842979678378e-15
0.07742034064789591 3.278591079385276e-12
0.046677646772462215 4.576882344667905e-13
0.00821290761051498 1.0193621244783236e-15
0.02713069416229027 2.6797479930917613e-16
0.012432141728521352 6.9673275270114e-15
También he intentado encontrar dos muestras (ambas con 200 números) de forma que el valor p de la prueba T sea lo más pequeño posible y el valor p de la prueba KS esté por encima de 0.06
. He encontrado muestras en las que la prueba KS da un valor p = 0,0622 y la prueba KS da 1.71e-10
. Así es como se ven las dos distribuciones:
Y aquí está la suma acumulada de los elementos ordenados de dos conjuntos:
Entonces, mi pregunta es si se sabe que la prueba KS falla en algunos casos especiales y, si es así, cuáles son esos casos.