Sorunuzu beğendim ama maalesef cevabım HAYIR, H0 olduğunu kanıtlamıyor . Sebep çok basit. P değerlerinin dağılımının tek tip olduğunu nasıl bildin? Muhtemelen, size kendi p-değerini geri getirecek bir tek biçimlilik testi yapmak zorunda kalacaksınız ve kaçınmaya çalıştığınız aynı çıkarım sorusu ile bitirdiniz, sadece bir adım daha ileride. Orijinal H0 nın p değerine bakmak yerine , şimdi orijinal p-değerlerinin dağılımının tek biçimliliği hakkında başka bir H′0 değerine bakıyorsunuz .
GÜNCELLEŞTİRME
İşte gösteri. Gaussian ve Poisson dağılımından 100 gözlemden 100 örnek üretiyorum, ardından her bir örneğin normalite testi için 100 p-değeri elde ettim. Dolayısıyla, sorunun öncülü, eğer p-değerleri tekdüze dağılımdan geliyorsa, o zaman, normal çıkarımda istatistiksel bir çıkarımda "reddetme" den daha güçlü bir ifade olan sıfır hipotezinin doğru olduğunu kanıtlar. Sorun şu ki, "p-değerleri tekdüzedir", bir şekilde denemeniz gereken bir hipotezdir.
Aşağıdaki resimde (ilk satır) Guassian ve Poisson örneği için bir normallik testinden p değerlerinin histogramlarını gösteriyorum ve birinin diğerinden daha tek tip olup olmadığını söylemenin zor olduğunu görebilirsiniz. Bu benim ana noktamdı.
İkinci satır, her dağıtımdan örneklerden birini gösterir. Numuneler nispeten küçüktür, bu yüzden gerçekten çok fazla kutuya sahip olamazsınız. Aslında, bu belirli Gaussian örneği, histogramda o kadar fazla Gauss'a benzemiyor.
Üçüncü satırda, her bir dağıtım için 10.000 gözlemin birleştirilmiş örneklerini bir histogram üzerinde gösteriyorum. Burada, daha fazla kutuya sahip olabilirsiniz ve şekiller daha belirgindir.
Sonunda, aynı normallik testini yapıyorum ve birleştirilmiş numuneler için p-değerleri alıyorum ve Gaussian için reddetmediği halde Poisson için normallik reddediyorum. P değerleri şunlardır: [0.45348631] [0.]
Elbette bu bir kanıt değil, p-değerlerinin alt örneklerden dağılımını analiz etmek yerine, aynı testi birleştirilmiş örnek üzerinde daha iyi yaptığınız fikrinin kanıtıdır.
İşte Python kodu:
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()