TITLE:
  Eq 9.3: Multivariate Longitudinal Model using SEM Syntax
  Across-Variable Relationships via Covariances

DATA:
  ! Prior necessary data manipulation conducted using other programs
  FILE = MPLUS_Chapter9.csv;
  FORMAT = FREE;

DATA LONGTOWIDE:
  LONG = agec18 | risky | mon3;
  WIDE = age12-age18 | risky12-risky18 | mon12-mon18;
  IDVARIABLE = PersonID;
  REPETITION = occasion (12-18);

VARIABLE:
  NAMES = PersonID att12 PMmon copymon18 occasion age risky monitor agec18 att4
          mon3 PMmon3 WPmon A18mon3 Ch18mon;
  USEVARIABLES = att4 age12-age18 risky12-risky18 mon12-mon18;
  MISSING = ALL (-9999);
  TSCORES = age12-age18;

ANALYSIS:
  ESTIMATOR = ML;
  PROCESSORS = 4;
  TYPE = RANDOM;

MODEL:
  Rint Rlin Rquad | risky12-risky18 AT age12-age18;
  Mint Mlin | mon12-mon18 AT age12-age18;
  [risky12-risky18@0 mon12-mon18@0];
  risky12-risky18 (Rresvar);
  mon12-mon18 (Mresvar);
  risky12-risky18 PWITH mon12-mon18 (RresMres);
  [Rint Mint Rlin Mlin Rquad] (bRint bMint bRlin bMlin bRquad);
  Rint Mint Rlin Mlin Rquad@0 (Rintvar Mintvar Rlinvar Mlinvar Rquadvar);
  Rint WITH Rlin (RintRlin);
  Mint WITH Mlin (MintMlin);
  Rint WITH Mint (RintMint);
  Rlin WITH Mlin (RlinMlin);
  Rint WITH Mlin (RintMlin);
  Rlin WITH Mint (RlinMint);
  Rint Rlin ON att4 (battRint battRlin);

MODEL CONSTRAINT:
  NEW(WPresc BPintc BPlinc BPRIRLc BPMIMLc BPRIMLc BPRLMIc);
! WP Residual Correlation
  WPresc  = RresMres / (SQRT(Rresvar)*SQRT(Mresvar));
! BP Intercept Correlation
  BPintc  = RintMint / (SQRT(Rintvar)*SQRT(Mintvar));
! BP Linear Age Slope Correlation
  BPlinc  = RlinMlin / (SQRT(Rlinvar)*SQRT(Mlinvar));
! BP Risky Intercept - Linear Age Slope Correlation
  BPRIRLc = RintRlin / (SQRT(Rintvar)*SQRT(Rlinvar));
! BP Monitor Intercept - Linear Age Slope Correlation
  BPMIMLc = MintMlin / (SQRT(Mintvar)*SQRT(Mlinvar));
! BP Risky Intercept - Monitor Linear Age Slope Correlation
  BPRIMLc = RintMlin / (SQRT(Rintvar)*SQRT(Mlinvar));
! BP Risky Linear Age Slope - Monitor Intercept Correlation
  BPRLMIc = RlinMint / (SQRT(Rlinvar)*SQRT(Mintvar));