How to add a covariate to a between-within design MANCOVA with R?

313 views Asked by At

I want to run a between-within design MANCOVA with R, with two dependent variables (Planned and Unplanned), two between-subject variables (Genre [Male, Female] and Urb [Yes, No]), one within-subject variable (Period [Before, During]), and one covariate (BMI).

Here is what I've done (see here for similar calculation: https://stats.stackexchange.com/questions/183441/correct-way-to-perform-a-one-way-within-subjects-manova-in-r):

# Create dummy data
data <- data.frame(Quest_before_planned = sample(1:100, 10),
                   Quest_during_planned = sample(1:100, 10),
                   Quest_before_unplanned = sample(1:100, 10),
                   Quest_during_unplanned = sample(1:100, 10),
                   Genre = sample(rep(c("Male", "Female"), each = 5)),
                   Urb = sample(rep(c("Yes", "No"), each = 5)),
                   BMI = sample(1:100, 10))

# Define the within-subjects factor
period <- as.factor(rep(c('before','during'), each = 2))
idata <- data.frame(period)

# Create the data structure for the linear model
data.model <- with(data, cbind(Quest_before_planned, Quest_during_planned,
                               Quest_before_unplanned, Quest_during_unplanned))

# Build the multivariate-linear model
mod.mlm <- lm(data.model ~ Genre * Urb, data = data_total)

# Run the MANOVA
mav.blpaq <- Anova(mod.mlm, idata = idata, idesign = ~ period, type = 2)
print(mav.blpaq)

Thus, the between-within design MANOVA here works well. However, I failed to add a covariate (i.e., BMI) to this model. Do you know how can I achieve this?


N.B.: I also tried using the (great) mancova() function , which include a covariate parameter; but with this function, I do not know how to specify that Period is a within-subject variable...

blpaq_macov <- mancova(data_tidy,
                       deps = c("Quest_planned", "Quest_unplanned"),
                       factors = c("Genre", "Period", "Urb"),
                       covs = "BMI",
                       multivar = "pillai")
0

There are 0 answers