* Stop syntax and large titles from printing to output.
SET PRINTBACK=NONE HEADER=NO.

***********************************************************************************.
*******              BEGIN DATA MANIPULATION OF CHAPTER 11b EXAMPLE         *******.
*******               CHANGE "filesave" to your directory                   *******.
***********************************************************************************.

* Define location of files used in code below.
FILE HANDLE filesave /NAME = "C:\Dropbox\PilesOfVariance\Chapter11b\SPSS".

* Import chapter 11b multivariate data. 
GET FILE = "filesave/SPSS_Chapter11b.sav".
DATASET NAME Chapter11bmultiv WINDOW=FRONT.
* Also make student mean variable.
COMPUTE SMaggression = MEAN(aggression_year0, aggression_year1, aggression_year2).
VARIABLE LABELS
SMaggression "SMaggression: Student Mean Aggression".
EXECUTE.

* Get class means for student and per-year variables.
* Year 0.
SORT CASES BY ClassID_year0.
AGGREGATE
   /OUTFILE=* MODE=ADDVARIABLES
   /PRESORTED
   /BREAK = ClassID_year0
   /CMgirl_year0 = MEAN(girl)
   /CMaggression_year0 = MEAN(aggression_year0).
VARIABLE LABELS
CMgirl_year0 "CMgirl_year0: % Girls in Class at Year 0"
CMaggression_year0 "CMaggression_year0: Class Mean Aggression at Year 0".
* Year 1.
SORT CASES BY ClassID_year1.
AGGREGATE
   /OUTFILE=* MODE=ADDVARIABLES
   /PRESORTED
   /BREAK = ClassID_year1
   /CMgirl_year1 = MEAN(girl)
   /CMaggression_year1 = MEAN(aggression_year1).
VARIABLE LABELS
CMgirl_year1 "CMgirl_year1: % Girls in Class at Year 1"
CMaggression_year1 "CMaggression_year1: Class Mean Aggression at Year 1".
* Year 2.
SORT CASES BY ClassID_year2.
AGGREGATE
   /OUTFILE=* MODE=ADDVARIABLES
   /PRESORTED
   /BREAK = ClassID_year2
   /CMgirl_year2 = MEAN(girl)
   /CMaggression_year2 = MEAN(aggression_year2).
VARIABLE LABELS
CMgirl_year2 "CMgirl_year2: % Girls in Class at Year 2"
CMaggression_year2 "CMaggression_year2: Class Mean Aggression at Year 2".
EXECUTE.

* Make a copy of Class ID variables.
DATASET ACTIVATE Chapter11bmultiv.
SORT CASES BY StudentID.
COMPUTE copyClassID_year0 = ClassID_year0.
COMPUTE copyClassID_year1 = ClassID_year1.
COMPUTE copyClassID_year2 = ClassID_year2.
EXECUTE.
* Stack multivariate data by year.
DATASET COPY Chapter11b.
DATASET ACTIVATE Chapter11b.
VARSTOCASES
   /MAKE ClassID FROM copyClassID_year0 copyClassID_year1 copyClassID_year2
   /MAKE grade FROM grade_year0 grade_year1 grade_year2
   /MAKE effort FROM effort_year0 effort_year1 effort_year2
   /MAKE aggression FROM aggression_year0 aggression_year1 aggression_year2
   /MAKE CMgirl FROM CMgirl_year0 CMgirl_year1 CMgirl_year2
   /MAKE CMaggression FROM CMaggression_year0 CMaggression_year1 CMaggression_year2
   /INDEX = wave (3)
   /KEEP = ALL.
DATASET NAME Chapter11b WINDOW=FRONT.
COMPUTE year = wave-1.
VARIABLE LABELS
wave "wave: Wave of Study (1-3)"
year "year: Year of Study (0-2)"
ClassID "ClassID: Class ID Variable"
grade "grade: Class Grade"
effort "effort: Teacher-Perceived Student Effort"
aggression "aggression: Teacher-Perceived Student Aggression"
CMgirl "CMgirl: Class Proportion of Girls"
CMaggression "CMaggression: Class Mean Student Aggression".
EXECUTE.

* Create custom intercepts for time-varying group effects.
DATASET NAME Chapter11b WINDOW=FRONT.
* aclass = dummy codes for acute (non-transfer) effects of classrooms across time.
* tclass = dummy codes for cumulative (transfer) effects of classrooms across time.
DOIF (year=0).
COMPUTE aclass0=1.
COMPUTE aclass1=0.
COMPUTE aclass2=0.
COMPUTE tclass0=1.
COMPUTE tclass1=0.
COMPUTE tclass2=0.
END IF.
DOIF (year=1).
COMPUTE aclass0=0.
COMPUTE aclass1=1.
COMPUTE aclass2=0.
COMPUTE tclass0=1.
COMPUTE tclass1=1.
COMPUTE tclass2=0.
END IF.
DOIF (year=2).
COMPUTE aclass0=0.
COMPUTE aclass1=0.
COMPUTE aclass2=1.
COMPUTE tclass0=1.
COMPUTE tclass1=1.
COMPUTE tclass2=1.
END IF.
VARIABLE LABELS
aclass0 "aclass0: Acute Class Effect at Year 0"
aclass1 "aclass1: Acute Class Effect at Year 1"
aclass2 "aclass2: Acute Class Effect at Year 2"
tclass0 "tclass0: Transfer Class Effect at Year 0"
tclass1 "tclass1: Transfer Class Effect at Year 1"
tclass2 "tclass2: Transfer Class Effect at Year 2".
* Setting missing classroom values to have no effect.
* Replace missing ID variables with -99 to keep in model.
DOIF NVALID(ClassID_year0)=0.
COMPUTE ClassID_year0=-99.
COMPUTE aclass0=0.
COMPUTE tclass0=0.
END IF.
DOIF NVALID(ClassID_year1)=0.
COMPUTE ClassID_year1=-99.
COMPUTE aclass1=0.
COMPUTE tclass1=0.
END IF.
DOIF NVALID(ClassID_year2)=0.
COMPUTE ClassID_year2=-99.
COMPUTE aclass2=0.
COMPUTE tclass2=0.
END IF.
IF NVALID(ClassID)=0 ClassID=-99.
* Centering model predictors for analysis.
COMPUTE CMgirl50 = CMgirl - .50.
COMPUTE CMagg2 = CMaggression - 2.
COMPUTE SMagg2 = SMaggression - 2.
COMPUTE agg2 = aggression - 2.
* Piecewise year.
DOIF (year=0).
COMPUTE year01=-1.
COMPUTE year12=0.
END IF.
DOIF (year=1).
COMPUTE year01=0.
COMPUTE year12=0.
END IF.
DOIF (year=2).
COMPUTE year01=0.
COMPUTE year12=1.
END IF.
VARIABLE LABELS
CMgirl50 "CMgirl50: Class Proportion of Girls (0=.50)"
CMagg2 "CMagg2: Class Mean Student Aggression (0=2)"
SMagg2 "SMagg2: Student Mean Aggression (0=2)"
agg2 "agg2: Student Aggression (0=2)"
year01 "year01: Change from Year 1 to 0"
year12 "year12: Change from Year 1 to 2".
* Subset sample to complete cases for all predictors.
SELECT IF NVALID(year, grade, girl, CMgirl, aggression, CMaggression, effort)=7.
EXECUTE.

***********************************************************************************.
*******               BEGIN CHAPTER 11b TIME-VARYING GROUP MODELS           *******.
***********************************************************************************.

* Open output directory.
OUTPUT NAME SPSS_Chapter11b_Output.

DATASET ACTIVATE Chapter11bmultiv.
ECHO "Chapter 11b: Descriptive Statistics for Student and Year-Specific Class Variables".
FREQUENCIES VARIABLES = girl.
CROSSTABS TABLES = ClassID_year0 BY grade_year0.
CROSSTABS TABLES = ClassID_year1 BY grade_year1.
CROSSTABS TABLES = ClassID_year2 BY grade_year2.

DATASET ACTIVATE Chapter11b.
ECHO "Chapter 11b: Descriptive Statistics for Level-1 Time-Varying Variables".
SUMMARIZE
   /TABLES = CMgirl effort aggression
   /FORMAT = NOLIST TOTAL 
   /CELLS  = COUNT MEAN STDDEV VAR MIN MAX.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Ch 11b: Empty Means, Two-Level Model of Years Within Students;'.
ECHO 'Predicting Teacher-Perceived Student Effort'.
MIXED effort BY StudentID
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    =
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Ch 11b: Saturated Means, Unstructured Variance Model;'.
ECHO 'Predicting Student Effort'.
MIXED effort BY StudentID year
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV R
     /FIXED    = year
     /REPEATED = year | SUBJECT(StudentID) COVTYPE(UN)
     /EMMEANS  = TABLES(year) COMPARE(year)
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Ch 11b: Piecewise Means, Random Intercept Model;'.
ECHO 'Predicting Student Effort'.
MIXED effort BY StudentID WITH year01 year12
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    = year01 year12
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Eq 11b.13: Adding Fixed Effects of Year-Specific Class;'.
ECHO 'Predicting Student Effort'.
MIXED effort BY StudentID ClassID_year0 ClassID_year1 ClassID_year2 WITH year01 year12 aclass0 aclass1 aclass2
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    = year01 year12
                 ClassID_year0*aclass0 ClassID_year1*aclass1 ClassID_year2*aclass2
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Eq 11b.14: Adding Random Acute Year-Specific Class Effects;'.
ECHO 'Predicting Student Effort'.
MIXED effort BY StudentID ClassID_year0 ClassID_year1 ClassID_year2 WITH year01 year12 aclass0 aclass1 aclass2
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    = year01 year12
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
     /RANDOM   = aclass0 | COVTYPE(UN) SUBJECT(ClassID_year0)
     /RANDOM   = aclass1 | COVTYPE(UN) SUBJECT(ClassID_year1)
     /RANDOM   = aclass2 | COVTYPE(UN) SUBJECT(ClassID_year2)
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Ch 11b: Adding Random Transfer Class Effects Instead;'.
ECHO 'Predicting Student Effort'.
MIXED effort BY StudentID ClassID_year0 ClassID_year1 ClassID_year2 WITH year01 year12 tclass0 tclass1 tclass2
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    = year01 year12
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
     /RANDOM   = tclass0 | COVTYPE(UN) SUBJECT(ClassID_year0)
     /RANDOM   = tclass1 | COVTYPE(UN) SUBJECT(ClassID_year1)
     /RANDOM   = tclass2 | COVTYPE(UN) SUBJECT(ClassID_year2)
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Eq 11b.15: Adding Year-Specific Effects of Class Grade;'.
ECHO 'Predicting Student Effort'.
MIXED effort BY StudentID ClassID_year0 ClassID_year1 ClassID_year2 grade WITH year01 year12 aclass0 aclass1 aclass2
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    = year01 year12
                 grade*aclass0 grade*aclass1 grade*aclass2
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
     /RANDOM   = aclass0 | COVTYPE(UN) SUBJECT(ClassID_year0)
     /RANDOM   = aclass1 | COVTYPE(UN) SUBJECT(ClassID_year1)
     /RANDOM   = aclass2 | COVTYPE(UN) SUBJECT(ClassID_year2)
     /TEST     = 'Grade 3 vs 4 at Year 0'             grade*aclass0 -1  1 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 3 vs 5 at Year 0'             grade*aclass0 -1  0 1 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 4 vs 5 at Year 0'             grade*aclass0  0 -1 1 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 4 vs 5 at Year 1'             grade*aclass0  0  0 0 0 0 grade*aclass1 0 -1  1 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 4 vs 6 at Year 1'             grade*aclass0  0  0 0 0 0 grade*aclass1 0 -1  0 1 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 5 vs 6 at Year 1'             grade*aclass0  0  0 0 0 0 grade*aclass1 0  0 -1 1 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 5 vs 6 at Year 2'             grade*aclass0  0  0 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0 -1  1 0
     /TEST     = 'Grade 5 vs 7 at Year 2'             grade*aclass0  0  0 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0 -1  0 1
     /TEST     = 'Grade 6 vs 7 at Year 2'             grade*aclass0  0  0 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0 -1 1
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Eq 11b.16: Adding Student Gender and Year-Specific Class Contextual Gender Effects;'.
ECHO 'Predicting Student Effort'.
MIXED effort BY StudentID ClassID_year0 ClassID_year1 ClassID_year2 grade WITH year01 year12 aclass0 aclass1 aclass2 girl CMgirl50
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    = year01 year12
                 grade*aclass0 grade*aclass1 grade*aclass2
                 girl CMgirl50*aclass0 CMgirl50*aclass1 CMgirl50*aclass2
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
     /RANDOM   = aclass0 | COVTYPE(UN) SUBJECT(ClassID_year0)
     /RANDOM   = aclass1 | COVTYPE(UN) SUBJECT(ClassID_year1)
     /RANDOM   = aclass2 | COVTYPE(UN) SUBJECT(ClassID_year2)
     /TEST     = 'Multivariate Test of Year-Specific Class Contextual Gender Effects' CMgirl50*aclass0 1; CMgirl50*aclass1 1; CMgirl50*aclass2 1
     /TEST     = 'Grade 3 vs 4 at Year 0'                  grade*aclass0 -1  1 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 3 vs 5 at Year 0'                  grade*aclass0 -1  0 1 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 4 vs 5 at Year 0'                  grade*aclass0  0 -1 1 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 4 vs 5 at Year 1'                  grade*aclass0  0  0 0 0 0 grade*aclass1 0 -1  1 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 4 vs 6 at Year 1'                  grade*aclass0  0  0 0 0 0 grade*aclass1 0 -1  0 1 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 5 vs 6 at Year 1'                  grade*aclass0  0  0 0 0 0 grade*aclass1 0  0 -1 1 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 5 vs 6 at Year 2'                  grade*aclass0  0  0 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0 -1  1 0
     /TEST     = 'Grade 5 vs 7 at Year 2'                  grade*aclass0  0  0 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0 -1  0 1
     /TEST     = 'Grade 6 vs 7 at Year 2'                  grade*aclass0  0  0 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0 -1 1
     /TEST     = 'Between-Class Gender Effect at Year 0'   girl 1 CMgirl50*aclass0 1
     /TEST     = 'Between-Class Gender Effect at Year 1'   girl 1 CMgirl50*aclass1 1
     /TEST     = 'Between-Class Gender Effect at Year 2'   girl 1 CMgirl50*aclass2 1
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Ch 11b: Empty Means, Two-Level Model of Years Within Students;'.
ECHO 'Predicting Teacher-Perceived Student Aggression'.
MIXED aggression BY StudentID
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    =
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Ch 11b: Saturated Means, Unstructured Variance Model;'.
ECHO 'Predicting Student Aggression'.
MIXED aggression BY StudentID year
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV R
     /FIXED    = year
     /REPEATED = year | SUBJECT(StudentID) COVTYPE(UN)
     /EMMEANS  = TABLES(year) COMPARE(year)
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Ch 11b: Piecewise Means, Random Intercept Model;'.
ECHO 'Predicting Student Aggression'.
MIXED aggression BY StudentID WITH year01 year12
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    = year01 year12
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Ch 11b: Adding Random Acute Year-Specific Class Effects;'.
ECHO 'Predicting Student Aggression'.
MIXED aggression BY StudentID ClassID_year0 ClassID_year1 ClassID_year2 WITH year01 year12 aclass0 aclass1 aclass2
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    = year01 year12
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
     /RANDOM   = aclass0 | COVTYPE(UN) SUBJECT(ClassID_year0)
     /RANDOM   = aclass1 | COVTYPE(UN) SUBJECT(ClassID_year1)
     /RANDOM   = aclass2 | COVTYPE(UN) SUBJECT(ClassID_year2)
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Ch 11b: Adding Random Transfer Class Effects Instead;'.
ECHO 'Predicting Student Aggression'.
MIXED aggression BY StudentID ClassID_year0 ClassID_year1 ClassID_year2 WITH year01 year12 tclass0 tclass1 tclass2
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    = year01 year12
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
     /RANDOM   = tclass0 | COVTYPE(UN) SUBJECT(ClassID_year0)
     /RANDOM   = tclass1 | COVTYPE(UN) SUBJECT(ClassID_year1)
     /RANDOM   = tclass2 | COVTYPE(UN) SUBJECT(ClassID_year2)
.

DATASET ACTIVATE Chapter11b WINDOW=FRONT.
ECHO 'Ch 11b: Adding Time-Varying, Student Mean, and Year-Specific Class Contextual Effects of Student Aggression;'.
ECHO 'Predicting Student Effort'.
MIXED effort BY StudentID ClassID_year0 ClassID_year1 ClassID_year2 grade WITH year01 year12 aclass0 aclass1 aclass2 girl CMgirl50 agg2 SMagg2 CMagg2
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV
     /FIXED    = year01 year12
                 grade*aclass0 grade*aclass1 grade*aclass2
                 girl CMgirl50*aclass0 CMgirl50*aclass1 CMgirl50*aclass2
                 agg2 SMagg2 CMagg2*aclass0 CMagg2*aclass1 CMagg2*aclass2
     /RANDOM   = INTERCEPT | COVTYPE(UN) SUBJECT(StudentID)
     /RANDOM   = aclass0 | COVTYPE(UN) SUBJECT(ClassID_year0)
     /RANDOM   = aclass1 | COVTYPE(UN) SUBJECT(ClassID_year1)
     /RANDOM   = aclass2 | COVTYPE(UN) SUBJECT(ClassID_year2)
     /TEST     = 'Multivariate Test of Year-Specific Class Contextual Aggression Effects' CMagg2*aclass0 1; CMagg2*aclass1 1; CMagg2*aclass2 1
     /TEST     = 'Grade 3 vs 4 at Year 0'                       grade*aclass0 -1  1 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 3 vs 5 at Year 0'                       grade*aclass0 -1  0 1 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 4 vs 5 at Year 0'                       grade*aclass0  0 -1 1 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 4 vs 5 at Year 1'                       grade*aclass0  0  0 0 0 0 grade*aclass1 0 -1  1 0 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 4 vs 6 at Year 1'                       grade*aclass0  0  0 0 0 0 grade*aclass1 0 -1  0 1 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 5 vs 6 at Year 1'                       grade*aclass0  0  0 0 0 0 grade*aclass1 0  0 -1 1 0 grade*aclass2 0 0  0  0 0
     /TEST     = 'Grade 5 vs 6 at Year 2'                       grade*aclass0  0  0 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0 -1  1 0
     /TEST     = 'Grade 5 vs 7 at Year 2'                       grade*aclass0  0  0 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0 -1  0 1
     /TEST     = 'Grade 6 vs 7 at Year 2'                       grade*aclass0  0  0 0 0 0 grade*aclass1 0  0  0 0 0 grade*aclass2 0 0  0 -1 1
     /TEST     = 'Between-Class Gender Effect at Year 0'        girl 1 CMgirl50*aclass0 1
     /TEST     = 'Between-Class Gender Effect at Year 1'        girl 1 CMgirl50*aclass1 1
     /TEST     = 'Between-Class Gender Effect at Year 2'        girl 1 CMgirl50*aclass2 1
     /TEST     = 'Between-Class Aggression Effect at Year 0'    agg2 1 SMagg2 1 CMagg2*aclass0 1
     /TEST     = 'Between-Class Aggression Effect at Year 1'    agg2 1 SMagg2 1 CMagg2*aclass1 1
     /TEST     = 'Between-Class Aggression Effect at Year 2'    agg2 1 SMagg2 1 CMagg2*aclass2 1
     /TEST     = 'Between-Student Aggression Effect'            agg2 1 SMagg2 1
     /SAVE     = FIXPRED(PredFinalE)
.
CORRELATIONS effort PredFinalE.

****** END CHAPTER 11b MODELS ******.

* Close output directory.
OUTPUT EXPORT NAME=SPSS_Chapter11b_Output
     /CONTENTS EXPORT=VISIBLE LAYERS=VISIBLE MODELVIEWS=VISIBLE
     /HTML DOCUMENTFILE='C:\Dropbox\PilesOfVariance\Chapter11b\SPSS\SPSS_Chapter11b_Output.html'
           IMAGEFORMAT=PNG STYLING=YES.