Solved – Repeated-measures ANCOVA in R

ancovaanovarrepeated measures

experts,

I would like to ask for advice regarding the analysis of a dataset I am currently working on.

In the experiment subjects were tested in a reaction time task (RT as dependent variable). In random order every subject was tested in two treatment conditions (factor 'A': placebo vs. drug). Also for subject in a third session the level of a blood value was measured (a numeric covariate 'B'). This covariate 'B' is stable within a subject and believed to be a predictor for the effect of factor 'A'. Moreover subjects were grouped according to their genotype (factor 'C'). Also I coded the first or second testing in factor 'D' in order to model potential learning effects.

Please find below some sample code.

# 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))

I would know how to estimate the overall effect of the covariate 'B' using lm() and how to estimate the overall effect of factor 'A' using aov().

# 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)

From the comments I understood that the correct ANCOVA model to test effects of A, B and their interaction would be as followed:

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

However if I would like to look at B, C and their interaction the output from summary() does not provide significances anymore which makes me assume the model is not correct:

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

Also of course I would like to know whether it is possible to estimate the most comprehensive model including all factors (A, B, C, D) and their interaction (?). Probably the dataset is too small to estimate this. But how can I know whether my data is sufficient to allow for the estimation of such a complicated model?

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

Also I would like to know whether the same models can be implemented in the same way in case there are repeated-measures of the dependent variable 'RT'? E.g.:

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)

Any help regarding this (including hints for an implementation in R as well as literature) is highly appreciated.

Many thanks!
Jokel

Best Answer

It seems like you're saying that covariate B is correlated with predictor A. In that case, that is not a situation where you can use an ANCOVA. In an ANCOVA your factor B would have to be correlated only with the RT, not the other predictors. If you ever do find a situation where an ANCOVA is appropriate it would just be...

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