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

***********************************************************************************.
*******     BEGIN DATA MANIPULATION OF CHAPTER 3a TWO-OCCASION EXAMPLE      *******.
*******               CHANGE "filesave" to your directory                   *******.
***********************************************************************************.

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

* Import and stack chapter 3 two-occasion multivariate data.
GET FILE = "filesave/SPSS_Chapter3a.sav".
VARSTOCASES
   /MAKE outcome FROM outcome1 TO outcome2
   /INDEX = time (2)
   /KEEP = ALL.
VARIABLE LABELS
time "time: Occasion (1=pre-test, 2=post-test)"
outcome "outcome: Learning Outcome".
DATASET NAME Chapter3a WINDOW=FRONT.

* Center predictors for analysis.
COMPUTE time1 = time - 1.
COMPUTE treat = group - 1.
VARIABLE LABELS
time1 "time1: Time (0=pre-test, 1=post-test)"
treat "treat: Treatment Group (0=control, 1=treatment)".
EXECUTE.

***********************************************************************************.
*******                BEGIN CHAPTER 3a TWO-OCCASION MODELS                 *******.
***********************************************************************************.

* Open output directory.
OUTPUT NAME SPSS_Chapter3a_Output.

ECHO "Chapter 3a Example: Means by group and time for learning outcome".
SUMMARIZE
   /TABLES = outcome BY group BY time
   /FORMAT = NOLIST TOTAL 
   /CELLS  = COUNT MEAN SEMEAN MIN MAX.

DATASET ACTIVATE Chapter3a WINDOW=FRONT.
ECHO 'Eq 3a.1: Empty Between-Person Model'.
MIXED outcome BY PersonID time
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV R
     /FIXED    =
     /REPEATED = time | COVTYPE(ID) SUBJECT(PersonID)
.

DATASET ACTIVATE Chapter3a WINDOW=FRONT.
ECHO 'Eq 3a.2: Empty Within-Person Model'.
MIXED outcome BY PersonID time
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV R
     /FIXED    =
     /REPEATED = time | COVTYPE(CS) SUBJECT(PersonID)
.

DATASET ACTIVATE Chapter3a WINDOW=FRONT.
ECHO 'Eq 3a.7: Conditional Between-Person Model (top of Eq. 3.7);'.
ECHO 'Manual Contrasts for Time and Group'.
MIXED outcome BY PersonID time WITH time1 treat
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV R
     /FIXED    = time1 treat time1*treat
     /REPEATED = time | COVTYPE(ID) SUBJECT(PersonID)
     /TEST     = 'Mean: Control Group at Pre-Test'    intercept 1 time1 0 treat 0 time1*treat 0
     /TEST     = 'Mean: Control Group at Post-Test'   intercept 1 time1 1 treat 0 time1*treat 0
     /TEST     = 'Mean: Treatment Group at Pre-Test'  intercept 1 time1 0 treat 1 time1*treat 0
     /TEST     = 'Mean: Treatment Group at Post-Test' intercept 1 time1 1 treat 1 time1*treat 1
     /TEST     = 'Time  Effect for Control Group'     time1 1 time1*treat 0
     /TEST     = 'Time  Effect for Treatment Group'   time1 1 time1*treat 1
     /TEST     = 'Group Effect at Pre-Test'           treat 1 time1*treat 0
     /TEST     = 'Group Effect at Post-Test'          treat 1 time1*treat 1
.

DATASET ACTIVATE Chapter3a WINDOW=FRONT.
ECHO 'Eq 3a.7: Conditional Within-Person Model (bottom of Eq. 3.7);'.
ECHO 'Manual Contrasts for Time and Group'.
MIXED outcome BY PersonID time WITH time1 treat
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV R
     /FIXED    = time1 treat time1*treat
     /REPEATED = time | COVTYPE(CS) SUBJECT(PersonID)
     /TEST     = 'Mean: Control Group at Pre-Test'    intercept 1 time1 0 treat 0 time1*treat 0
     /TEST     = 'Mean: Control Group at Post-Test'   intercept 1 time1 1 treat 0 time1*treat 0
     /TEST     = 'Mean: Treatment Group at Pre-Test'  intercept 1 time1 0 treat 1 time1*treat 0
     /TEST     = 'Mean: Treatment Group at Post-Test' intercept 1 time1 1 treat 1 time1*treat 1
     /TEST     = 'Time  Effect for Control Group'     time1 1 time1*treat 0
     /TEST     = 'Time  Effect for Treatment Group'   time1 1 time1*treat 1
     /TEST     = 'Group Effect at Pre-Test'           treat 1 time1*treat 0
     /TEST     = 'Group Effect at Post-Test'          treat 1 time1*treat 1
.

DATASET ACTIVATE Chapter3a WINDOW=FRONT.
ECHO 'Eq 3a.7: Conditional Within-Person Model (bottom of Eq. 3.7);'.
ECHO 'Categorical Predictors for Time and Group'.
MIXED outcome BY PersonID time time1 treat
     /METHOD   = REML
     /PRINT    = SOLUTION TESTCOV R
     /FIXED    = time1 treat time1*treat
     /REPEATED = time | COVTYPE(CS) SUBJECT(PersonID)
     /EMMEANS  = TABLES(time1*treat) COMPARE(time1)
     /EMMEANS  = TABLES(time1*treat) COMPARE(treat)
.

****** END CHAPTER 3a MODELS ******.

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