필터 지우기
필터 지우기

mixed factor ANOVA in Matlab

조회 수: 7 (최근 30일)
Adam Ranson
Adam Ranson 2017년 5월 30일
댓글: Adam Ranson 2017년 6월 1일
Hi
I'm trying to understand how to do a mixed factor ANOVA in Matlab with one within subject factor and one between subject factor. I've been trying to reproduce the analysis performed here: https://www.youtube.com/watch?v=JBoHHFvVsqw which results in a test of the effect of 'Week', 'School' and the interaction between 'Week' and 'School'. I've tried the following code so far but I'm struggling to understand the output which only partly matches the example. The help on ranova doesn't specify what the colon means when listing the terms (seems to be interaction?), and I don't understand why there is no report of the effect of School alone, or if (Intercept):Week is telling me the effect of Week alone. This is the data/code I'm working on:
% define data
dataTable = array2table([3,5,7,0;4,4,8,0;5,3,7,0;3,5,8,0;4,5,7,0;3,5,7,0;1,5,9,1;2,4,8,1;1,3,9,1;1,5,8,1;1,5,7,1;2,4,9,1]);
% convert to table format
dataTable.Properties.VariableNames = {'Week1','Week2','Week3','School'};
% define levels of within subject factor
wsVariable = table([0 1 2]','VariableNames',{'Week'});
% run ANOVA
rm = fitrm(dataTable,'Week1,Week2,Week3~School','WithinDesign',wsVariable)
ranovatbl = ranova(rm)
If there are any Mathworks employees out there, my impression is that the help on using these functions could use a few more simple examples such as this one.
Cheers
Adam
  댓글 수: 2
Adam Ranson
Adam Ranson 2017년 5월 31일
Update: To get the between subject main effect I have found that you can do:
ranova(rm,'WithinModel','Week');
The thing that doesn't make sense is why the F value for the within subject factor 'Week' (labelled I think as '(Intercept):Week' in the ranova output) differs from the example I cited. I have run the example in SPSS and using the 'anova_rm' function from the file exchange both of which give me the same F value as the example from youtube (https://www.youtube.com/watch?v=JBoHHFvVsqw). Here is the code to do this ANOVA using the anova_rm function:
dataTable2 = table2array(dataTable);
[p, table] = anova_rm({dataTable2(1:6,1:3) dataTable2(7:12,1:3)});
Adam Ranson
Adam Ranson 2017년 6월 1일
Answer from Mathworks Technical Support:
Thank you for contacting MathWorks Technical Support. If you change your input table so that the School column is of type "categorical" you get the same result for "(Intercept):Week". So, after you set the variable names, insert the following line:
dataTable.School = categorical(dataTable.School);
To also get the analysis of variance for the between-subject effects, use the "anova" method:
anovatbl = anova(rm);

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Repeated Measures and MANOVA에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by