对比 emmeans:post-hoc t-test 作为基线和治疗期间差异的平均差异

Contrast emmeans: post-hoc t-test as the average differences of the differences between baseline and treatment periods

我正在使用 R 中的 lme4 包进行线性混合效应模型 (LMM)。基本上所有参与者都接受了两种干预(一种干预治疗和一种安慰剂(对照)),并被清除期分开。但是,他们接受干预的顺序不同。

LMM 中包含干预和访问的交互项,有八个级别,包括干预(2 个级别:控制和干预)和访问(4 个级别:访问 1=基线 1、访问 2、访问 3)的所有组合=post-随机化基线 2,访视 4)。

我的问题是如何通过 post-hoc t 检验将干预效果确定为干预之间差异的平均差异,因此访问 1 和 2 之间以及访问之间第 3 次和第 4 次访问。我还想确定与基线相比干预和控制的效果。

请看下面的代码:

  model1<- lmer(X ~ treatment_type:visit_code + (1|SID) + (1|SID:period), na.action= na.omit, data = data.x)
emm <- emmeans(model1 , ~treatment_type:visit_code)

我的模型1的结果是:

emm
 treatment_type visit_code  emmean    SE   df lower.CL upper.CL
 Control        T0         -0.2915 0.167 26.0   -0.635   0.0520
 Intervention   T0         -0.1424 0.167 26.0   -0.486   0.2011
 Control        T1         -0.2335 0.167 26.0   -0.577   0.1100
 Intervention   T1          0.0884 0.167 26.0   -0.255   0.4319
 Control        T2          0.0441 0.167 26.0   -0.299   0.3876
 Intervention   T2         -0.2708 0.168 26.8   -0.616   0.0748
 Control        T3          0.1272 0.167 26.0   -0.216   0.4708
 Intervention   T3          0.0530 0.168 26.8   -0.293   0.3987

Degrees-of-freedom method: kenward-roger 
Confidence level used: 0.95

我首先创建了一个矩阵/向量: #名称向量

Control.B1<- c(1,0,0,0,0,0,0,0) #control baseline 1 (visit 1)
Intervention.B1<- c(0,1,0,0,0,0,0,0)  #intervention baseline 1 (visit 1)
Control.A2<- c(0,0,1,0,0,0,0,0) #post control 1 (visit 2)
Intervention.A2<- c(0,0,0,1,0,0,0,0) #post intervention 1 (visit 2)
ControlB3<- c(0,0,0,0,1,0,0,0) #control baseline 2 (visit 3)
Intervention.B3<- c(0,0,0,0,0,1,0,0) #intervention baseline 2 (visit 3)
Control.A4<- c(0,0,0,0,0,0,1,0) #post control 2 (visit 4)
Intervention.A4<- c(0,0,0,0,0,0,0,1) #post intervention 2 (visit 4)

Contbaseline = (Control.B1 + Control.B3)/2 # average of control baseline visits
Intbaseline = (Intervention. B1 + Intervention.B3)/2 # average of intervention baseline visits
ControlAfter= (Control.A2 + Control.A4)/2 # average of after control visits
IntervAfter= (Intervention.A2 + Intervention.A4)/2 # average of after intervention visits

Control.vs.Baseline = (ControlAfter-Contbaseline) 
Intervention.vs.Baseline = (IntervAfter-Intbaseline) 
Control.vs.Intervention = ((Control.vs.Baseline)-(Intervention.vs.Baseline))

这些输出如下:

> Control.vs.Baseline
[1] -0.5  0.0  0.5  0.0 -0.5  0.0  0.5  0.0
> Intervention.vs.Baseline
[1]  0.0 -0.5  0.0  0.5  0.0 -0.5  0.0  0.5
> Control.vs.Intervention
[1] -0.5  0.5  0.5 -0.5 -0.5  0.5  0.5 -0.5

这对基线和治疗期之间差异的平均差异是否正确?

非常感谢!

two-period 交叉与重复的 2x2 拉丁方相同。我对未来此类实验的建议是相应地构建数据,使用序列(行)、周期(列)和治疗(以模式(A,B)第一序列和(B,A)第二序列的模式分配)的变量。受试者被随机分配到他们所在的顺序。

因此,对于您的数据,您需要添加一个变量 sequence,对于接受治疗序列 A、A、B、B 的受试者,该变量具有 AB 级,对于接受治疗的受试者,具有 BA 级B、B、A、A(虽然我猜第 1 和第 3 确实是每个人的基准)。

由于有 4 次访问,如果您将其重新编码为两个因素 trialperiod,它有助于保持排序,如下所示:

visit   trial   period
  1      base      1
  2      test      1
  3      base      2
  4      test      2

然后用公式拟合模型

model2 <- lmer(X ~ (sequence + period + treatment_type) * trial + 
                   (1|SID:sequence), ...etc...)

括号内的部分是拉丁方的标准模型。那么不用自定义对比就可以分析如下:

RG <- ref_grid(model2)   # same really as emmeans() for all 4 factors
CHG <- contrast(RG, "consec", simple = "trial")
CHG <- update(CHG, by = NULL, infer = c(TRUE, FALSE))

CHG 包含与基线的差异(其他三个因素的每个组合的 trial 差异。update() 步骤删除了从 contrast()。现在,我们可以得到每个因素的边际均值和比较:

emmeans(CHG, consec ~ treatment_type)
emmeans(CHG, consec ~ period)
emmeans(CHG, consec ~ sequence)

这些将与您通过自定义对比以其他方式获得的结果相同。之前是差异中的差异现在由 sequence 处理。这是有效的,因为在 2x2 拉丁方中,每个因素的主要影响与其他两个因素的 two-way 相互作用混淆。