如何在平衡的重复测量设计中对时间的影响进行建模,在基线、教学期间和教学后各有 2 个测量?

机器算法验证 方差分析 重复测量
2022-04-12 18:32:50

我想检查 38 名参与者的增长情况。我在教学的 3 个不同阶段中的每一个都有 2 个分数 - 基线、教学期间和教学后。重申一下,我有每个参与者的 2 个基线分数、2 个教学分数和 2 个后期分数。所有参与者都在一个组中。

  • 我应该如何测试增长?
  • 单向重复测量方差分析,还是双向重复测量方差分析?
  • 我应该将其作为 6 个连续分数(例如时间 1-6)并查看时间因素,还是应该按时间交互查看指令阶段。这甚至有意义吗?
2个回答

我建议您使用Time6 级因子,然后使用适当的对比来比较相位,例如,使用对比系数检查Post vs Instruction(0,0,.5,.5,+.5,+.5)

Time由于重复测量,在模型中使用自身可能很重要。例如,有些人可能想在这些上放置某种时间序列错误结构——或者可能是一个模型,它假设一个阶段内的相关性大于它们之间的相关性。

例子

3 个受试者的玩具数据集,6 次:

> fake = expand.grid(time=1:6, subj=letters[1:3])
> fake$y = c(18,15,30,28,48,49,19,18,27,28,49,52,19,18,27,25,48,49)

拟合具有time6 水平因子和subj随机效应的模型:

> library(lme4)
> fake.lmer = lmer(y ~ factor(time) + (1|subj), data = fake)

我将使用lsmeans包中的函数分三个阶段完成。首先,获取每个的 LS~means(又名预测)time

> library(lsmeans)
> (time.lsm = lsmeans(fake.lmer, "time"))

 time   lsmean        SE df lower.CL upper.CL
    1 18.66667 0.8388705 12 16.83890 20.49444
    2 17.00000 0.8388705 12 15.17223 18.82777
    3 28.00000 0.8388705 12 26.17223 29.82777
    4 27.00000 0.8388705 12 25.17223 28.82777
    5 48.33333 0.8388705 12 46.50556 50.16110
    6 50.00000 0.8388705 12 48.17223 51.82777

为方便起见,这里是每个阶段的平均预测。该函数是contrast,但它可以估计线性函数,无论它们是否是对比:

> (phase.lsm = contrast(time.lsm, list(base = c(.5,.5,0,0,0,0), 
+    instr = c(0,0,.5,.5,0,0), post = c(0,0,0,0,.5,.5))))

 contrast estimate        SE   df t.ratio p.value
 base     17.83333 0.5947299 9.86  29.986  <.0001
 instr    27.50000 0.5947299 9.86  46.239  <.0001
 post     49.16667 0.5947299 9.86  82.671  <.0001

现在获得这些的成对比较:

> pairs(phase.lsm)

 contrast       estimate      SE df t.ratio p.value
 base - instr  -9.666667 0.83666 10 -11.554  <.0001
 base - post  -31.333333 0.83666 10 -37.450  <.0001
 instr - post -21.666667 0.83666 10 -25.897  <.0001

P value adjustment: tukey method for a family of 3 means

请注意,我本可以直接进入我之前提到的对比类型。例如:

> contrast(time.lsm, list(`base-instr` = c(.5,.5, -.5,-.5, 0,0)))

 contrast    estimate      SE df t.ratio p.value
 base.instr -9.666667 0.83666 10 -11.554  <.0001

似乎有很多可能的方法可以做到这一点,具体取决于您到底想要什么。

ANOVA 或重复测量 ANOVA 的想法只有在您有不同的治疗组时才有意义(对我而言)(例如,38 人中有一半接受了不同的指示等)。由于所有参与者都属于 1 个组,在我看来,您需要的只是一个好的旧配对 t(z)-test。

但首先,您需要定义增长。例如,如果您将增长定义为最后一次测量与第一次测量之间的差异,那么您可以运行:( t.test(Y6,Y1,paired=TRUE)在哪里Y6Y1是相应时间的测量值)。

如果您将增长定义为最后 2 和前 2 之间的差异,那么您可以首先导出该变量,并将问题简化为前一种情况。 Ypost=(Y6+Y5)/2;Ybase=(Y1+Y2)/2接着t.test(Ypost,Ybase,paired=TRUE)

这当然是进行分析的最简单方法,可以说有更复杂的方法来做事情,例如具有随机参与者效应和时间相关误差结构的线性混合模型。但是在不知道你到底想做什么的情况下,最好还是坚持使用更简单的方法(即t.test)。