Beauchamp:ANOVAs in MATLAB

From OpenWetWare

While all of your data may be in Excel, unfortunately, the Excel for Mac doesn't do ANOVAs.

So, let's use MATLAB! In this example, I'm doing a 2x2 ANOVA on the BOLD amplitudes of response in the right STS (dependent measure).

The two factors are perceiver group (strong McGurk perceivers are '1' and non-perceivers are '2') and stimulus condition (McGurk is '1', non-McGurk incongruent is '2', and congruent is '3').

I'd like to know if there is a significant difference in the right STS response between the subjects who did and did not perceive the McGurk effect, between the responses to the 3 different stimuli, and if there is an interaction between perceiver group and stimulus type.

The data for the dependent measure and each factor are put into columns in Excel.

R_STS	PerceiverGroup	StimulusType				
0.1662	1	           1				
0.0467	1	           1				
0.1364	1	           1				
-0.0025	1	           1				
0.0185	1	           1				
0.1162	1	           1				
0.1935	1	           1				
0.2685	2	           1				
0.0704	2	           1				
0.3541	2	           1				
0.1392	2	           1				
0.2367	2	           1			
0.0507	2	           1			
-0.0558	2	           1			
0.0738	2	           1			
0.0473	2	           1			
0.0119	2	           1			
0.1375	1	           2			
0.1354	1	           2			
0.1931	1	           2			
-0.26	1	           2			
0.0425	1	           2			
0.2904	1	           2			
0.3069	1	           2			
0.4702	2	           2			
-0.0295	2	           2			
0.391	2	           2			
0.2323	2	           2			
0.6401	2	           2			
0.0562	2	           2			
0.0488	2	           2			
0.0567	2	           2			
0.0635	2	           2			
-0.0592	2	           2			
0.1264	1	           3			
0.1002	1	           3			
0.1368	1	           3			
-0.0933	1	           3			
0.0391	1	           3			
0.2585	1	           3			
0.1405	1	           3			
-0.002	2	           3			
0.0307	2	           3			
0.1367	2	           3			
0.2007	2	           3			
0.438	2	           3			
0.0782	2	           3			
0.0595	2	           3			
0.0279	2	           3			
-0.0203	2	           3			
-0.0746	2	           3


Then, I copied the data from each into a array in MATLAB with the same name. (Copy only numerical data in "Excel", then type v=[ (paste) ] (enter).

Then, run the function 'anovan.m' in MATLAB:

    anovan(R_STS,{PerceiverGroup StimulusType},'model',2,'varnames',strvcat('Group','Stim'))					

The output is a chart-- copy it back into your Excel spreadsheet to have the numbers handy.

    Source Sum Sq. d.f. Mean Sq. F Prob>F					
    --------------------------------------------------------					
    Group 0.00787 1 0.00787 0.3 0.5848					
    Stim 0.03208 2 0.01604 0.62 0.544					
    Group*Stim 0.01316 2 0.00658 0.25 0.7775					
    Error 1.1696 45 0.02599					
    Total 1.2314 50

In this example, there was not a significant main effect of perceiver group or stimulus type (both p > 0.5) on the right STS response. There was also no interaction between the two factors (p > 0.7).

Degrees of freedom:

For the numerator, it's the number of categories in that factor minus one (a-1). Or, for the interaction, multiply (a-1)*(b-1). 
  In this case, the numerator df is 1 (from 2-1) for the Perceiver Group factor and 2 (from 3-1) for the Stimulus Condition Factor. 
  For the interaction, the numerator df is 2 (from 1*2).
For the denominator, it's the total number of data points (17 * 3 = 51) minus the total number of categories (N - a*b). 
  In this example, the denominator df are 45 (51 - 2*3).