Atlas
statminds
Multivariate GLM (Factorial Vector Model)The underlying model family class (e.g. GLM, linear model, categorical matrix, log-linear).Parametric ReferenceStatistical methods that assume a specific probability distribution family (typically normal).12-stage workflow

Two-Way MANOVA

The blueprint for Factorial Multivariate Discovery. This model audits the synergistic interaction between two categorical factors across a vector of multiple continuous outcomes.

Model familyMultivariate GLM (Factorial Vector Model)
Hypothesisomnibus_multivariate
AliasesFactorial MANOVA · Two-Factor Multivariate ANOVA · Multivariate Synergy Test
G1
Multivariate Interaction Discovery
Identify if the synergy between factors alters the global profile of outcomes.
G2
Categorical Profile Audit
Map how treatment and demographic variables jointly shape a cluster of recovery markers.
G3
Integrated Precision Strike
Isolate the highest-order multivariate effect while maintaining strict alpha control.
Visual Overview Dashboard
1

What is it?

Two-Way MANOVA (Multivariate Analysis of Variance) evaluates the effects of two categorical factors on multiple continuous dependent variables simultaneously.

2

When to use it

  • 2 Factors: Categorical independent groupings.
  • 2+ Outcomes: Continuous, correlated dependent variables.
  • Bivariate Protection: Prevents Family-wise Type I error inflation.
3

Core Idea

Instead of separate univariate ANOVAs, MANOVA creates a linear combination of outcomes to construct a multi-dimensional comparison. This is visualized as confidence ellipses:

Bivariate space: DV1 vs DV2

By examining outcomes in 2D space, MANOVA detects differences that univariate tests might miss because it considers group covariance.

4

Hypotheses

H₀: Centroids of all groups are equal in bivariate space.
Hₐ: At least one group centroid differs.
5

How it works

Constructs Hypothesis (H) and Error (E) matrices instead of simple Sum of Squares. Computes multivariate tests like Wilk's Lambda.

6

Assumptions

📈 Multivariate Normality: Combined DVs are normal.
⚖️ Homogeneity of Covariance: Checked by Box's M.
🔗 Multicollinearity Protection: Outcomes shouldn't correlate too highly.
7

Important Note

Box's M test is highly sensitive. If it is significant (p<0.001), Homogeneity of Covariance is violated. Pivot to Pillai's Trace as a robust test statistic.

8

Quick Example

Evaluate two therapies (Factor A) across two clinics (Factor B) on twin outcome measures: (1) Anxiety score and (2) Cortisol level.
Interactive Sandbox

Two-Way MANOVA Live Laboratory

Vary factor shifts and covariance correlation to watch confidence ellipses tilt and drift.

Presets
Factor A Shift10
Factor B Shift5
Outcome Correlation (ρ)0.50
Noise Scatter (σ)10
Sample Size (N)15
Bivariate Confidence Ellipses (Outcome 1 vs Outcome 2)Y-Axis: Outcome 2 · X-Axis: Outcome 1
2020404060608080
MANOVA Bivariate Output
Multivariate TestValueF-Approxdfp-value
Wilk's Lambda (Λ)0.8503.532, 260.0118
Statistical Verdict
✅ Reject H₀ (Significant)
Group centroids are significantly separated in bivariate space (p = 0.0118). A post-hoc discriminant analysis is recommended.
The 12-Stage Precision Workflow
01Vector Synergy
Hypotheses
We test if the interaction between two grouping factors 'warps' the entire profile of outcomes simultaneously.
02Matrix Parity
Assumptions
Ensuring multivariate normality and the stability of the variance-covariance structure across the entire factorial grid.
03Box's M Audit
Diagnostics
A high-stakes check for Homogeneity of Covariance Matrices—the most sensitive and critical gatekeeper for Factorial MANOVA.
04focus
Analyzing FlowMotion vs. PT across Age Groups, auditing the cluster of: Pain, Flexibility, and Patient Satisfaction.
05Pillai's Trace Pivot
Alternatives
Knowing when to prioritize Pillai's Trace over Wilks' Lambda if assumption violations threaten the robustness of the vector signal.
06Factorial Decomposition
Post-hoc
Executing follow-up univariate two-way ANOVAs or step-down strikes to explain exactly which outcome carried the interaction.
07Multivariate η²
Effect Size
Determining the total impact of the multivariate interaction on the collective variance of the outcome cluster.
08Matrix Stability
Sample Size
Accounting for the substantial N required to provide stable estimates for a factorial multivariate interaction.
09The Vector Story
Reporting
Narrating the multivariate interaction as the primary discovery, following the hierarchy of 'Vector → Outcome → Simple Effect'.
10Factorial Vector Logic
Software
Configuring the complex multi-outcome, multi-factor model in the environment, ensuring Type III SS integrity.
11The Collinearity Sin
Common Mistakes
The fatal error of including outcomes that are redundant, leading to singular matrices and model collapse.
12Multivariate Lineage
References
Grounding the analysis in the works of Wilks, Hotelling, and the modern masters of multivariate factorial design.
01Hypothesis test logic

Hypotheses

Pragmatic null and alternative hypotheses defined in mathematical notation.

We test the null hypothesis of equality to prove the alternative of distinction.
Logic Core
Null · H₀

H₀: All group mean vectors are equal across the combination of DVs (no main effects or interactions exist when considering all DVs jointly)

Alternative · Hₐ

Hₐ: At least one group's mean vector differs on the combined DVs (at least one main effect or interaction exists)

Why it matters omnibus_multivariate

MANOVA tests simultaneous group differences across multiple DVs, accounting for correlations among outcomes. Tests 3 omnibus effects: Main effect A, Main effect B, and A×B interaction. If significant, follow with univariate ANOVAs or discriminant analysis to identify which DVs drive effects. MANOVA has greater power than separate ANOVAs when DVs are moderately correlated (r = .3-.7).

02Model diagnostics

Assumptions

The core mathematical criteria needed to ensure that statistical testing remains unbiased and valid.

Variance homogeneity is a key assumption, though ANOVA is robust to moderate inequality when group sizes are equal. Severe inequality requires Welch's adjustment to prevent distorted p-values.
Integrity Shield
7
Assumptions
5
Critical / High Severity
How to check
Quick
Verify all DVs are numeric; compute correlation matrix among DVs (should be .3 < r < .7 for optimal MANOVA power). If r < .3, DVs are too independent (use separate ANOVAs). If r > .9, multicollinearity (consider PCA or drop redundant DV)
Rigorous
Bartlett's test of sphericity (p < .05 indicates DVs are sufficiently correlated for MANOVA); Kaiser-Meyer-Olkin (KMO) measure of sampling adequacy (> .6 adequate); scatterplot matrix to visualize correlations
If violated
If DVs uncorrelated (r < .3): Run separate univariate ANOVAs with Bonferroni correction—MANOVA offers no advantage. If DVs highly correlated (r > .9, multicollinearity): (1) Drop redundant DVs or combine via PCA/factor analysis, (2) Use structural equation modeling (SEM), (3) Compute composite score. If DVs ordinal: use nonparametric MANOVA (permutation-based) or separate ordinal regressions. If DVs categorical: use chi-square tests or logistic regression
How to check
Quick
Verify both IVs are categorical/factor variables; count levels for each IV (both should have ≥2 levels); ensure design is factorial (all combinations of IV levels are present)
Rigorous
Check cell sizes for all IV combinations (should be balanced or near-balanced); verify no empty cells; confirm IVs represent discrete categories, not continuous variables artificially binned
If violated
If only 1 IV: use one-way MANOVA. If IVs are continuous: use multivariate multiple regression (predict multiple DVs from continuous predictors). If IVs are ordinal: treat as categorical or use ordinal predictors in multivariate regression. If design has empty cells: use unbalanced MANOVA with Type III SS, or combine/drop levels with insufficient data. If mixed design (1 between + repeated measures): use doubly multivariate RM-MANOVA
How to check
Quick
Verify each subject/case appears only once in dataset; check for clustering (e.g., students within schools, patients within clinics); inspect study design for repeated measures or matched pairs
Rigorous
Check for duplicate subject IDs; compute intraclass correlation (ICC) if clustering suspected; review sampling/data collection procedures; test for spatial/temporal autocorrelation if relevant
If violated
If repeated measures (same subjects across time/conditions): use doubly multivariate RM-MANOVA or multivariate mixed model. If matched pairs/blocks: include block as random effect in multivariate mixed model. If clustering (subjects nested in groups): use multivariate mixed model with random intercepts for clusters. If dependencies cannot be modeled: use cluster-robust standard errors or generalized estimating equations (GEE)
gee
How to check
Quick
Check univariate normality for each DV separately using Q-Q plots, histograms, and Shapiro-Wilk tests per group. Multivariate normality requires all univariate distributions are normal
Rigorous
Mardia's test of multivariate normality (tests skewness and kurtosis); Henze-Zirkler test; Royston's multivariate normality test; inspect multivariate Q-Q plot (Mahalanobis distances vs chi-square quantiles)
If violated
If mild violation with n ≥ 20 per cell: MANOVA is fairly robust via Central Limit Theorem (Wilks' Lambda robust, Pillai's Trace more robust). If severe violation: (1) Transform DVs (log, sqrt, Box-Cox for each DV). (2) Use robust MANOVA with trimmed means/Winsorization. (3) Use permutation MANOVA (resampling-based, distribution-free). (4) Use nonparametric MANOVA alternatives (Kruskal-Wallis on each DV with Bonferroni). (5) Bootstrap confidence intervals for test statistics
How to check
Quick
Box's M test (p > .001 indicates equal covariances; note: very sensitive to large n and normality violations, so use α = .001, not .05). Inspect variance-covariance matrices by group visually
Rigorous
Compute variance-covariance matrix for each cell; compare variances (should be similar, ratio < 3:1) and correlations (should be similar direction/magnitude); log-likelihood ratio test
If violated
If Box's M p < .001 with unequal cell sizes: Type I error inflated. Solutions: (1) BEST: Use Pillai's Trace statistic (more robust to heterogeneity than Wilks' Lambda). (2) Transform DVs to stabilize variance. (3) Use robust MANOVA methods. (4) If variances differ but covariances similar: proceed cautiously with Pillai's Trace and report limitation. (5) Ensure balanced design (equal n per cell) to minimize impact. If extremely violated: run separate ANOVAs with heteroscedasticity-robust methods
How to check
Quick
Compute Mahalanobis distance (D²) for each case to group centroid; flag cases with D² > χ²_critical (df = number of DVs, α = .001). For 2 DVs: D² > 13.8, for 3 DVs: D² > 16.3, for 4 DVs: D² > 18.5
Rigorous
Plot Mahalanobis distances vs case number; Q-Q plot of D² vs chi-square distribution; leverage values; Cook's distance for MANOVA; visual inspection via bivariate scatterplots for all DV pairs
If violated
First: verify data entry errors and correct. If legitimate multivariate outliers: (1) Report results with and without outliers (sensitivity analysis). (2) Use robust MANOVA with M-estimators or trimmed means. (3) Winsorize extreme values (set to 5th/95th percentiles). (4) Use permutation MANOVA (less sensitive to outliers). (5) Transform DVs if outliers due to skewness. Never remove outliers without transparent justification—report exclusions and reasoning
How to check
Quick
Count observations in smallest cell; ensure n_smallest_cell > number of DVs (absolute minimum). For reliable results: n_per_cell ≥ 20 (if 2-3 DVs) or n_per_cell ≥ 10 × number of DVs (if 4+ DVs)
Rigorous
Conduct power analysis using G*Power or specialized MANOVA software; check condition number of covariance matrix (high condition number indicates near-singularity from insufficient sample size)
If violated
If n_cell < number of DVs: MANOVA impossible (singular covariance matrix). Solutions: (1) Combine cells (reduce factor levels). (2) Drop DVs (keep most important outcomes). (3) Use PCA to reduce dimensionality. (4) Run separate univariate ANOVAs with Bonferroni correction. (5) Collect more data. If n barely sufficient (10-15 per cell): use regularized MANOVA or ridge regression-based MANOVA to stabilize covariance estimates
03Residual Forensics

Diagnostics

Checking residual plots and indices to examine model deviations and ensure standard error integrity.

Trust, but verify. Outliers can reveal critical data quality issues or genuine subgroup effects that averages obscure.
System Health
Essential checks
  1. Box's M test for homogeneity of covariance matrices (use α = .001)
  2. Bartlett's test of sphericity for DV correlations
  3. Mahalanobis distances to detect multivariate outliers (D² > χ²_critical)
  4. Correlation matrix among DVs (check for multicollinearity and adequate correlation)
  5. Descriptive statistics (M, SD) for all DVs across all IV combinations
Recommended checks
  1. Mardia's or Royston's multivariate normality test
  2. Q-Q plots for each DV by group
  3. Scatterplot matrix for all DV pairs, colored by groups
  4. Cell sizes and balance check (n per cell)
  5. Univariate ANOVA follow-ups for significant MANOVA effects
  6. Discriminant function analysis to identify DV combinations driving effects
  7. Effect sizes (partial η², Pillai-Bartlett trace, Roy's largest root)
04Live Instances

Applied Minds

Review concrete study examples, data layout guidelines, and copy executable syntax scripts.

Theory is the map. Practice is the terrain. Simulation bridges the gap.
Applied Wisdom
Example 01

Psychotherapy Type on Mental Health Outcomes (Anxiety + Depression)

Research question: Does psychotherapy type (CBT, ACT, Psychodynamic) and treatment duration (Short-term [8 weeks], Long-term [16 weeks]) affect mental health outcomes? Design: 2×3 factorial design with n=25 per cell (150 total). Two DVs: (1) Beck Anxiety Inventory (BAI, 0-63), (2) Beck Depression Inventory-II (BDI-II, 0-63). DVs moderately correlated (r ≈ .5). Hypothesis: CBT superior to other therapies; longer duration enhances all therapies.

Design2 (Duration) × 3 (Therapy) factorial
Total n150
# Two-way MANOVA: Therapy × Duration on Anxiety + Depression
# Factorial design with 2 correlated DVs

# Load packages
library(tidyverse)   # Data manipulation
library(car)         # For MANOVA (Anova function)
library(heplots)     # For HE plots and effect sizes
library(mvnormtest)  # For multivariate normality tests
library(biotools)    # For Box's M test
library(MASS)        # For LDA (discriminant analysis)

# Set seed
set.seed(2025)

# Simulate realistic data
n_per_cell <- 25
therapy_levels <- c("CBT", "ACT", "Psychodynamic")
duration_levels <- c("Short", "Long")

data <- expand.grid(
  therapy = rep(therapy_levels, each = n_per_cell),
  duration = rep(duration_levels, each = n_per_cell * 3 / 2)
) %>%
  slice(rep(1:n(), length.out = 150)) %>%
  mutate(
    # Base scores (post-treatment, lower = better)
    therapy_effect_anx = case_when(
      therapy == "CBT" ~ -12,
      therapy == "ACT" ~ -8,
      therapy == "Psychodynamic" ~ -5
    ),
    therapy_effect_dep = case_when(
      therapy == "CBT" ~ -14,
      therapy == "ACT" ~ -9,
      therapy == "Psychodynamic" ~ -6
    ),
    duration_effect = ifelse(duration == "Long", -5, 0),
    
    # Generate correlated DVs (r ≈ .5)
    base_anx = 35 + therapy_effect_anx + duration_effect,
    base_dep = 32 + therapy_effect_dep + duration_effect,
    
    # Add correlated error
    error_shared = rnorm(n(), 0, 3),
    error_anx = rnorm(n(), 0, 4),
    error_dep = rnorm(n(), 0, 4),
    
    anxiety = base_anx + error_shared + error_anx,
    depression = base_dep + error_shared + error_dep
  ) %>%
  mutate(
    anxiety = pmin(pmax(anxiety, 0), 63),
    depression = pmin(pmax(depression, 0), 63)
  ) %>%
  select(therapy, duration, anxiety, depression)

cat("=== Data Structure ===", "\n")
cat("Design: 2 (Duration) × 3 (Therapy) factorial\n")
cat("Total n:", nrow(data), "\n")
cat("Cells:", length(unique(data$therapy)) * length(unique(data$duration)), "\n\n")

# === STEP 1: Check Assumptions ===

# 1. Check correlations among DVs
cat("=== DV Correlation ===", "\n")
cor_matrix <- cor(data[, c("anxiety", "depression")])
print(cor_matrix)
cat("\nIdeal for MANOVA: .3 < r < .7 (here r ≈", round(cor_matrix[1,2], 2), ")\n\n")

# 2. Bartlett's test of sphericity (DVs correlated?)
cat("=== Bartlett's Test of Sphericity ===", "\n")
bartlett_test <- cortest.bartlett(cor_matrix, n = nrow(data))
print(bartlett_test)
cat(ifelse(bartlett_test$p.value < .05, "✓ DVs sufficiently correlated", "X DVs not correlated"), "\n\n")

# 3. Check cell sizes
cat("=== Cell Sizes ===", "\n")
print(table(data$therapy, data$duration))
cat("\n")

# 4. Descriptive statistics
cat("=== Descriptive Statistics ===", "\n")
desc_stats <- data %>%
  group_by(therapy, duration) %>%
  summarise(
    n = n(),
    M_anx = mean(anxiety), SD_anx = sd(anxiety),
    M_dep = mean(depression), SD_dep = sd(depression),
    .groups = "drop"
  )
print(desc_stats, n=6)

# 5. Box's M test (homogeneity of covariance matrices)
cat("\n=== Box's M Test ===", "\n")
data$group <- interaction(data$therapy, data$duration)
boxm_result <- boxM(data[, c("anxiety", "depression")], data$group)
print(boxm_result)
cat("\nInterpretation: Use α = .001 (Box's M is sensitive). p > .001 = equal covariances\n")
cat(ifelse(boxm_result$p.value > .001, "✓ Covariances equal", "⚠ Covariances unequal - use Pillai's Trace"), "\n\n")

# 6. Multivariate outliers (Mahalanobis distance)
cat("=== Multivariate Outliers ===", "\n")
center <- colMeans(data[, c("anxiety", "depression")])
cov_matrix <- cov(data[, c("anxiety", "depression")])
mahal_dist <- mahalanobis(data[, c("anxiety", "depression")], center, cov_matrix)
chi_crit <- qchisq(0.999, df = 2)  # 2 DVs
outliers <- sum(mahal_dist > chi_crit)
cat("Outliers(D² > χ²_{.999, 2} =", round(chi_crit, 2), "):", outliers, "\n")
cat(ifelse(outliers == 0, "✓ No multivariate outliers", "⚠ Outliers detected"), "\n\n")

# 7. Multivariate normality (Mardia's test - requires mvnormtest or MVN)
cat("=== Multivariate Normality ===", "\n")
cat("Check univariate normality per DV(necessary but not sufficient)\n")
shapiro_anx <- by(data$anxiety, data$group, shapiro.test)
shapiro_dep <- by(data$depression, data$group, shapiro.test)
cat("Anxiety: all groups p >", min(sapply(shapiro_anx, function(x) x$p.value)), "\n")
cat("Depression: all groups p >", min(sapply(shapiro_dep, function(x) x$p.value)), "\n\n")

# === STEP 2: Run Two-way MANOVA ===

cat("=== Two-way MANOVA ===", "\n")

# Create MANOVA model
manova_model <- manova(cbind(anxiety, depression) ~ therapy * duration, data = data)

# Summary with Pillai's Trace (most robust)
cat("\n--- Pillai's Trace(most robust to violations) ---\n")
print(summary(manova_model, test = "Pillai"))

# Summary with Wilks' Lambda (most common)
cat("\n--- Wilks' Lambda(most common, assumes homogeneity) ---\n")
print(summary(manova_model, test = "Wilks"))

# Use car::Anova for Type II/III SS and effect sizes
cat("\n--- Type II MANOVA(car::Anova) ---\n")
manova_car <- Anova(lm(cbind(anxiety, depression) ~ therapy * duration, data = data),
                    type = 2, test.statistic = "Pillai")
print(manova_car)

# === STEP 3: Effect Sizes ===

cat("\n=== Effect Sizes ===", "\n")
# Compute partial eta squared
eta_sq <- etasq(manova_model, test = "Pillai")
print(eta_sq)
cat("\nInterpretation: .01 = small, .06 = medium, .14 = large(Cohen, 1988)\n\n")

# === STEP 4: Follow-up Univariate ANOVAs ===

cat("=== Follow-up Univariate ANOVAs(if MANOVA significant) ===", "\n")

cat("\n--- Anxiety(BAI) ---\n")
anova_anx <- aov(anxiety ~ therapy * duration, data = data)
print(summary(anova_anx))

cat("\n--- Depression(BDI-II) ---\n")
anova_dep <- aov(depression ~ therapy * duration, data = data)
print(summary(anova_dep))

cat("\nNote: Apply Bonferroni correction: α = .05/2 = .025 for 2 DVs\n\n")

# === STEP 5: Post-hoc Tests ===

if(manova_car$`Pr(>F)`[1] < .05) {  # If therapy main effect significant
  cat("=== Post-hoc: Therapy Main Effect ===", "\n")
  
  # Pairwise comparisons for anxiety
  cat("\n--- Anxiety ---\n")
  pairwise_anx <- pairwise.t.test(data$anxiety, data$therapy, p.adjust.method = "bonferroni")
  print(pairwise_anx)
  
  # Pairwise comparisons for depression
  cat("\n--- Depression ---\n")
  pairwise_dep <- pairwise.t.test(data$depression, data$therapy, p.adjust.method = "bonferroni")
  print(pairwise_dep)
}

# === STEP 6: Visualizations ===

cat("\n=== Visualizations ===", "\n")

# Interaction plot for anxiety
p1 <- ggplot(data, aes(x = therapy, y = anxiety, color = duration, group = duration)) +
  stat_summary(fun = mean, geom = "point", size = 3) +
  stat_summary(fun = mean, geom = "line", linewidth = 1) +
  stat_summary(fun.data = mean_se, geom = "errorbar", width = 0.2) +
  labs(title = "Therapy × Duration on Anxiety(BAI)",
       y = "Anxiety Score(lower = better)", x = "Therapy Type") +
  theme_bw()
print(p1)

# Interaction plot for depression
p2 <- ggplot(data, aes(x = therapy, y = depression, color = duration, group = duration)) +
  stat_summary(fun = mean, geom = "point", size = 3) +
  stat_summary(fun = mean, geom = "line", linewidth = 1) +
  stat_summary(fun.data = mean_se, geom = "errorbar", width = 0.2) +
  labs(title = "Therapy × Duration on Depression(BDI-II)",
       y = "Depression Score(lower = better)", x = "Therapy Type") +
  theme_bw()
print(p2)

# Bivariate plot showing groups in multivariate space
p3 <- ggplot(data, aes(x = anxiety, y = depression, color = therapy, shape = duration)) +
  geom_point(alpha = 0.6, size = 2) +
  stat_ellipse(aes(group = interaction(therapy, duration)), level = 0.68) +
  labs(title = "Multivariate Space: Anxiety × Depression",
       x = "Anxiety(BAI)", y = "Depression(BDI-II)") +
  theme_bw()
print(p3)

# === STEP 7: Discriminant Function Analysis (optional) ===

cat("\n=== Discriminant Function Analysis ===", "\n")
cat("Identifies linear combinations of DVs that best separate groups\n\n")

lda_model <- lda(group ~ anxiety + depression, data = data)
cat("Standardized discriminant coefficients:\n")
print(lda_model$scaling)

# === APA-Style Reporting ===

cat("\n=== APA-Style Report ===", "\n")
cat("
A two-way MANOVA was conducted to examine the effects of psychotherapy type
(CBT, ACT, Psychodynamic) and treatment duration(short-term, long-term) on
mental health outcomes(anxiety and depression). The DVs were moderately
correlated(r = .52), supporting MANOVA's use. Box's M test indicated equal
covariance matrices across groups(p = .08), and no multivariate outliers were
detected(all D² < 13.8).

Using Pillai's Trace(robust to assumption violations), results revealed a
significant main effect of therapy type, V = 0.32, F(4, 288) = 13.45, p < .001,
partial η² = .16 (large effect), and a significant main effect of duration,
V = 0.18, F(2, 143) = 15.67, p < .001, partial η² = .18 (large effect). The
Therapy × Duration interaction was not significant, V = 0.03, F(4, 288) = 1.12,
p = .35.

Follow-up univariate ANOVAs(α = .025 with Bonferroni correction) revealed:
• Therapy effect on anxiety: F(2, 144) = 18.34, p < .001, η² = .20
• Therapy effect on depression: F(2, 144) = 22.56, p < .001, η² = .24
• Duration effect on anxiety: F(1, 144) = 31.23, p < .001, η² = .18
• Duration effect on depression: F(1, 144) = 28.91, p < .001, η² = .17

Post-hoc comparisons(Bonferroni-adjusted) indicated CBT was superior to both
ACT(anxiety: p < .001, d = 0.89; depression: p < .001, d = 1.02) and
Psychodynamic therapy(anxiety: p < .001, d = 1.45; depression: p < .001,
d = 1.67). ACT also outperformed Psychodynamic therapy on both outcomes
(both p < .01). Long-term treatment yielded better outcomes than short-term
across all therapies.

Findings support CBT as the most effective therapy for comorbid anxiety and
depression, with dose-response effects favoring longer treatment duration.
")

cat("\n=== Key Statistics to Report ===", "\n")
cat("• Pillai's Trace(or Wilks' Λ) for each effect\n")
cat("• F-statistic with df1 and df2\n")
cat("• p-values and effect sizes(partial η² or V)\n")
cat("• Box's M test result\n")
cat("• DV correlations\n")
cat("• Follow-up univariate ANOVAs with Bonferroni correction\n")
cat("• Post-hoc pairwise comparisons with adjusted p-values\n")
cat("• Descriptive statistics(M, SD) for all DV × IV combinations\n")
Interpretation Blueprint

Significant main effects for therapy type (Pillai's V = 0.32, F[4,288] = 13.45, p < .001, η²_p = .16) and duration (V = 0.18, F[2,143] = 15.67, p < .001, η²_p = .18). CBT outperformed ACT and Psychodynamic therapy on both anxiety (F[2,144] = 18.34, p < .001) and depression (F[2,144] = 22.56, p < .001). Long-term treatment was superior to short-term (both p < .001). No Therapy × Duration interaction (p = .35), suggesting duration benefits generalize across therapies. Findings support CBT as gold standard with dose-response effects.

05Tactical Pivots

Alternatives

Structured fallback pathways for choosing alternative tests when normality or slopes requirements fail.

When the path is blocked, pivot. Rigor is not rigidity; it is the intelligent adaptation to reality.
Adaptive Strategy
Multivariate Precision Ladder Ideal · Ratio / Interval Vector
Ratio Vector
Maintain Two-Way MANOVA. Deciphers the synergistic impact of two categorical factors on a cluster of continuous markers.
Peak Precision
Interval Vector
Ideal for demographic-treatment grids. Ensure covariance stability across all cells of the factorial design.
Standard Profile
Ordinal Vector
Pivot to Factorial Non-Parametric MANOVA (e.g., adonis2) if outcomes are ranked or non-normal.
Rank Confusion
Nominal Vector
Abandon MANOVA. Use Log-Linear Analysis to audit multi-way categorical interactions.
Information Suicide
Temporal Trajectory Audit Factorial Multivariate Snapshot
Static Profile Grid
2 factors, multiple outcomes.
Stay with Two-Way MANOVA. The elite standard for detecting multivariate synergy.
Longitudinal Profile
One factor is Time.
Pivot to Doubly-Multivariate MANOVA or Multivariate Linear Mixed Models (MLMM).
Adaptive Technical Safeguards · adaptive safeguards
covariance heterogeneity
  • Pillai's Trace — Mandatory omnibus choice if Box's M is significant.
  • Separate Welch ANOVAs — Execute group strikes on individual outcomes with Bonferroni protection.
multicollinearity
  • PCA Pre-Reduction — Collapse the outcome vector into orthogonal components before the factorial strike.
  • Structural Equation Modeling (SEM) — Model the outcomes as a latent construct if theory supports a shared cause.
small sample size
  • Regularized MANOVA — Apply shrinkage to the covariance matrix to prevent model collapse in sparse grids.
06Adjusted Comparisons

Post-hoc

Group mean comparisons and correction controls (e.g. Tukey HSD, Bonferroni) to protect against Family-Wise Error Rates.

The omnibus test opens the door; post-hoc analysis explores the room.
Forensic Detail
Adjusted Comparisons

Post-hoc pairwise tests defined for this model.

Interpretation Guidelines

No specific guidelines provided.

07Standardized scale impact

Effect Size

Understanding effect sizes (e.g., Cohen's d, Partial Eta-Squared) and clinical impact benchmarks.

Eta-squared tells you the 'ownership' of variance. How much of the outcome does your treatment actually control?
Impact Magnitude

Most robust to violations. Range [0, 1]. V = .01 (small), .06 (medium), .14 (large). Preferred when assumptions violated

Most commonly reported. Range [0, 1], smaller = larger effect. Λ = .99 (small), .94 (medium), .86 (large). Equivalent to likelihood ratio test

Proportion of variance in DV set explained by IV. Same thresholds as Cohen's benchmarks: .01 (small), .06 (medium), .14 (large)

Most powerful when effect is on single dimension, but liberal (inflates Type I error). Use only when theoretically justified

Recommended Metric: pillai_bartlett_trace for robustness, wilks_lambda for convention, partial_eta_squared for interpretability
Small
0.2
Medium
0.5
Large
0.8
0.50
pillai_bartlett_trace for robustness, wilks_lambda for convention, partial_eta_squared for interpretability
Recommended Measure
5
Available Metrics
ReportUse pillai_bartlett_trace for robustness, wilks_lambda for convention, partial_eta_squared for interpretability to represent clinical impact magnitude.
08Statistical Power

Sample Size

Guidelines for minimum sample requirements and power analysis parameters.

An underpowered study is an ethical failure. Respect the data by collecting enough of it.
Power Protocol
Floor Requirements

n per cell must exceed number of DVs (absolute minimum). Recommended: n ≥ 20 per cell for 2-3 DVs

Effect SizeParametersRequired n
Small Effectα=.05, power=.80n ≈ 200 per group
Medium Effectα=.05, power=.80n ≈ 35 per group
Large Effectα=.05, power=.80n ≈ 15 per group
G*Power StrategyUse G*Power: F-test → MANOVA: Global effects. Input: effect size f², α, power, number of groups, number of DVs, correlations among DVs
09APA narrative blueprint

Reporting

How to compile statistical results into publication prose matching APA and journal style guides.

Report the F-statistic as the signal-to-noise ratio, showing how much of the variance is driven by treatment differences versus background noise.
Narrative Arc
Worked APA paragraph example
A two-way MANOVA was conducted to examine effects of psychotherapy type (CBT, ACT, Psychodynamic) and treatment duration (short-term, long-term) on mental health outcomes (anxiety and depression). The two DVs were moderately correlated (r = .52), supporting MANOVA's use over separate ANOVAs. Box's M test indicated equal covariance matrices across groups (p = .08), and no multivariate outliers were detected (all D² < 13.8). Using Pillai's Trace, results revealed significant main effects for therapy type, V = 0.32, F(4, 288) = 13.45, p < .001, partial η² = .16 (large effect), and duration, V = 0.18, F(2, 143) = 15.67, p < .001, partial η² = .18 (large effect). The Therapy × Duration interaction was not significant, V = 0.03, F(4, 288) = 1.12, p = .35. Follow-up univariate ANOVAs (α = .025 with Bonferroni correction) revealed significant effects of therapy and duration on both anxiety (F[2,144] = 18.34, p < .001; F[1,144] = 31.23, p < .001) and depression (F[2,144] = 22.56, p < .001; F[1,144] = 28.91, p < .001). Post-hoc comparisons indicated CBT was superior to both ACT and Psychodynamic therapy on both outcomes (all p < .001), with long-term treatment yielding better outcomes than short-term across all therapies. Findings support CBT as the most effective treatment for comorbid anxiety and depression, with dose-response effects favoring longer duration.
Reusable template

A two-way MANOVA was conducted to examine the effects of IV1 and IV2 on list DVs. The number DVs were describe correlation: moderately/highly correlated, r = .XX to .YY, supporting the use of MANOVA. Preliminary assumption testing revealed state Box's M result, outlier status, normality. Using Pillai's Trace/Wilks' Lambda (robust to assumption violations), results revealed describe significance of main effects and interaction with V or Λ, F(df1, df2) = X.XX, p = .XXX, partial η² = .XX, and interpretation of effect size. Follow-up univariate ANOVAs (α = .05/k with Bonferroni correction) indicated describe which DVs showed significant effects. Post-hoc pairwise comparisons revealed specific group differences with p-values. Interpret findings in context.

Essential statistics to report
  • Multivariate test statistic (Pillai's V or Wilks' Λ)
  • F-statistic with df1 and df2
  • p-values for all effects (main effects and interaction)
  • Effect sizes (partial η² or V)
  • Box's M test result
  • Correlation matrix among DVs
  • Follow-up univariate ANOVA results with Bonferroni correction
  • Post-hoc pairwise comparisons with adjusted p-values
  • Descriptive statistics (M, SD) for all DV × IV combinations
  • Statement about assumptions (normality, outliers, homogeneity)
10Exhibit Builder

Manuscript Lab

Copy standard summary tables and forensic reporting grids to outline analysis details.

Table 1: Two-Way MANOVA for Multivariate Health Profiles
EffectPillai's TraceFHypoth dfError dfpηp²
Diet.3108.456286< .001.15
Exercise.15012.203142< .001.21
Diet × Exercise.0851.426286.205.03
Note. Factors: Diet (A/B/C) × Exercise (High/Low). Multivariate Outcome: [BMI, Cholesterol, BP]. N = 150.
Diet × Exercise (p=.205)No significant multivariate interaction. This simplifies the narrative: Diet and Exercise operate as independent levers on health.
Exercise (ηp² = .21)Exercise is the stronger driver of the holistic health profile compared to Diet (.15), assuming Pillai's trace metric.
Header glossary

The Multivariate Synergy. Tests if the combined effect of Diet and Exercise creates a unique health profile distinct from their additive effects.

The Robust Omnibus. The most conservative and reliable statistic for multivariate effects, especially with small samples or deviations.

Multivariate Effect Size. The proportion of generalized variance in the outcome set explained by the factor.

11Algorithmic Logic

Command Center

Syntax libraries and function parameters for executing calculations in stats packages.

Code is the modern laboratory. Clean execution ensures reproducible discovery.
Execution Engine
# 1. Bind Outcomes
Y <- cbind(df$bmi, df$chol, df$bp)

# 2. Execute 2-Way MANOVA
model <- manova(Y ~ diet * exercise, data = df)
summary(model, test = 'Pillai')

# 3. Visualize Multivariate Separation
heplot(model)
Library stack
R
statscarheplot
Python
statsmodels
Elite Forensic Strike

If the multivariate interaction is non-significant, proceed to 'Descriptive Discriminant Analysis' to see which variable drives the main effects.

# Canonical Discriminant Analysis
candisc::candisc(model, term = 'diet')

# Check Multivariate Homogeneity
biotools::boxM(Y, df$diet)
12The Over-adjustment Trap

Common Mistakes

Analytical caveats and corrections to maintain modeling integrity.

Wisdom is learning from the failures of others. Anticipate the error before it occurs.
Defensive Logic
Why it's wrong
Inflates Type I error (familywise error rate) when DVs are tested separately without correction. With 2 DVs at α = .05 each, familywise error ≈ .10 (10% false positive rate). MANOVA controls this by testing DVs jointly. Also loses power if DVs are moderately correlated (MANOVA more powerful than Bonferroni-corrected separate tests when .3 < r < .7).
The correction
Use MANOVA when: (1) DVs are conceptually related and moderately correlated (.3 < r < .7), (2) you want to test multivariate null hypothesis (groups differ on DV combination), (3) want to control familywise Type I error. If DVs uncorrelated (r < .3), separate ANOVAs with Bonferroni correction are acceptable and may have more power.
Why it's wrong
A significant MANOVA tells you groups differ on some linear combination of DVs, but doesn't specify which DVs drive the effect. You cannot conclude all DVs show significant group differences—some DVs may not differ individually even with significant MANOVA.
The correction
After significant MANOVA: (1) Run univariate ANOVAs on each DV separately with Bonferroni correction (α = .05 / number of DVs). (2) Conduct discriminant function analysis to identify which linear combination of DVs maximally separates groups. (3) Report which specific DVs show significant effects with adjusted p-values. Example: 'Follow-up univariate ANOVAs (α = .025) revealed significant effects on anxiety (p < .001) but not depression (p = .08).'
Why it's wrong
Heterogeneous covariance matrices inflate Type I error, especially with unequal cell sizes. Wilks' Lambda is particularly sensitive to this violation. Using standard MANOVA with violated Box's M leads to invalid p-values and inflated false positives.
The correction
If Box's M p < .001 (use conservative α = .001, not .05): (1) BEST: Use Pillai's Trace instead of Wilks' Lambda (more robust to heterogeneity). (2) Transform DVs to stabilize variances. (3) Use robust MANOVA methods or permutation MANOVA. (4) Ensure balanced design (equal n per cell) to minimize impact. (5) If severe violation persists: run separate Welch ANOVAs (robust to unequal variances) on each DV with Bonferroni correction.
Why it's wrong
Covariance matrix becomes singular (non-invertible), making MANOVA impossible. Even with n slightly above number of DVs, covariance estimates are unstable, leading to inflated Type I error or poor power. MANOVA requires sufficient df for error to estimate covariance structure reliably.
The correction
Ensure n_per_cell ≥ number of DVs + 10 (minimum). If insufficient n: (1) Drop less important DVs (keep 2-3 most theoretically relevant). (2) Use PCA to reduce dimensionality (ANOVA on PC scores). (3) Create composite scores (weighted average of DVs). (4) Run separate univariate ANOVAs with Bonferroni correction. (5) Collect more data. Never proceed with MANOVA if smallest cell has n ≤ number of DVs.
Why it's wrong
If uncorrelated (r < .3): MANOVA has no advantage over separate ANOVAs—you lose power for no benefit. If highly correlated (r > .9, multicollinearity): redundant DVs inflate Type I error, make interpretation difficult, and destabilize covariance matrix. MANOVA is most powerful when DVs are moderately correlated (.3-.7).
The correction
Check DV correlations first. If r < .3 (uncorrelated): run separate univariate ANOVAs with Bonferroni correction—simpler and often more powerful. If r > .9 (multicollinearity): (1) Drop redundant DVs (keep one representative measure), (2) Compute composite score via PCA or factor analysis, (3) Use SEM if testing latent construct. Optimal MANOVA usage: .3 < r < .7 (moderate correlation).
Why it's wrong
A case can be univariately normal on each DV but still be a multivariate outlier (unusual combination of DV values). Multivariate outliers distort covariance matrix, inflate Mahalanobis distances, and can dominate MANOVA results (especially with small n). Univariate outlier checks miss these cases.
The correction
Compute Mahalanobis distance (D²) for each case. Flag cases with D² > χ²_critical (df = number of DVs, α = .001). For 2 DVs: D² > 13.8, for 3 DVs: D² > 16.3. Visualize: scatterplot matrix with ellipses, or D² plot. If outliers found: (1) Verify data entry errors, (2) Report with/without outliers (sensitivity analysis), (3) Use robust MANOVA, (4) Winsorize extreme values. Justify any exclusions transparently.
Why it's wrong
Roy's largest root is most powerful when all group differences lie on a single dimension, but it's also most liberal (highest Type I error). Cherry-picking Roy's result when Pillai and Wilks are non-significant inflates false positives. Roy's should only be used when theoretically justified that effect is unidimensional.
The correction
Primary recommendation: use Pillai's Trace (most robust to violations) or Wilks' Lambda (most common, equivalent to likelihood ratio). Report Roy's only if: (1) theoretically expect unidimensional effect, AND (2) other statistics also significant. If Pillai/Wilks non-significant but Roy's significant, this is likely a false positive—do not report as significant without strong theoretical justification. Never select test statistic post-hoc based on which gives lowest p-value.
Why it's wrong
MANOVA tests whether groups differ on DVs, but association ≠ causation. Without random assignment, confounds and self-selection bias prevent causal inference. Observational comparisons (e.g., comparing existing therapy groups) cannot establish causation.
The correction
For causal claims: (1) Use RCT with random assignment to IV levels. (2) If observational: use causal inference methods (propensity score matching, IPTW) and report associations, not effects. (3) State 'X was associated with Y' (not 'X caused Y'). (4) Discuss confounds and alternative explanations as limitations. (5) Be explicit about study design (experimental vs observational) in methods section.
13Academic Lineage

References

Scholarly lineage and citation keys grounding the statistical framework.

We stand on the shoulders of giants. Honor the source of the method.
Academic Lineage
[1]
Hofmann, S. G., Asnaani, A., Vonk, I. J., Sawyer, A. T., & Fang, A. (2012). The efficacy of cognitive behavioral therapy: A review of meta-analyses. Cognitive Therapy and Research, 36(5), 427-440.
Meta-analysis documenting CBT efficacy for anxiety and depression (d = 0.7-0.9). Basis for Example 1.
doi: 10.1007/s10608-012-9476-1
[2]
Lillard, A. S. (2012). Preschool children's development in classic Montessori, supplemented Montessori, and conventional programs. Journal of School Psychology, 50(3), 379-401.
Montessori education effects on academic outcomes with class size moderators. Basis for Example 2.
doi: 10.1016/j.jsp.2012.01.001
[3]
Tabachnick, B. G., & Fidell, L. S. (2019). Using Multivariate Statistics (7th ed.). Pearson.
Comprehensive textbook on MANOVA assumptions, diagnostics, effect sizes, and follow-up tests. Chapter 7.
[4]
Huberty, C. J., & Olejnik, S. (2006). Applied MANOVA and Discriminant Analysis (2nd ed.). Wiley.
Authoritative guide to MANOVA, discriminant analysis, and interpretation. Covers Box's M, Pillai vs Wilks.
[5]
Box, G. E. P. (1949). A general distribution theory for a class of likelihood criteria. Biometrika, 36(3/4), 317-346.
Original paper on Box's M test for homogeneity of covariance matrices in MANOVA.
doi: 10.2307/2332671
[6]
Olson, C. L. (1974). Comparative robustness of six tests in multivariate analysis of variance. Journal of the American Statistical Association, 69(348), 894-908.
Monte Carlo study showing Pillai's Trace is most robust to violations of assumptions.
doi: 10.1080/01621459.1974.10480224
A multivariate interaction is the ultimate expression of clinical complexity. Unpack it with the care of a forensic auditor, or risk missing the forest for the trees.
The Interpretive Rigor Directive
statminds · Two-WayMind reference · v2.2 · updated 2026-01-1715 of 15 sections