14.1 MANOVA: joint treatment effect across multiple outcomes
MANOVA extends ANOVA to several continuous outcomes analyzed together. Here, it tests whether treatment has an overall effect across SBP change, QoL change, and biomarker change.
man_dat <- dat |> drop_na(sbp_change,qol_change,biomarker_change)
man_fit <- manova(cbind(sbp_change,qol_change,biomarker_change)~treatment_arm,data=man_dat)
summary(man_fit,test="Pillai")
#> Df Pillai approx F num Df den Df Pr(>F)
#> treatment_arm 2 0.514 37.6 6 652 <0.0000000000000002 ***
#> Residuals 327
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1A significant MANOVA result indicates that treatment groups differ across the outcomes jointly, but it does not identify which outcomes differ. Outcome-specific analyses are therefore used as follow-up tests, with attention to multiple testing.
summary.aov(man_fit)
#> Response sbp_change :
#> Df Sum Sq Mean Sq F value Pr(>F)
#> treatment_arm 2 4854 2427 38.5 0.00000000000000096 ***
#> Residuals 327 20612 63
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Response qol_change :
#> Df Sum Sq Mean Sq F value Pr(>F)
#> treatment_arm 2 2204 1102 23.7 0.00000000025 ***
#> Residuals 327 15210 47
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Response biomarker_change :
#> Df Sum Sq Mean Sq F value Pr(>F)
#> treatment_arm 2 36245 18122 104 <0.0000000000000002 ***
#> Residuals 327 57214 175
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1MANOVA does not replace the need to define primary and secondary outcomes. In confirmatory studies, the outcome hierarchy and multiple-testing strategy should be specified in advance.