Prueba de hipótesis bayesiana sin lágrimas
Prueba de hipótesis bayesiana objetiva que no sufre los problemas inherentes al enfoque estándar y, por lo tanto, funciona bien en la práctica:
Instalación Actualmente no registrado, para instalar, ingrese lo siguiente (en el indicador de Julia):
julia> ]
(v1.0) pkg> add https://github.com/tszanalytics/BayesTesting.jl.git
Funciones actualmente disponibles (el paquete está en desarrollo)
Funciones agregadas (consulte BayesTesting.jl_docs_2018.pdf para obtener más detalles) : Bayesian_ttest, correlación_ttest, compare_means, compare_proportions, equiv_test
Prueba de hipótesis:
Parámetro opcional en las siguientes funciones: h0= valor en la hipótesis del casco (el valor predeterminado es h0 = 0)
pdr_val(theta_draws) = devuelve la relación de densidad posterior (PDR, también conocida como probabilidades posteriores), tail_prob, 2xtail_prob (un "valor p bayesiano)
todds(theta_hat,theta_hat_se,v) = devuelve probabilidades posteriores de Student-t para theta
mcodds(theta_draws) = devuelve probabilidades posteriores dada la muestra de MC para theta (cualquier distribución).
bayespval(theta_draws) = devuelve el valor p bayesiano (área de la cola) proporciona una muestra de MC para theta
Inferencia posterior:
update_mean(m1,m0,s1,s0,n1,n0) = Para la muestra posterior gaussiana 1 (o anterior) con media = m0, sd = s0, número de obs. =n0, y probabilidad gaussiana o posterior para la muestra 2 con media = m1, SD = s1, número de obs. = n1, devuelve tupla de la media posterior de la muestra combinada = m2, SD = s2, número de obs. = n2
marginal_posterior_mu(m,s, n, M) = retorno M se extrae de la densidad marginal posterior t de Student con media = m, SD = s, número de obs. = n. M es un argumento opcional (el valor predeterminado es M = 10000).
blinreg(y,X) = estimar un modelo lineal y=Xβ+u (definir X para que contenga un vector de unos para una intersección)
gsreg(y,X) = Muestra de Gibbs para regresión lineal con previo no informativo predeterminado, X debe contener un vector de unos para incluir la intersección. Parámetros opcionales: tau = valor inicial de precisión (predeterminado = 1,0) M = tamaño de muestra MCMC (predeterminado = 10.000)
gsreg(y,X, M=m, tau=t, b0=priorb, iB0 = invpriorcovb, d0=b, a0=a) = Muestreador de Gibbs con NIG anterior. Nota: iB0 = matriz de precisión previa = inv(matriz de varianza anterior) b0 debe ser un vector de columna, a0 y b0 son parámetros previos para tau ~ Gamma(a,b)
Ejemplo 1: Probar si la media muestral es igual a cero
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
Ayuda más detallada y ejemplos en: BayesTesting.jl_docs_2018.pdf
AÑADIDO: funciones compare_means y compare_proportions
Pronto se agregará como PlotRecipe a las funciones del paquete.
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
Ejemplo de uso de la función 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)