Bayesianische Hypothesenprüfung ohne Tränen
Objektive bayesianische Hypothesentests, die nicht unter den Problemen des Standardansatzes leiden und daher in der Praxis gut funktionieren:
Installation Derzeit nicht registriert. Geben Sie zum Installieren Folgendes ein (an der Julia-Eingabeaufforderung):
julia> ]
(v1.0) pkg> add https://github.com/tszanalytics/BayesTesting.jl.git
Derzeit verfügbare Funktionen (Paket befindet sich in Entwicklung)
Hinzugefügte Funktionen (siehe BayesTesting.jl_docs_2018.pdf für Details) : Bayesian_ttest, Correlation_ttest, Compare_means, Compare_Proportions, Equiv_test
Hypothesentest:
Optionaler Parameter in folgenden Funktionen: h0= Wert in der Hüllenhypothese (Standard ist h0 = 0)
pdr_val(theta_draws) = gibt das hintere Dichteverhältnis (PDR, auch bekannt als hintere Quoten) zurück, tail_prob, 2xtail_prob (ein „Bayesianischer p-Wert“)
todds(theta_hat,theta_hat_se,v) = gibt Student-t-posterior-Quoten für Theta zurück
mcodds(theta_draws) = gibt hintere Quoten bei gegebener MC-Stichprobe für Theta (beliebige Verteilung) zurück.
bayespval(theta_draws) = gibt den Bayes'schen p-Wert (Schwanzbereich) zurück und ergibt eine MC-Probe für Theta
Hintere Schlussfolgerung:
update_mean(m1,m0,s1,s0,n1,n0) = Für Gaußsche hintere Stichprobe 1 (oder früher) mit Mittelwert = m0, sd = s0, Anzahl der Obs. =n0 und Gaußsche Wahrscheinlichkeit oder Posterior für Stichprobe 2 mit Mittelwert = m1, SD = s1, Anzahl der Obs. = n1, gibt Tupel der kombinierten Stichprobe zurück, hinterer Mittelwert = m2, SD = s2, Anzahl der Obs. = n2
marginal_posterior_mu(m,s, n, M) = return M bezieht sich auf die marginale posteriore Dichte von Student-t mit Mittelwert = m, SD = s, Anzahl der Beobachtungen. = n. M ist ein optionales Argument (Standard ist M = 10000).
blinreg(y,X) = schätze ein lineares Modell y=Xβ+u (definiere X so, dass es einen Einsenvektor für einen Achsenabschnitt enthält)
gsreg(y,X) = Gibbs-Sampler für lineare Regression mit standardmäßigem, nicht aussagekräftigem Prior, Optionale Parameter: Tau = Präzisionsstartwert (Standard = 1,0) M = MCMC-Stichprobengröße (Standard = 10.000)
gsreg(y,X, M=m, tau=t, b0=priorb, iB0 = invpriorcovb , d0=b, a0=a) = Gibbs-Sampler mit NIG-Priorität. Hinweis: iB0 = vorherige Präzisionsmatrix = inv(vorherige Varianzmatrix) b0 muss ein Spaltenvektor sein, a0 und b0 sind vorherige Parameter für tau ~ Gamma(a,b)
Beispiel 1: Testen, ob ein Stichprobenmittelwert gleich Null ist
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
Ausführlichere Hilfe und Beispiele in: BayesTesting.jl_docs_2018.pdf
HINZUGEFÜGT: Funktionen „compare_means“ und „compare_proportions“.
Wird bald als PlotRecipe zu Paketfunktionen hinzugefügt.
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
Beispiel für die Verwendung der Funktion 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)