仅截取混合Logistic回归模型与空模型的贝叶斯因子

时间:2019-02-12 18:23:02

标签: r logistic-regression bayesian mixed-models

我想为仅截距混合Logistic回归模型与null模型的截距计算贝叶斯因子。

这是一项针对每个参与者进行了多次成功或失败结果的研究的研究,我们希望评估数据是否更有可能来自M0为真的世界(成功机会为p =每次试验都为0.5),而不是M1为真的世界(人们的成功率与p = 0.5不同,成功率可能会有一些个人差异,即随机拦截)。<​​/ p>

我尝试使用R中的brms软件包来执行此操作。 根据这些指南,应使用以下代码来计算贝叶斯因子: https://rpubs.com/lindeloev/bayes_factors https://mvuorre.github.io/post/2017/03/21/bayes-factors-with-brms/

但是,当我使用hypothesis()函数方法时,Evid.Ratio是NA,并且当我尝试使用intercept = 0拟合空模型以使用bayes_factor()函数时,该空模型不会运行并返回错误消息:

SAMPLING FOR MODEL '7fd1e8370afde87f07b7e1f715ec714c' NOW (CHAIN 1).
[1] "Error in sampler$call_sampler(args_list[[i]]) : "
[2] " Must use algorithm="Fixed_param" for model that has no parameters."
[1] "error occurred during calling the sampler; sampling not done"

这是我的代码:

library(brms)
dat_1 = read.csv("https://raw.githubusercontent.com/kekecsz/Bayes-factor-different-distributions/master/data_all_%200.51_14000.csv")

fit2 <- brm(data_all_H1_pre2 ~ 0 + intercept + (0 + intercept|participant_ID), data = dat_1, family = bernoulli, control = list(adapt_delta = 0.90))

hypothesis(fit2, hypothesis = 'intercept = 0')

fit2_null <- brm(data_all_H1_pre2 ~ 0, data = dat_1,
family = bernoulli,
control = list(adapt_delta = 0.90))

bayes_factor(fit2, fit2_null) # can't run this, because the code above (fit2_null) returns an error.

在上面的示例中,我使用了模拟数据,其中所有参与者的真实成功率为p = 0.51而不是0.5,因此预期结果将是偏向于M1的贝叶斯因子。

我不必使用brms软件包,这只是我所知道的唯一可以处理混合模型的软件包。使用JAGS或rstan的解决方案也可以。

在这种情况下如何计算贝叶斯因子?

0 个答案:

没有答案