ผมชอบคำถามของคุณ แต่น่าเสียดายที่คำตอบของฉันคือไม่มันไม่ได้พิสูจน์H0 0 เหตุผลง่ายมาก คุณจะรู้ได้อย่างไรว่าการกระจายของ p-values เหมือนกัน? คุณอาจจะต้องทำการทดสอบความสม่ำเสมอซึ่งจะคืนค่า p ให้กับคุณเองและคุณก็จบลงด้วยคำถามอนุมานแบบเดียวกับที่คุณพยายามหลีกเลี่ยงเพียงขั้นตอนเดียวที่ไกลออกไป แทนที่จะมอง p-value ของเดิมH0ตอนนี้คุณมองไปที่ p-value ของผู้อื่นH'0เกี่ยวกับความสม่ำเสมอของการกระจายของเดิม P-ค่า
UPDATE
นี่คือการสาธิต ฉันสร้างการสังเกต 100 ตัวอย่างจากการแจกแจงแบบเกาส์และปัวซอง 100 ครั้งจากนั้นรับค่า p 100 สำหรับการทดสอบความเป็นปกติของแต่ละตัวอย่าง ดังนั้นหลักฐานของคำถามคือถ้า p-value มาจากการแจกแจงแบบเดียวกันมันจะพิสูจน์ว่าสมมติฐานว่างนั้นถูกต้องซึ่งเป็นข้อความที่แข็งแกร่งกว่าปกติ "ไม่สามารถปฏิเสธ" ในการอนุมานทางสถิติ ปัญหาคือว่า "ค่า p มาจากเครื่องแบบ" เป็นข้อสมมติฐานที่คุณต้องทดสอบด้วยวิธีใดวิธีหนึ่ง
ในภาพ (แถวแรก) ด้านล่างฉันกำลังแสดงฮิสโทแกรมของค่า p จากการทดสอบเชิงบรรทัดฐานสำหรับตัวอย่าง Guassian และ Poisson และคุณสามารถเห็นได้ว่าเป็นการยากที่จะพูดว่ามีรูปแบบเดียวกันมากกว่าที่อื่นหรือไม่ นั่นคือประเด็นหลักของฉัน
แถวที่สองแสดงตัวอย่างหนึ่งตัวอย่างจากการแจกแจงแต่ละครั้ง ตัวอย่างมีขนาดค่อนข้างเล็กดังนั้นคุณไม่สามารถมีถังขยะได้มากเกินไป อันที่จริงตัวอย่างแบบเกาส์เซียนแบบนี้ไม่ได้ดูแบบเกาส์ส์จำนวนมากเลยบนกราฟแท่ง
ในแถวที่สามฉันกำลังแสดงตัวอย่างรวม 10,000 ข้อสังเกตสำหรับการแจกแจงแต่ละครั้งบนฮิสโตแกรม ที่นี่คุณสามารถมีถังขยะมากขึ้นและรูปร่างที่ชัดเจนมากขึ้น
ในที่สุดฉันก็ทำการทดสอบปกติและรับค่า p สำหรับตัวอย่างที่รวมกันและมันก็ปฏิเสธความเป็นปรกติสำหรับปัวซองในขณะที่ไม่สามารถปฏิเสธเกาส์เซียน ค่า p คือ: [0.45348631] [0. ]
แน่นอนว่านี่ไม่ใช่ข้อพิสูจน์ แต่เป็นการสาธิตความคิดที่ว่าคุณควรรันการทดสอบเดียวกันบนตัวอย่างที่รวมกันแทนที่จะพยายามวิเคราะห์การกระจายของค่า p จากตัวอย่างย่อย
นี่คือรหัสไพ ธ อน:
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()