Saya suka pertanyaan Anda, tetapi sayangnya jawaban saya adalah TIDAK, itu tidak membuktikan . Alasannya sangat sederhana. Bagaimana Anda tahu bahwa distribusi nilai-p adalah seragam? Anda mungkin harus menjalankan tes untuk keseragaman yang akan mengembalikan nilai p-nya sendiri, dan Anda berakhir dengan pertanyaan inferensi yang sama dengan yang Anda coba hindari, hanya satu langkah lebih jauh. Alih-alih melihat nilai p dari asli , sekarang Anda melihat nilai p dari lain tentang keseragaman distribusi nilai p asli.H0H0H′0
MEMPERBARUI
Ini demonstrasi. Saya menghasilkan 100 sampel dari 100 pengamatan dari distribusi Gaussian dan Poisson, kemudian memperoleh 100 p-nilai untuk uji normalitas masing-masing sampel. Jadi, premis dari pertanyaan adalah bahwa jika nilai-p berasal dari distribusi yang seragam, maka itu membuktikan bahwa hipotesis nol itu benar, yang merupakan pernyataan yang lebih kuat daripada yang biasanya "gagal ditolak" dalam inferensi statistik. Masalahnya adalah bahwa "nilai-p dari seragam" adalah hipotesis itu sendiri, yang harus Anda uji entah bagaimana.
Pada gambar (baris pertama) di bawah ini saya menunjukkan histogram nilai p dari uji normalitas untuk sampel Guassian dan Poisson, dan Anda dapat melihat bahwa sulit untuk mengatakan apakah satu lebih seragam daripada yang lain. Itulah poin utama saya.
Baris kedua menunjukkan salah satu sampel dari setiap distribusi. Sampelnya relatif kecil, sehingga Anda tidak dapat memiliki terlalu banyak tempat sampah. Sebenarnya, sampel Gaussian khusus ini tidak terlihat sebanyak Gaussian pada histogram.
Di baris ketiga, saya menunjukkan sampel gabungan dari 10.000 pengamatan untuk setiap distribusi pada histogram. Di sini, Anda dapat memiliki lebih banyak tempat sampah, dan bentuknya lebih jelas.
Akhirnya, saya menjalankan tes normalitas yang sama dan mendapatkan nilai-p untuk sampel gabungan dan menolak normalitas untuk Poisson, sementara gagal menolak untuk Gaussian. Nilai-p adalah: [0.45348631] [0.]
Ini bukan bukti, tentu saja, tetapi demonstrasi gagasan bahwa Anda sebaiknya menjalankan tes yang sama pada sampel gabungan, alih-alih mencoba menganalisis distribusi nilai p dari subsamples.
Ini kode 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()