J'aime votre question, mais malheureusement ma réponse est NON, cela ne prouve pas H0 . La raison est très simple. Comment sauriez-vous que la distribution des valeurs de p est uniforme? Vous devrez probablement effectuer un test d'uniformité qui vous renverra sa propre valeur de p, et vous vous retrouverez avec le même type de question d'inférence que vous tentiez d'éviter, une étape plus loin seulement. Au lieu de regarder la valeur de p du H0 , vous regardez maintenant une valeur de p d'un autre H′0 sur l'uniformité de la distribution des valeurs de p d'origine.
MISE À JOUR
Voici la démonstration. Je génère 100 échantillons de 100 observations à partir de la distribution gaussienne et de Poisson, puis j'obtiens 100 valeurs de p pour le test de normalité de chaque échantillon. Ainsi, la prémisse de la question est que si les valeurs de p proviennent d'une distribution uniforme, cela prouve que l'hypothèse nulle est correcte, ce qui est une affirmation plus forte qu'un habituel "ne parvient pas à rejeter" dans l'inférence statistique. Le problème est que "les valeurs de p sont uniformes" est une hypothèse elle-même, que vous devez en quelque sorte tester.
Dans l'image (première ligne) ci-dessous, je montre les histogrammes des valeurs de p d'un test de normalité pour l'échantillon de Guassian et de Poisson, et vous pouvez voir qu'il est difficile de dire si l'un est plus uniforme que l'autre. C'était mon point principal.
La deuxième ligne montre l'un des échantillons de chaque distribution. Les échantillons sont relativement petits, vous ne pouvez donc pas avoir trop de bacs. En fait, cet échantillon gaussien particulier ne semble pas du tout gaussien du tout sur l'histogramme.
Dans la troisième rangée, je montre les échantillons combinés de 10 000 observations pour chaque distribution sur un histogramme. Ici, vous pouvez avoir plus de bacs et les formes sont plus évidentes.
Enfin, je lance le même test de normalité et j'obtiens des valeurs de p pour les échantillons combinés et il rejette la normalité pour Poisson, tout en échouant pour la gaussienne. Les valeurs de p sont: [0.45348631] [0.]
Ce n'est pas une preuve, bien sûr, mais la démonstration de l'idée que vous feriez mieux d'exécuter le même test sur l'échantillon combiné, au lieu d'essayer d'analyser la distribution des valeurs de p à partir des sous-échantillons.
Voici le code 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()