Gostei da sua pergunta, mas infelizmente minha resposta é NÃO, ela não prova . O motivo é muito simples. Como você saberia que a distribuição dos valores-p é uniforme? Você provavelmente teria que executar um teste de uniformidade que retornará seu próprio valor-p e acabará com o mesmo tipo de pergunta de inferência que estava tentando evitar, apenas um passo adiante. Em vez de olhar para o valor p do original , agora você olha para o valor p de outro sobre a uniformidade da distribuição dos valores p originais.H0 0H0 0H′0 0
ATUALIZAR
Aqui está a demonstração. Gero 100 amostras de 100 observações da distribuição Gaussiana e Poisson e, em seguida, obtenho 100 valores de p para o teste de normalidade de cada amostra. Portanto, a premissa da pergunta é que, se os valores-p são de distribuição uniforme, isso prova que a hipótese nula está correta, o que é uma afirmação mais forte do que uma usual "falha em rejeitar" na inferência estatística. O problema é que "os valores-p são uniformes" é uma hipótese em si, que você precisa testar de alguma forma.
Na figura (primeira linha) abaixo, estou mostrando os histogramas dos valores-p de um teste de normalidade para a amostra de Guassian e Poisson, e você pode ver que é difícil dizer se um é mais uniforme que o outro. Esse foi o meu ponto principal.
A segunda linha mostra uma das amostras de cada distribuição. As amostras são relativamente pequenas, portanto você não pode ter muitos compartimentos. Na verdade, essa amostra gaussiana em particular não parece muito gaussiana no histograma.
Na terceira linha, estou mostrando as amostras combinadas de 10.000 observações para cada distribuição em um histograma. Aqui, você pode ter mais caixas e as formas são mais óbvias.
Finalmente, eu executo o mesmo teste de normalidade e obtenho valores de p para as amostras combinadas e ele rejeita a normalidade para Poisson, embora não rejeite a gaussiana. Os valores de p são: [0,45348631] [0]
Esta não é uma prova, é claro, mas a demonstração da ideia de que é melhor executar o mesmo teste na amostra combinada, em vez de tentar analisar a distribuição dos valores-p das subamostras.
Aqui está o código 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()