三向重复测量方差分析的有效事后分析是什么?

机器算法验证 r 方差分析 重复测量 相互作用 事后
2022-03-10 03:56:10

我已经进行了三向重复测量方差分析;哪些事后分析是有效的?

这是一个完全平衡的设计 (2x2x2),其中一个因素具有受试者内重复测量。我知道 R 中重复测量方差分析的多元方法,但我的第一直觉是继续使用简单的 aov() 方差分析样式:

aov.repeated <- aov(DV ~ IV1 * IV2 * Time + Error(Subject/Time), data=data)

DV = 响应变量

IV1 = 自变量 1(2 个水平,A 或 B)

IV2 = 自变量 2(2 个水平,是或否)

IV3 = 时间(2 级,之前或之后)

受试者 = 受试者 ID(总共 40 个受试者,IV1 的每个级别 20 个:nA = 20,nB = 20)

summary(aov.repeated)

    Error: Subject
          Df Sum Sq Mean Sq F value   Pr(>F)   
IV1       1   5969  5968.5  4.1302 0.049553 * 
IV2       1   3445  3445.3  2.3842 0.131318   
IV1:IV2   1  11400 11400.3  7.8890 0.007987 **
Residuals 36  52023  1445.1                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Error: Subject:Time
               Df Sum Sq Mean Sq F value   Pr(>F)   
Time            1    149   148.5  0.1489 0.701906   
IV1:Time        1    865   864.6  0.8666 0.358103   
IV2:Time        1  10013 10012.8 10.0357 0.003125 **
IV1:IV2:Time    1    852   851.5  0.8535 0.361728   
Residuals      36  35918   997.7                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

或者,我正在考虑将 nlme 包用于 lme 风格的方差分析:

aov.repeated2 <- lme(DV ~ IV1 * IV2 * Time, random = ~1|Subject/Time, data=data)
summary(aov.repeated2)

Fixed effects: DV ~ IV1 * IV2 * Time 
                                Value Std.Error DF   t-value p-value
(Intercept)                      99.2  11.05173 36  8.975972  0.0000
IV1                              19.7  15.62950 36  1.260437  0.2156
IV2                              65.9  15.62950 36  4.216385  0.0002 ***
Time                             38.2  14.12603 36  2.704228  0.0104 *
IV1:IV2                         -60.8  22.10346 36 -2.750701  0.0092 **
IV1:Time                        -26.2  19.97722 36 -1.311494  0.1980
IV2:Time                        -57.8  19.97722 36 -2.893295  0.0064 **
IV1:IV2:Time                     26.1  28.25206 36  0.923826  0.3617

我使用 multcomp 包中的 glht() 与 Tukey 进行重大双向交互的第一直觉对比:

data$IV1IV2int <- interaction(data$IV1, data$IV2)
data$IV2Timeint <- interaction(data$IV2, data$Time)

aov.IV1IV2int <- lme(DV ~ IV1IV2int, random = ~1|Subject/Time, data=data)
aov.IV2Timeint <- lme(DV ~ IV2Timeint, random = ~1|Subject/Time, data=data)

IV1IV2int.posthoc <- summary(glht(aov.IV1IV2int, linfct = mcp(IV1IV2int = "Tukey")))
IV2Timeint.posthoc <- summary(glht(aov.IV2Timeint, linfct = mcp(IV2Timeint = "Tukey")))

IV1IV2int.posthoc
#A.Yes - B.Yes == 0        0.94684   
#B.No - B.Yes == 0         0.01095 * 
#A.No - B.Yes == 0         0.98587    I don't care about this
#B.No - A.Yes == 0         0.05574 .  I don't care about this
#A.No - A.Yes == 0         0.80785   
#A.No - B.No == 0          0.00346 **

IV2Timeint.posthoc 
#No.After - Yes.After == 0           0.0142 *
#Yes.Before - Yes.After == 0         0.0558 .
#No.Before - Yes.After == 0          0.5358   I don't care about this
#Yes.Before - No.After == 0          0.8144   I don't care about this
#No.Before - No.After == 0           0.1941  
#No.Before - Yes.Before == 0         0.8616

我在这些事后分析中看到的主要问题是一些对我的假设没有用的比较。

非常感谢任何有关适当事后分析的建议,谢谢。

编辑: 指向测试手动对比矩阵的相关问题和答案

2个回答

我认为统计学家会告诉您,任何事后分析总是存在问题,因为查看数据可能会影响您查看的内容,并且您可能会因为您正在寻找重要结果而产生偏见。FDA 在临床试验研究中要求在方案中完整地阐明统计计划。在线性模型中,如果 ANOVA 或 ANCOVA 发现整体差异,您当然可以预先指定您想要查看的对比。只要对多重性的通常处理也是其中的一部分,这种预先指定的对比就可以很好地看待。

如果您有像 SAS 这样的软件包,您可能会使用 proc mixed 来执行重复测量混合模型,并且如果您指定要使用哪种对比度,SAS 将为您正确处理它。您也可以使用 PROC GLM 中的重复选项来执行此操作,但要小心,因为它们的行为不同并做出不同的假设。重复的观察通常是相互关联的,因为它们有一些共同点。我经常在不同的时间点对同一个病人重复测量。因此,在计算对比时,协方差项进入了问题。