Repeated measures ANOVA?

21 views (last 30 days)
Johanna
Johanna on 12 Feb 2025
Commented: Johanna on 13 Feb 2025
Hi everyone,
I have a quite simple question but am unsure about how to implement it in Matlab.
I have data from 500 participants and measured their brain network coupling during eight different conditions. Now I want to test wether the group means of the 8 distinct conditions are significantly different from one another (and if so, which conditions differ). As the brain network coupling values in the eight conditions come from the same participants, they are not independent.
How would I go about this? Seems like I need a repeated measures ANOVA, as my 'groups' are not independent (measurements from the same participants).
I would appreciate your help (and some sample code..)!

Accepted Answer

Manikanta Aditya
Manikanta Aditya on 12 Feb 2025
It sounds like you're on the right track with using a repeated measures ANOVA for your data. Since the measurements come from the same participants, this method will account for the within-subject variability.
  1. Organize Your Data: Ensure your data is in a suitable format. You can use a matrix where each row represents a participant and each column represents a condition.
  2. Create a Table: Convert your data matrix into a table, which is required for the fitrm function.
  3. Define the Model: Use the fitrm function to fit a repeated measures model.
  4. Run the ANOVA: Use the ranova function to perform the repeated measures ANOVA.
Here's a sample code to guide you through the process:
% Sample data: 500 participants, 8 conditions
data = rand(500, 8); % Replace this with your actual data
% Convert data to table
T = array2table(data, 'VariableNames', {'Cond1', 'Cond2', 'Cond3', 'Cond4', 'Cond5', 'Cond6', 'Cond7', 'Cond8'});
% Define the repeated measures model
rm = fitrm(T, 'Cond1-Cond8 ~ 1', 'WithinDesign', table([1 2 3 4 5 6 7 8]', 'VariableNames', {'Condition'}));
% Perform repeated measures ANOVA
ranovatbl = ranova(rm);
% Display the results
disp(ranovatbl);
SumSq DF MeanSq F pValue pValueGG pValueHF pValueLB _______ ____ ________ ______ _______ ________ ________ ________ (Intercept):Condition 0.82462 7 0.1178 1.4643 0.17526 0.17642 0.17527 0.22683 Error(Condition) 281.02 3493 0.080453
% Perform post-hoc tests
multcompare(rm, 'Condition');
I hope this helps you.
  1 Comment
Johanna
Johanna on 13 Feb 2025
Hey! Thank you, this was very helpful. I just had to adjust something minor, as running your code above resulted in an error message. With this small chage it worked perfectly!
% Sample data: 500 participants, 8 conditions
data = rand(500, 8); % Replace this with your actual data
% Convert data to table
T = array2table(data, 'VariableNames', {'Cond1', 'Cond2', 'Cond3', 'Cond4', 'Cond5', 'Cond6', 'Cond7', 'Cond8'});
% Define Table
numbers = [1; 2; 3; 4; 5; 6; 7; 8]
Infotable = array2table(numbers, 'VariableNames', {'Condition'})
% Define the repeated-measures model
rm = fitrm(T, 'Cond1-Cond8 ~ 1', 'WithinDesign', Infotable);
% Perform repeated measures ANOVA
ranovatbl = ranova(rm);
% Display the results
disp(ranovatbl);

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!