SAS proc mixed is a very powerful procedure for a wide variety of statistical analyses, including repeated measures analysis of variance. We will illustrate how you can perform a repeated measures ANOVA using a standard type of analysis using proc glm and then show how you can perform the same analysis using proc mixed. We use an example of from Design and Analysis by G. Keppel. Pages 414-416. This example contains eight subjects (sub) with one between subjects IV with two levels (group) and one within subjects IV with four levels (indicated by position dv1–dv4). These data are read into a temporary SAS data file called wide below.
DATA wide; INPUT sub group dv1 dv2 dv3 dv4; CARDS; 1 1 3 4 7 3 2 1 6 8 12 9 3 1 7 13 11 11 4 1 0 3 6 6 5 2 5 6 11 7 6 2 10 12 18 15 7 2 10 15 15 14 8 2 5 7 11 9 ; RUN; PROC PRINT DATA=wide ; RUN;OBS SUB GROUP DV1 DV2 DV3 DV4 1 1 1 3 4 7 3 2 2 1 6 8 12 9 3 3 1 7 13 11 11 4 4 1 0 3 6 6 5 5 2 5 6 11 7 6 6 2 10 12 18 15 7 7 2 10 15 15 14 8 8 2 5 7 11 9
We start by showing how to perform a standard 2 by 4 (between / within) ANOVA using proc glm.
PROC GLM DATA=wide; CLASS group; MODEL dv1-dv4 = group / NOUNI ; REPEATED trial 4; RUN;
The results of this analysis are shown below.
General Linear Models Procedure Class Level Information Class Levels Values GROUP 2 1 2 Number of observations in data set = 8 General Linear Models Procedure Repeated Measures Analysis of Variance Repeated Measures Level Information Dependent Variable DV1 DV2 DV3 DV4 Level of TRIAL 1 2 3 4 Manova Test Criteria and Exact F Statistics for the Hypothesis of no TRIAL Effect H = Type III SS&CP Matrix for TRIAL E = Error SS&CP Matrix S=1 M=0.5 N=1 Statistic Value F Num DF Den DF Pr > F Wilks' Lambda 0.00829577 159.3911 3 4 0.0001 Pillai's Trace 0.99170423 159.3911 3 4 0.0001 Hotelling-Lawley Trace 119.54335260 159.3911 3 4 0.0001 Roy's Greatest Root 119.54335260 159.3911 3 4 0.0001 Manova Test Criteria and Exact F Statistics for the Hypothesis of no TRIAL*GROUP Effect H = Type III SS&CP Matrix for TRIAL*GROUP E = Error SS&CP Matrix S=1 M=0.5 N=1 Statistic Value F Num DF Den DF Pr > F Wilks' Lambda 0.60915493 0.8555 3 4 0.5324 Pillai's Trace 0.39084507 0.8555 3 4 0.5324 Hotelling-Lawley Trace 0.64161850 0.8555 3 4 0.5324 Roy's Greatest Root 0.64161850 0.8555 3 4 0.5324 General Linear Models Procedure Repeated Measures Analysis of Variance Tests of Hypotheses for Between Subjects Effects Source DF Type III SS Mean Square F Value Pr > F GROUP 1 116.28125000 116.28125000 2.51 0.1645 Error 6 278.43750000 46.40625000 General Linear Models Procedure Repeated Measures Analysis of Variance Univariate Tests of Hypotheses for Within Subject Effects Source: TRIAL Adj Pr > F DF Type III SS Mean Square F Value Pr > F G - G H - F 3 129.59375000 43.19791667 22.34 0.0001 0.0001 0.0001 Source: TRIAL*GROUP Adj Pr > F DF Type III SS Mean Square F Value Pr > F G - G H - F 3 3.34375000 1.11458333 0.58 0.6380 0.5693 0.6380 Source: Error(TRIAL) DF Type III SS Mean Square 18 34.81250000 1.93402778 Greenhouse-Geisser Epsilon = 0.6337 Huynh-Feldt Epsilon = 1.0742
Now, we will illustrate how you can perform this same analysis in proc mixed. First, we need to reshape the data so it is in the shape expected by proc mixed. proc glm expects the data to be in a wide format, where each observation corresponds to a subject. By contrast, proc mixed expects the data to be in a long format where each observation corresponds to a trial. In this case, proc mixed expects that there would be four observations per subject and that each observation would correspond to the measurements on the four different trials. Below we show how you can reshape the data for analysis in proc mixed.
DATA long ; SET Wide; dv = dv1; trial = 1; OUTPUT; dv = dv2; trial = 2; OUTPUT; dv = dv3; trial = 3; OUTPUT; dv = dv4; trial = 4; OUTPUT; DROP dv1 - dv4 ; RUN; PROC PRINT DATA=long ; RUN;
You can compare the proc print for wide with the proc print for long to verify that the data were properly reshaped.
OBS SUB GROUP DV TRIAL 1 1 1 3 1 2 1 1 4 2 3 1 1 7 3 4 1 1 3 4 5 2 1 6 1 6 2 1 8 2 7 2 1 12 3 8 2 1 9 4 9 3 1 7 1 10 3 1 13 2 11 3 1 11 3 12 3 1 11 4 13 4 1 0 1 14 4 1 3 2 15 4 1 6 3 16 4 1 6 4 17 5 2 5 1 18 5 2 6 2 19 5 2 11 3 20 5 2 7 4 21 6 2 10 1 22 6 2 12 2 23 6 2 18 3 24 6 2 15 4 25 7 2 10 1 26 7 2 15 2 27 7 2 15 3 28 7 2 14 4 29 8 2 5 1 30 8 2 7 2 31 8 2 11 3 32 8 2 9 4
Now that the data are in the proper shape, we can analyze it with proc mixed.
The class and model statements are used much the same as with proc glm. However, the repeated statement is different. The repeated statement is used to indicate the within subjects (repeated) variables, but note that trial is on the class statement, unlike proc glm. This is because the data are in long format and that there indeed is a separate variable indicating the trials.
We also use the repeated statement to indicate which variable indicates the different subjects (via subject=sub) and we can specify the covariance structure among the repeated measures (in this case we choose compound symmetry via type=cs which is the same structure that proc glm uses. Unlike proc glm, proc mixed has a wide variety of covariance structures you can choose from so you can choose one that matches your data (see the proc mixed manual for more information on this).
PROC MIXED DATA=long; CLASS sub group trial; MODEL dv = group trial group*trial; REPEATED trial / SUBJECT=sub TYPE=CS; run;
As you see below, the results correspond to those produced by proc glm. Note that proc mixed does not produce Sums of Squares or Mean Squares. This is because proc mixed uses maximum likelihood estimation instead of a sums of squares style of computation.
The MIXED Procedure Class Level Information Class Levels Values SUB 8 1 2 3 4 5 6 7 8 GROUP 2 1 2 TRIAL 4 1 2 3 4 REML Estimation Iteration History Iteration Evaluations Objective Criterion 0 1 96.74510121 1 1 69.98784546 0.00000000 Convergence criteria met. Covariance Parameter Estimates (REML) Cov Parm Subject Estimate CS SUB 11.11805556 Residual 1.93402778 Model Fitting Information for DV Description Value Observations 32.0000 Res Log Likelihood -57.0484 Akaike's Information Criterion -59.0484 Schwarz's Bayesian Criterion -60.2265 -2 Res Log Likelihood 114.0969 Null Model LRT Chi-Square 26.7573 Null Model LRT DF 1.0000 Null Model LRT P-Value 0.0000 Tests of Fixed Effects Source NDF DDF Type III F Pr > F GROUP 1 6 2.51 0.1645 TRIAL 3 18 22.34 0.0001 GROUP*TRIAL 3 18 0.58 0.6380
Proc mixed is much more powerful than proc glm. Because it is more powerful, it is more complex to use. This FAQ just scratches the surface in the use of proc mixed.