/* Data step for read in "dental" data in long form */ DATA dntllong; INPUT sex $ @@; if sex='girl' then s=11; if sex='boy' then s=16; do i = 1 to s; INPUT subject @@; do j = 1 to 4; INPUT age mm @@; output; end; end; drop i; drop j; cards; girl 1 1 21 2 20 3 21.5 4 23 2 1 21 2 21.5 3 24 4 25.5 3 1 20.5 2 24 3 24.5 4 26 4 1 23.5 2 24.5 3 25 4 26.5 5 1 21.5 2 23 3 22.5 4 23.5 6 1 20 2 21 3 21 4 22.5 7 1 21.5 2 22.5 3 23 4 25 8 1 23 2 23 3 23.5 4 24 9 1 20 2 21 3 22 4 21.5 10 1 16.5 2 19 3 19 4 19.5 11 1 24.5 2 25 3 28 4 28 boy 12 1 26 2 25 3 29 4 31 13 1 21.5 2 22.5 3 23 4 26.5 14 1 23 2 22.5 3 24 4 27.5 15 1 25.5 2 27.5 3 26.5 4 27 16 1 20 2 23.5 3 22.5 4 26 17 1 24.5 2 25.5 3 27 4 28.5 18 1 22 2 22 3 24.5 4 26.5 19 1 24 2 21.5 3 24.5 4 25.5 20 1 23 2 20.5 3 31 4 26 21 1 27.5 2 28 3 31 4 31.5 22 1 23 2 23 3 23.5 4 25 23 1 21.5 2 23.5 3 24 4 28 24 1 17 2 24.5 3 26 4 29.5 25 1 22.5 2 25.5 3 25.5 4 26 26 1 23 2 24.5 3 26 4 30 27 1 22 2 21.5 3 23.5 4 25 ; run; PROC PRINT data=dntllong; run; PROC SORT data=dntllong; BY sex age; run; PROC MEANS data=dntllong; VAR mm; BY sex age; OUTPUT out=mymeans mean=ybar; run; /* Plot to investigate whether there is sex*age interaction */ PROC SGPLOT data=mymeans; SERIES X=age Y=ybar / GROUP=sex; RUN; /* Using the "univariate" approach on the "long" data set */ /* This approach makes the "compound symmetry" assumption */ PROC GLM DATA = dntllong; CLASS sex subject age; MODEL mm = sex age sex*age subject(sex); TEST h=sex e=subject(sex); LSMEANS sex / e=subject(sex) pdiff; /* no adjustment needed since only 2 levels */ MEANS age / cldiff tukey; run; /* DATA step to read in the dental data in the "wide" format */ DATA dntlwide; INPUT sex $ @@; if sex='girl' then s=11; if sex='boy' then s=16; do i = 1 to s; INPUT subject @@; INPUT age1 mm1 age2 mm2 age3 mm3 age4 mm4 @@; output; end; drop i; cards; girl 1 1 21 2 20 3 21.5 4 23 2 1 21 2 21.5 3 24 4 25.5 3 1 20.5 2 24 3 24.5 4 26 4 1 23.5 2 24.5 3 25 4 26.5 5 1 21.5 2 23 3 22.5 4 23.5 6 1 20 2 21 3 21 4 22.5 7 1 21.5 2 22.5 3 23 4 25 8 1 23 2 23 3 23.5 4 24 9 1 20 2 21 3 22 4 21.5 10 1 16.5 2 19 3 19 4 19.5 11 1 24.5 2 25 3 28 4 28 boy 12 1 26 2 25 3 29 4 31 13 1 21.5 2 22.5 3 23 4 26.5 14 1 23 2 22.5 3 24 4 27.5 15 1 25.5 2 27.5 3 26.5 4 27 16 1 20 2 23.5 3 22.5 4 26 17 1 24.5 2 25.5 3 27 4 28.5 18 1 22 2 22 3 24.5 4 26.5 19 1 24 2 21.5 3 24.5 4 25.5 20 1 23 2 20.5 3 31 4 26 21 1 27.5 2 28 3 31 4 31.5 22 1 23 2 23 3 23.5 4 25 23 1 21.5 2 23.5 3 24 4 28 24 1 17 2 24.5 3 26 4 29.5 25 1 22.5 2 25.5 3 25.5 4 26 26 1 23 2 24.5 3 26 4 30 27 1 22 2 21.5 3 23.5 4 25 ; run; PROC PRINT data=dntlwide; run; /* Checking the sample within-subjects variance covariance matrix: */ PROC CORR DATA=dntlwide COV NOPROB NOCORR NOSIMPLE; VAR mm1-mm4; /* These identify the four mm measurements in SAS */ run; /* Using the "multivariate" approach on the "wide" data set. */ /* This approach includes the "conservative" adjusted F-test in the case that */ /* the "compound symmetry" assumption is violated. */ PROC GLM data=dntlwide; CLASS SEX; MODEL mm1 - mm4 = sex / nouni; REPEATED age 4 / printe; /* printe option produces a test for sphericity, of which compound symmetry is a special case */ run; /************************************************************************************************/ /* Analysis using PROC MIXED */ /* The data MUST be in "long" format for PROC MIXED */ /* You can specify any of a number of within-subjects covariance structures. */ /* One possibility is to choose the model with the minimum AIC. */ PROC MIXED DATA=dntllong; CLASS subject sex age; MODEL mm = sex age sex*age; REPEATED age / SUBJECT=subject TYPE=CS; /* compound symmetry structure assumed */ LSMEANS sex / pdiff; /* only two levels of sex, no multiple-comparison adjustment needed */ LSMEANS age / pdiff adjust=tukey; run; PROC MIXED DATA=dntllong; CLASS subject sex age; MODEL mm = sex age sex*age; REPEATED age / SUBJECT=subject TYPE=HF; /* Hyuhn-Feldt structure assumed */ LSMEANS sex / pdiff; /* only two levels of sex, no multiple-comparison adjustment needed */ LSMEANS age / pdiff adjust=tukey; run; PROC MIXED DATA=dntllong; CLASS subject sex age; MODEL mm = sex age sex*age; REPEATED age / SUBJECT=subject TYPE=AR(1); /* first-order autoregressive structure assumed */ LSMEANS sex / pdiff; /* only two levels of sex, no multiple-comparison adjustment needed */ LSMEANS age / pdiff adjust=tukey; run; PROC MIXED DATA=dntllong; CLASS subject sex age; MODEL mm = sex age sex*age; REPEATED age / SUBJECT=subject TYPE=ARH(1); /* first-order autoregressive structure with heterogeneous variances assumed */ LSMEANS sex / pdiff; /* only two levels of sex, no multiple-comparison adjustment needed */ LSMEANS age / pdiff adjust=tukey; run; PROC MIXED DATA=dntllong; CLASS subject sex age; MODEL mm = sex age sex*age; REPEATED age / SUBJECT=subject TYPE=UN; /* completely unstructured covariance structure assumed */ LSMEANS sex / pdiff; /* only two levels of sex, no multiple-comparison adjustment needed */ LSMEANS age / pdiff adjust=tukey; run;