He leído estas dos preguntas ¿por Qué son los p-valores uniformemente distribuidos bajo la hipótesis nula? y la Comprensión de scipy prueba de Kolmogorov-Smirnov
Y esto me inspiró el siguiente experimento.
Yo considero que un número (100) de las muestras aleatorias de 10000 números cada uno, a partir de la distribución uniforme:
import numpy as np
from scipy.stats import kstest
np.random.seed(1)
data = np.random.rand(1e6).reshape(100, -1) # Retrieve 100 samples of 10000 random numbers
pvals = np.array([kstest(data[i, :], 'uniform')[1] for i in range(100)]) # Use KS test to determine the p-value that they are drawn from a uniform distribution
El valor de p debe ser distribuido de manera uniforme entre 0 y 1, debido a que la hipótesis nula de que cada muestra se extrae de la distribución uniforme es cierto. En el código, pvals
contiene los valores de p, y debe ser distribuido de manera uniforme entre 0 y 1. ¿Cómo puedo probar que se distribuyen de manera uniforme? Así, con otro KS prueba de la p-valores de los mismos. En efecto:
kstest(pvals, 'uniform') # gives (0.066826050153764194, 0.78391523133790764)
Mi pregunta es: ¿cómo de malo si una muestra de falla de cada uno de sus KS prueba, por lo que el valor p de la distribución no uniforme? Que es, a causa de la segunda prueba de KS a fallar así? Vamos a inyectar un par de pruebas fallidas, y ver los resultados:
for i in range(100):
pvals[i] = 1.e-1000000000000000000
print(i+1, kstest(pvals, 'uniform'))
1 (0.076826050153764203, 0.58422275090933029)
2 (0.076826050153764203, 0.58422275090933029)
3 (0.086826050153764212, 0.41822788102030262)
4 (0.08849630728801916, 0.39396788117495984)
5 (0.098496307288019169, 0.26906188301811063)
6 (0.10849630728801915, 0.1764729585550886)
7 (0.11849630728801916, 0.11114480850529129)
8 (0.12849630728801917, 0.067209484059870706)
9 (0.13849630728801915, 0.039015977679199176)
10 (0.14849630728801916, 0.021740018916014403)
11 (0.15849630728801917, 0.011625520543988133)
[...]
Esto me dice que para la segunda prueba de KS para reconocer que el p-valor de la distribución no es uniforme con la confianza de 0.99, debo inyectar 11 pruebas fallidas, cada uno tan malo como el p-valor = 1.e-1000000000000000000.
Intuitivamente, sin embargo, yo esperaba que la probabilidad de conseguir uno de los 100 valores de p menor o igual a 1.e-1000000000000000000 vendría dado por:
Donde . Esta expresión es del orden de 1.e-999999999999999998, o en términos simples (como yo) bastante improbable. Dónde está mi intuición mal?