การทดสอบสมมติฐานแบบเบย์โดยไม่มีน้ำตา
การทดสอบสมมติฐานแบบเบย์เชิงวัตถุประสงค์ที่ไม่ประสบปัญหาที่มีอยู่ในแนวทางมาตรฐาน และทำงานได้ดีในทางปฏิบัติ:
การติดตั้ง ไม่ได้ลงทะเบียนในปัจจุบัน หากต้องการติดตั้ง ให้ป้อนข้อมูลต่อไปนี้ (ที่พรอมต์ของ Julia):
julia> ]
(v1.0) pkg> add https://github.com/tszanalytics/BayesTesting.jl.git
ฟังก์ชั่นที่มีอยู่ในปัจจุบัน (แพ็คเกจอยู่ระหว่างการพัฒนา)
ฟังก์ชั่นที่เพิ่ม (ดู BayesTesting.jl_docs_2018.pdf สำหรับรายละเอียด) : Bayesian_ttest, correlation_ttest, comparison_means, comparison_proportions, equiv_test
การทดสอบสมมติฐาน:
พารามิเตอร์ทางเลือกในฟังก์ชันต่อไปนี้: h0= ค่าในสมมติฐานของตัวถัง (ค่าเริ่มต้นคือ h0 = 0)
pdr_val(theta_draws) = ส่งกลับอัตราส่วนความหนาแน่นหลัง (PDR หรือที่เรียกว่าอัตราต่อรองด้านหลัง), tail_prob, 2xtail_prob ("ค่า p แบบเบย์)
todds(theta_hat,theta_hat_se,v) = ส่งกลับอัตราต่อรองของนักเรียน-t สำหรับทีต้า
mcodds(theta_draws) = ส่งคืนอัตราต่อรองหลังที่กำหนดตัวอย่าง MC สำหรับทีต้า (การแจกแจงแบบใดก็ได้)
bayespval(theta_draws) = ส่งคืนค่า p-value แบบเบย์ (พื้นที่ส่วนท้าย) ให้ตัวอย่าง MC สำหรับทีต้า
การอนุมานภายหลัง:
update_mean(m1,m0,s1,s0,n1,n0) = สำหรับตัวอย่างหลังแบบเกาส์เซียน 1 (หรือก่อนหน้า) โดยมีค่าเฉลี่ย = m0, sd = s0 จำนวน obs =n0 และความน่าจะเป็นแบบเกาส์เซียนหรือหลังสำหรับตัวอย่าง 2 โดยมีค่าเฉลี่ย = m1, SD = s1 จำนวน obs = n1 ส่งคืนทูเพิลของค่าเฉลี่ยหลังตัวอย่างที่รวมกัน = m2, SD = s2, จำนวน obs = เอ็น2
marginal_posterior_mu(m,s, n, M) = return M ดึงมาจาก Student-t ความหนาแน่นด้านหลังส่วนขอบโดยมีค่าเฉลี่ย = m, SD = s, จำนวน obs = น. M เป็นอาร์กิวเมนต์ที่เป็นทางเลือก (ค่าเริ่มต้นคือ M = 10,000)
blinreg(y,X) = ประมาณค่าโมเดลเชิงเส้น y=Xβ+u (กำหนด X เพื่อให้มีเวกเตอร์ของตัวแบบสำหรับการสกัดกั้น)
gsreg(y,X) = Gibbs Sampler สำหรับการถดถอยเชิงเส้นโดยมีค่าเริ่มต้นที่ไม่ให้ข้อมูลมาก่อน X ต้องมีเวกเตอร์ของเวกเตอร์เพื่อรวมจุดตัดกัน พารามิเตอร์เสริม: tau = ค่าเริ่มต้นที่แม่นยำ (ค่าเริ่มต้น = 1.0) M = ขนาดตัวอย่าง MCMC (ค่าเริ่มต้น = 10,000)
gsreg(y,X, M=m, tau=t, b0=priorb, iB0 = invpriorcovb , d0=b, a0=a) = Gibbs ตัวอย่างที่มี NIG ก่อนหน้า หมายเหตุ: iB0 = เมทริกซ์ความแม่นยำก่อนหน้า = inv(เมทริกซ์ความแปรปรวนก่อนหน้า) b0 ต้องเป็นเวกเตอร์คอลัมน์ a0 และ b0 เป็นพารามิเตอร์ก่อนหน้าสำหรับ tau ~ Gamma(a,b)
ตัวอย่างที่ 1: การทดสอบว่าค่าเฉลี่ยตัวอย่างเท่ากับศูนย์หรือไม่
using BayesTesting
srand(1235) # generate psuedo-data, n obs.
n = 50
x = randn(n)
v = n-1 # degrees of freedom
mu_hat = mean(x) # sample mean
se_mu = std(x)/sqrt(v) # sample standard error of mean
todds(mu_hat,se_mu,v) # posterior odds vs. zero
# Result: todds(mu_hat, se_mu, v, h0=0) = 1.016 => 1:1 odds against the null.
# with a nonzero mean - change the data generating process for x above to:
x = 0.5 + randn(n)
# Resulting posterior odds: todds(mu_hat, se_mu, v, h0=0) = 110.50 => 110:1 odds against the null
ความช่วยเหลือและตัวอย่างโดยละเอียดเพิ่มเติมใน: BayesTesting.jl_docs_2018.pdf
เพิ่ม: ฟังก์ชัน comparison_means และ comparison_proportions
จะถูกเพิ่มเป็น PlotRecipe ในแพ็คเกจฟังก์ชันเร็วๆ นี้
function plot_mc_diff(draws_m1,draws_m2; lbl=["mu 1" "mu 2"],lgd = :topright)
diff_mean = draws_m1 - draws_m2
l = @layout([a b])
plt1 = plot(draws_m1,st=:density,fill=(0,0.4,:blue),alpha=0.4,label=lbl[1],legend=lgd,title="Posteriors from each mean")
plot!(draws_m2,st=:density,fill=(0,0.4,:red),alpha=0.4,label=lbl[2])
plt2 = plot(diff_mean,st=:density,fill=(0,0.4,:green),alpha=0.4,label="",title="Posterior difference")
vline!([0.0],color=:black,label="")
plt3 = plot(plt1, plt2, layout=l)
return plt3
end
ตัวอย่างการใช้ฟังก์ชัน plot_mc_diff
m1 = 1.0; s1 = 0.8; n1 = 10; m2 = 0.0; s2 = 1.0; n2 = 20
diff_mean, draws_m1, draws_m2, qs, tst = compare_means(m1, m2, s1, s2, n1, n2)
plt = plot_mc_diff(draws_m1,draws_m2)