我正在尝试计算 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
-
judge
和face
是随机因子,使得face
与judge
交叉但嵌套在cond
内(因此也嵌套在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
。
我设法计算了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
。
请随意在答案中使用任何其他软件包(例如,rstan
,bridgesampling
)。
一些其他问题:
- 我是否需要在BF10上执行任何转换,或者我可以将其解释为它吗?
- 什么是默认先验?
协变量必须是一个"因子"。 在您的情况下,不仅仅是"法官","脸","C1"和"C2"也需要成为一个因素。
DT$C1 = factor(DT$C1)