اختبار الفرضية البايزية بدون دموع
اختبار فرضية بايزي الموضوعية التي لا تعاني من المشاكل الكامنة في النهج القياسي وبالتالي تعمل بشكل جيد في الممارسة العملية:
التثبيت غير مسجل حاليًا، للتثبيت، أدخل ما يلي (في موجه جوليا):
julia> ]
(v1.0) pkg> add https://github.com/tszanalytics/BayesTesting.jl.git
الوظائف المتاحة حاليًا (الحزمة قيد التطوير)
تمت إضافة الوظائف (راجع BayesTesting.jl_docs_2018.pdf للحصول على التفاصيل) : Bayesian_tttest، وrelation_tttest، وcompare_means، وcompare_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 لثيتا (أي توزيع).
byespval(theta_draws) = يُرجع القيمة p البايزية (منطقة الذيل) ويعطي عينة 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
هامشي_posterior_mu(m,s, n, M) = إرجاع M يستمد من الكثافة الخلفية الهامشية للطلاب بمتوسط = m، SD = s، عدد obs. = ن. M هي وسيطة اختيارية (الافتراضي هو M = 10000).
blinreg(y,X) = تقدير نموذج خطي y=Xβ+u (حدد X ليحتوي على متجهات للتقاطع)
gsreg(y,X) = أداة أخذ عينات Gibbs للانحدار الخطي مع معلومات افتراضية مسبقة غير معلوماتية، يجب أن يحتوي X على متجهات لتضمين التقاطع. المعلمات الاختيارية: تاو = قيمة البداية الدقيقة (الافتراضي = 1.0) M = حجم العينة MCMC (الافتراضي = 10000)
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
تمت الإضافة: وظائف مقارنة_الوسائل ومقارنة_النسب
ستتم إضافته كـ 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)