Проверка байесовской гипотезы без слез
Объективная проверка байесовской гипотезы, которая не страдает от проблем, присущих стандартному подходу, и поэтому хорошо работает на практике:
Установка В настоящее время регистрация не зарегистрирована, для установки введите следующее (в командной строке Julia):
julia> ]
(v1.0) pkg> add https://github.com/tszanalytics/BayesTesting.jl.git
Доступные на данный момент функции (пакет находится в разработке)
Добавлены функции (подробнее см. в BayesTesting.jl_docs_2018.pdf) : Bayesian_ttest, корреляция_ttest, 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) = возвращает апостериорные шансы Стьюдента для теты
mcodds(theta_draws) = возвращает апостериорные шансы для данной выборки MC для теты (любое распределение).
bayespval(theta_draws) = возвращает байесовское значение p (хвостовая область), дает выборку MC для теты
Задний вывод:
update_mean(m1,m0,s1,s0,n1,n0) = Для гауссовской апостериорной выборки 1 (или предшествующей) со средним значением = m0, sd = s0, количеством наблюдений. = n0 и гауссовское правдоподобие или апостериорное значение для образца 2 со средним значением = m1, SD = s1, количеством наблюдений. = n1, возвращает кортеж апостериорного среднего комбинированного образца = m2, SD = s2, количество наблюдений. = п2
Marginal_posterior_mu(m,s, n, M) = возврат M основан на маргинальной апостериорной плотности Стьюдента со средним значением = m, SD = s, количеством наблюдений. = н. M — необязательный аргумент (по умолчанию M = 10000).
blinreg(y,X) = оценить линейную модель y=Xβ+u (определить X, чтобы он содержал вектор единиц для перехвата)
gsreg(y,X) = сэмплер Гиббса для линейной регрессии с неинформативным априором по умолчанию, X должен содержать вектор единиц, чтобы включить перехват. Дополнительные параметры: tau = начальное значение точности (по умолчанию = 1,0) M = размер выборки MCMC (по умолчанию = 10 000)
gsreg(y,X, M=m, tau=t, b0=priorb, iB0 = invpriorcovb, d0=b, a0=a) = сэмплер Гиббса с априорным 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.
ДОБАВЛЕНО: функции Compare_means и Compare_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)