With some help from SPSS support, lots of experimentation, and an archived post on the SPSS listserv I have come up with the following generalised summary of how /LMATRIX and /MMATRIX can be used to decompose a three-way interaction between two repeated measures factors, X_within and Y_within, and one between-subjects factor, group, assuming that each factor has three levels. [Added: I have now added syntax at the end to deal with a four-way interaction including two between-Ss factors. homepages.gold.ac.uk/aphome/cc13spss.sps was helpful here.] If you spot any mistakes, please let me know!
The syntax for the basic ANOVA might look something like this:
GLM XaYa XaYb XaYc XbYa XbYb XbYc XcYa XcYb XcYc BY group /WSFACTOR = X_within 3 Polynomial Y_within 3 Polynomial /METHOD = SSTYPE(3) /CRITERIA = ALPHA(.05) /WSDESIGN = X_within Y_within X_within*Y_within /DESIGN = group .
If I have a significant three-way interaction and want to decompose it, I may be interested in any of the nine simple interaction effects that involve all three levels of the interacting factors, i.e.:
(1-3) X_within*group at Ya, Yb, Yc; (4-6) Y_within*group at Xa, Xb, Xc; (7-9) X_within*Y_within at G1, G2, G3.
The following steps provide some insight into how /LMATRIX and /MATRIX are used on their own before coming to how they are used together to find the nine simple interaction effects mentioned above.
(i.) I can use an /LMATRIX subcommand on its own to define a contrast between my between-Ss factor(s), e.g.:
/LMATRIX 'difference between group1 and group2' group 1 -1 0
In the output from this I get the equivalent of a LSD post-hoc test on the significance of the difference between group1 and group2, averaged across all X and Y. I can run as many of these contrasts as I care to in separate /LMATRIX subcommands.
(ii.) Alternatively I can put more than one contrast into a single /LMATRIX subcommand, separating them by semicolons, e.g.:
/LMATRIX 'pooled group difference' group 1 -1 0; group 1 0 -1
In the output from this I get one test per contrast I define, plus an F-test on the "averaged variable", equivalent to a test on the main effect of group.
(iii.) By extension, I can use an /MMATRIX subcommand on its own to define a contrast between two of my within-Ss variables, e.g.:
/MMATRIX 'difference between Xa and Xb at Y=a' XaYa 1 XbYa -1 XcYa 0
The /MMATRIX could also be written using ALL, so:
/MMATRIX 'Difference between Xa and Xb at Y=a' all 1 0 0 -1 0 0 0 0 0
In the output from this I the equivalent of an unadjusted pairwise comparison (averaging across all groups) between Xa and Xb at Y=a, which could also have been produced through an /EMMEANS subcommand. I can only run one /MMATRIX subcommand at once.
(iv.) However, I can put more than one contrast into a single /MMATRIX subcommand, separating them by semicolons, e.g.:
/MMATRIX 'Pooled X_within difference at Y=a' XaYa 1 XbYa -1 XcYa 0; XaYa 1 XbYa 0 XcYa -1
In the output from this I get one test per contrast I define, plus a multivariate test that is the equivalent of the simple main effect of X_within at Y=a (which I could also produce through an /EMMEANS subcommand).
(v.) I can combine /LMATRIX and /MMATRIX subcommands in the same routine to test for the simple interaction effects between factors, e.g.:
/LMATRIX 'interaction X_within*group at Y=a' group 1 -1 0; group 1 0 -1 /MMATRIX 'Pooled X_within difference at Y=a' XaYa 1 XbYa -1 XcYa 0; XaYa 1 XbYa 0 XcYa -1
Notice that the /LMATRIX description has changed, because inclusion of the /MMATRIX modifies the reported results. In the output from this I get several different results:
First is the K-matrix of contrast results, which in this instance contains four results. L1 column 1 is a test on the difference between (XaYa minus XbYa) for group 1 and (XaYa minus XbYa) for group 2; L1 column 2 is a test on (XaYa minus XcYa) for group 1 and (XaYa minus XcYa) for group 2. L2 is the same as L1 except the comparison is between groups 1 and 3. In other words these are tests on the relative size of selected pairwise comparisons.
Second is a multivariate test result, which is a test on the interaction X_within*group at Y=a. The above syntax can therefore be generalized to find any of the simple interaction effects involving one-within and one between-Ss factor at fixed levels of the other within-Ss factor, i.e., 1-6 from the beginning.
Finally are two univariate test results, which (I think) are a test of the simple interaction effect of between group and Xa/Xb at Ya, and between group and Xa/Xc at Ya, respectively.
(vi.) The last combination of /MMATRIX and /LMATRIX needed to solve for simple interaction effects 7-9 (involving two within-Ss factors at fixed levels of the between-Ss factor) requires three different /LMATRIX subcommands to fix the level of the between-subjects factor group:
/LMATRIX 'interaction X_within*Y_within at G=1' Intercept 1 group 1 0 0 /LMATRIX 'interaction X_within*Y_within at G=2' Intercept 1 group 0 1 0 /LMATRIX 'interaction X_within*Y_within at G=3' Intercept 1 group 0 0 1
Note that these are *not* pooled. To get the interaction of the two within factors X and Y use:
/MMATRIX 'pooled X_within and Y_within differences' all 1 -1 0 -1 1 0 0 0 0; all 1 0 -1 0 0 0 -1 0 1
Here these are pooled over the two linearly independent possibilities: the interaction of 1 and 2, and of 1 and 3. The third, the interaction of levels 2 and 3, is omitted because it is redundant.
This produces three multivariate results, one for each level of G for the simple interaction effect of X_within*Y_within. There are also three pairs of univariate results: I think the first is a test of the simple interaction effect of Xa/Xb * Ya/Yb at the relevant level of group; the second is a test of the simple interaction effect of Xa/Xc *Ya/Yc at the relevant level of group.
(vii.) If there is more than one between-Ss factor then the /LMATRIX subcommand can be adjusted accordingly. For example, if I have two between-Ss factors (sex [two levels] and condition [2 levels]) and two within-Ss factors (X_within and Y_within as above) and am interested in the simple interaction effect of sex*condition*X_within at each level of Y_within, my syntax will look like:
/LMATRIX 'interaction sex*condition*X_within at Y=a' sex*condition 1 -1 -1 1; /MMATRIX 'Pooled X_within difference at Y=a' XaYa 1 XbYa -1 XcYa 0; XaYa 1 XbYa 0 XcYa -1
If in the same situation I were interested in the simple interaction effect of sex*X_within at each level of Y_within (i.e., I am not interested in variation with condition), I will still need to include higher order terms involving the between-Ss factors of interest in my /LMATRIX subcommand; to complicate matters the coefficients in the higher order effect need to add up to the coefficients in the lower order effect, so decimal or fractional values are needed, viz.:
/LMATRIX 'interaction sex*X_within at Y=a' sex 1 -1 sex*condition .5 -.5 .5 -.5 /MMATRIX 'Pooled X_within difference at Y=a' XaYa 1 XbYa -1 XcYa 0; XaYa 1 XbYa 0 XcYa -1
Psychology and Religion Research Programme
Faculty of Divinity, University of Cambridge
West Road, Cambridge, CB3 9BS, UK
tel +44 (0)1223 763010 · fax +44 (0)1223 763003