Me gusta tu pregunta, pero desafortunadamente mi respuesta es NO, no prueba . La razón es muy sencilla. ¿Cómo sabrías que la distribución de los valores p es uniforme? Probablemente deba ejecutar una prueba de uniformidad que le devolverá su propio valor p, y terminará con el mismo tipo de pregunta de inferencia que estaba tratando de evitar, solo un paso más. En lugar de mirar el valor p del original , ahora observa el valor p de otro sobre la uniformidad de distribución de los valores p originales.H0 0H0 0H′0 0
ACTUALIZAR
Aquí está la demostración. Genero 100 muestras de 100 observaciones de distribución gaussiana y de Poisson, luego obtengo 100 valores p para la prueba de normalidad de cada muestra. Entonces, la premisa de la pregunta es que si los valores p provienen de una distribución uniforme, entonces demuestra que la hipótesis nula es correcta, lo cual es una afirmación más fuerte que una "falla al rechazar" habitual en inferencia estadística. El problema es que "los valores p son del uniforme" es una hipótesis en sí misma, que de alguna manera hay que probar.
En la imagen (primera fila) a continuación, muestro los histogramas de los valores p de una prueba de normalidad para la muestra de Guassian y Poisson, y puede ver que es difícil decir si uno es más uniforme que el otro. Ese fue mi punto principal.
La segunda fila muestra una de las muestras de cada distribución. Las muestras son relativamente pequeñas, por lo que no puede tener demasiados contenedores. En realidad, esta muestra gaussiana en particular no se ve mucho gaussiana en el histograma.
En la tercera fila, muestro las muestras combinadas de 10,000 observaciones para cada distribución en un histograma. Aquí, puede tener más contenedores, y las formas son más obvias.
Finalmente, ejecuto la misma prueba de normalidad y obtengo valores p para las muestras combinadas y rechaza la normalidad para Poisson, mientras que no puedo rechazar para Gauss. Los valores p son: [0.45348631] [0.]
Esto no es una prueba, por supuesto, sino la demostración de la idea de que es mejor ejecutar la misma prueba en la muestra combinada, en lugar de tratar de analizar la distribución de los valores p de las submuestras.
Aquí está el código de Python:
import numpy as np
from scipy import stats
from matplotlib import pyplot as plt
def pvs(x):
pn = x.shape[1]
pvals = np.zeros(pn)
for i in range(pn):
pvals[i] = stats.jarque_bera(x[:,i])[1]
return pvals
n = 100
pn = 100
mu, sigma = 1, 2
np.random.seed(0)
x = np.random.normal(mu, sigma, size=(n,pn))
x2 = np.random.poisson(15, size=(n,pn))
print(x[1,1])
pvals = pvs(x)
pvals2 = pvs(x2)
x_f = x.reshape((n*pn,1))
pvals_f = pvs(x_f)
x2_f = x2.reshape((n*pn,1))
pvals2_f = pvs(x2_f)
print(pvals_f,pvals2_f)
print(x_f.shape,x_f[:,0])
#print(pvals)
plt.figure(figsize=(9,9))
plt.subplot(3,2,1)
plt.hist(pvals)
plt.gca().set_title('True Normal')
plt.gca().set_ylabel('p-value')
plt.subplot(3,2,2)
plt.hist(pvals2)
plt.gca().set_title('Poisson')
plt.gca().set_ylabel('p-value')
plt.subplot(3,2,3)
plt.hist(x[:,0])
plt.gca().set_title('a small sample')
plt.gca().set_ylabel('x')
plt.subplot(3,2,4)
plt.hist(x2[:,0])
plt.gca().set_title('a small Sample')
plt.gca().set_ylabel('x')
plt.subplot(3,2,5)
plt.hist(x_f[:,0],100)
plt.gca().set_title('Full Sample')
plt.gca().set_ylabel('x')
plt.subplot(3,2,6)
plt.hist(x2_f[:,0],100)
plt.gca().set_title('Full Sample')
plt.gca().set_ylabel('x')
plt.show()