R中线性混合模型的贝叶斯因子

时间:2019-10-21 15:22:32

标签: r bayesian mixed-models hierarchical-bayesian

我正在尝试使用R中的BayesFactor包为其中一种固定效果计算贝叶斯因子(BF)。

数据具有以下结构:

  • rating是因变量

  • cond是具有3个级别("A""B""C")的自变量

  • C1是源自cond的对比度代码,它与"A"-0.50"B"(编码为"C")相对(两者都编码为-0.25

  • C2是源自cond的对比代码,它与"B"(编码-0.50)与"C"(编码+0.5)相对;并且"A"被编码为0

  • judgeface是随机因素,因此facejudge交叉但嵌套在cond内(因此也嵌套在{ {1}}和C1

C2

理想情况下,我想测试“完整”模型,如下所示:

DT <- fread("http://matschmitz.github.io/dataLMM.csv")
DT[, judge := factor(judge)]
DT[, face  := factor(face)]

# > DT
#       judge face cond    C1  C2 rating
#    1:    66   13    A -0.50 0.0      1
#    2:    20   13    A -0.50 0.0      4
#    3:    22   13    A -0.50 0.0      7
#    4:    69   13    A -0.50 0.0      1
#    5:     7   13    A -0.50 0.0      3
#   ---                                 
# 4616:    45   62    C  0.25 0.5      2
# 4617:    30   62    C  0.25 0.5      6
# 4618:    18   62    C  0.25 0.5      4
# 4619:    40   62    C  0.25 0.5      3
# 4620:    65   62    C  0.25 0.5      1

并计算library(lmerTest) lmer(rating ~ C1 + C2 + (1 + C1 + C2|judge) + (1|face), data = DT) 的BF。


我设法计算了C1的BF,但仅具有随机截距:

C1

我尝试不成功this solution来包含随机斜率:

library(BayesFactor)

BF1 <- lmBF(rating ~ C1 + C2 + judge + face, whichRandom = c("judge", "face"), data = DT)
BF0 <- lmBF(rating ~ C2 + judge + face, whichRandom = c("judge", "face"), data = DT)
BF10 <- BF1 / BF0

# > BF10
# Bayes factor analysis
# --------------
# [1] C1 + C2 + judge + face : 0.4319222 ±15.49%
# 
# Against denominator:
#   rating ~ C2 + judge + face 
# ---
# Bayes factor type: BFlinearModel, JZS

如果可能的话,我还需要包括BF1 <- lmBF(rating ~ C1 + C2 + judge + face + C1:judge + C2:judge, whichRandom = c("judge", "face", "C1:judge", "C2:judge"), data = DT) # Some NAs were removed from sampling results: 10000 in total. 的随机截距和斜率之间的相关性。

请随时在答案中使用其他任何程序包(例如judgerstan)。


一些其他问题:

  • 我需要在BF10上执行任何转换,还是可以将其解释为它?
  • 默认优先级是什么?

1 个答案:

答案 0 :(得分:0)

协变量必须是一个“因素”。 在您的情况下,不仅需要“判断”,“面部”,“ C1”和“ C2”,而且还需要考虑因素。

DT$C1 = factor(DT$C1)