rmanova.m 789 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. function [D,Pa]=rmanova(M)
  2. %[D,Pa]=rmanova(M)
  3. % Input
  4. % M each row is a subject and each column is a condition
  5. % Output
  6. % D is a matrix where the rows are Conditions, Subjects, Interaction, Total
  7. % cols are Sum^2, DF, MSE, F
  8. % Pa is the p value for the conditions subjects effect.
  9. n=size(M,1);
  10. a=size(M,2);
  11. rowMu=mean(M,1);
  12. SSa = n*sum((rowMu-mean(rowMu)).^2);
  13. colMu=mean(M,2);
  14. tt1=(colMu-mean(rowMu)).^2;
  15. SSs = a*sum(tt1(:));
  16. SSt=sum(sum((M-mean(rowMu)).^2));
  17. SSas=SSt-SSa-SSs;
  18. DFa=a-1;
  19. DFs=n-1;
  20. DFas=DFa*DFs;
  21. DFt=a*n;
  22. MSa=SSa/DFa;
  23. MSs=SSs/DFs;
  24. MSas=SSas/DFas;
  25. Fa=double(MSa)/MSas;
  26. Pa = 1-fcdf(Fa, DFa, DFas);
  27. D=[SSa DFa MSa Fa; SSs DFs MSs nan; SSas DFas MSas nan; SSt DFt nan nan];
  28. fprintf('F(%d,%d)=%.2f, p=%.2f\n', DFa, DFas, Fa, Pa);