R中的重复测量ANCOVA?

机器算法验证 r 方差分析 重复测量 安乔娃
2022-04-20 03:14:03

专家,

我想就我目前正在处理的数据集的分析征求意见。

在实验中,受试者在反应时间任务中进行了测试(RT 作为因变量)。以随机顺序在两种治疗条件下对每个受试者进行测试(因素“A”:安慰剂与药物)。同样对于第三次会话中的受试者,测量了血液值的水平(数字协变量“B”)。该协变量“B”在受试者体内是稳定的,并且被认为是因子“A”影响的预测因子。此外,受试者根据他们的基因型(因子'C')进行分组。我还在因子“D”中编码了第一个或第二个测试,以便模拟潜在的学习效果。

请在下面找到一些示例代码。

# some example data
subject <- c(1,1,2,2,3,3,4,4)
A <- rep(c('placebo', 'drug'), 4) # factor A
B <- c(1,1,4,4,8,8,12,12) # covariate B
C <- c('x','x','y','y','x','x','y','y')
D <- c('1st','2nd','1st','2nd','2nd','1st','2nd','1st')
RT <- c(2,12,1,16,2,26,3,39)

data <- as.data.frame(cbind(subject, A, B, C, D, RT))
data$B <- as.numeric(as.character(data$B))
data$RT <- as.numeric(as.character(data$RT))

我会知道如何使用 lm() 估计协变量“B”的整体效果,以及如何使用 aov() 估计因子“A”的整体效果。

# Model effect of covariate B using lm()
data.lm <- lm(RT~B, data=data)
summary(data.lm)

# Model effect of factor A using aov()
data.aov <- aov(RT~A+Error(subject/A),data=data)
summary(data.aov)

从评论中,我了解到用于测试 A、B 及其相互作用的正确 ANCOVA 模型如下:

# ANCOVA for effects of A, B and their interaction
data.aov2 <- aov(RT~ B * A + Error(subject/A), data = data)
summary(data.aov2)

但是,如果我想查看 B、C 及其交互,summary() 的输出不再提供意义,这使我假设模型不正确:

# ANOVA for effects B, C and their interaction
data.aov3 <- aov(RT ~ B * C + Error(subject), data=data)
summary(data.aov3)

当然,我也想知道是否可以估计最全面的模型,包括所有因素(A、B、C、D)及其相互作用(?)。可能数据集太小而无法估计。但是我怎么知道我的数据是否足以估计如此复杂的模型呢?

# ANOVA for effects B, C and their interaction
data.aov4 <- aov(RT ~ A * B * C * D + Error(subject/A), data=data)
summary(data.aov4)

另外我想知道是否可以以相同的方式实现相同的模型,以防因变量“RT”有重复测量?例如:

data2 <- rbind(data, data, data, data, data)
data2$RT <- rnorm(nrow(data2))

# ANOVA for effects B, C and their interaction
data.aov5 <- aov(RT ~ A * B * C * D + Error(subject/A), data=data2)
summary(data.aov5)

对此的任何帮助(包括在 R 中实现的提示以及文献)都将受到高度赞赏。

非常感谢!小丑

1个回答

您似乎在说协变量 B 与预测变量 A 相关。在这种情况下,您不能使用 ANCOVA。在 ANCOVA 中,您的因子 B 必须仅与 RT 相关,而不与其他预测变量相关。如果您确实找到适合 ANCOVA 的情况,那就是......

data.aov <- aov(RT~ B + A + Error(subject/A), data = data)