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



我正在尝试计算 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内(因此也嵌套在C1C2内)

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


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

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.

我还需要(如果可能的话)包括随机截距和斜率之间的相关性judge

请随意在答案中使用任何其他软件包(例如,rstanbridgesampling)。


一些其他问题:

  • 我是否需要在BF10上执行任何转换,或者我可以将其解释为它吗?
  • 什么是默认先验?

协变量必须是一个"因子"。 在您的情况下,不仅仅是"法官","脸","C1"和"C2"也需要成为一个因素。

DT$C1 = factor(DT$C1)

最新更新