Test d'hypothèse bayésienne sans larmes
Tests objectifs d'hypothèses bayésiennes qui ne souffrent pas des problèmes inhérents à l'approche standard et fonctionnent donc bien dans la pratique :
Installation Actuellement non enregistré, pour installer, saisissez ce qui suit (à l'invite Julia) :
julia> ]
(v1.0) pkg> add https://github.com/tszanalytics/BayesTesting.jl.git
Fonctions actuellement disponibles (package en cours de développement)
Fonctions ajoutées (voir BayesTesting.jl_docs_2018.pdf pour plus de détails) : Bayesian_ttest, corrélation_ttest, compare_means, compare_proportions, equiv_test
Test d'hypothèse :
Paramètre facultatif dans les fonctions suivantes : h0= valeur dans l'hypothèse de coque (la valeur par défaut est h0 = 0)
pdr_val(theta_draws) = renvoie le rapport de densité postérieur (PDR, alias cotes postérieures), tail_prob, 2xtail_prob (une "valeur p bayésienne)
todds(theta_hat,theta_hat_se,v) = renvoie les cotes postérieures de Student-t pour thêta
mcodds(theta_draws) = renvoie les cotes postérieures étant donné l'échantillon MC pour thêta (n'importe quelle distribution).
bayespval(theta_draws) = renvoie la valeur p bayésienne (zone de la queue) donne un échantillon MC pour thêta
Inférence postérieure :
update_mean(m1,m0,s1,s0,n1,n0) = Pour l'échantillon postérieur gaussien 1 (ou antérieur) avec moyenne = m0, sd = s0, nombre d'obs. =n0, et vraisemblance gaussienne ou postérieure pour l'échantillon 2 avec moyenne = m1, SD = s1, nombre d'obs. = n1, renvoie un tuple de la moyenne postérieure de l'échantillon combiné = m2, SD = s2, nombre d'obs. = n2
marginal_postior_mu (m, s, n, M) = retour M tire de la densité marginale postérieure de Student-t avec moyenne = m, SD = s, nombre d'obs. = n. M est un argument facultatif (la valeur par défaut est M = 10 000).
blinreg(y,X) = estimer un modèle linéaire y=Xβ+u (définir X pour contenir le vecteur de uns pour une intersection)
gsreg(y,X) = Échantillonneur de Gibbs pour la régression linéaire avec un a priori non informatif par défaut, X doit contenir un vecteur de uns pour inclure l'interception. Paramètres facultatifs : tau = valeur de départ de précision (par défaut = 1,0) M = taille de l'échantillon MCMC (par défaut = 10 000)
gsreg(y,X, M=m, tau=t, b0=priorb, iB0 = invpriorcovb , d0=b, a0=a) = Échantillonneur Gibbs avec NIG prior. Remarque : iB0 = matrice de précision a priori = inv (matrice de variance a priori) b0 doit être un vecteur colonne, a0 et b0 sont des paramètres a priori pour tau ~ Gamma(a,b)
Exemple 1 : tester si la moyenne d'un échantillon est égale à zéro
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
Aide plus détaillée et exemples dans : BayesTesting.jl_docs_2018.pdf
AJOUTÉ : fonctions compare_means et compare_proportions
Sera bientôt ajouté en tant que PlotRecipe aux fonctions du package.
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
Exemple d'utilisation de la fonction 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)