***********************************************************************; * Version 3.1 July 20, 1994 *; ***********************************************************************; START _MAKESS_( Z, ZNAMES, _ECODE_,_OPT_, _Z_,_INDX_,_MINDX_, _VNAME_, _VTYPE_, _NMISS_, _PARM_, _SS_, _SUMSQ_ ); *___________________________________________________________________* *_MAKESS_ creates _SS_, the sums of squares and crossproducts matrix from Z. It also creates associated parameter vectors. Inputs Z, ZNAMES, _ECODE_,_OPT_, Outputs _Z_,_INDX_,_MINDX_, _VNAME_, _VTYPE_, _NMISS_, _PARM_, _SS_, _SUMSQ_ *___________________________________________________________________*; FREE _Z_ _INDX_ _MINDX_ _VNAME_ _VTYPE_ _NMISS_ _PARM_ _SS_ _SUMSQ_ ; * Some modest input validity checks; IF (NROW(_ECODE_)=0)|(NROW(_OPT_ )=0) THEN DO; PRINT "One or more system matrix does not exist. " , "_ECODE_ and _OPT_ were checked. " ,, "-------------MAKESS, LINMOD, and IML stopped.------------" , "-------------MAKESS, LINMOD, and IML stopped.------------" , "-------------MAKESS, LINMOD, and IML stopped.------------" ; ABORT; END; IF _OPT_(| 1 , 5|) = 0 THEN DO; NOTEM_1 = { "**************************************" , "** BEGIN MAKESS **" , "**************************************" }; PRINT , NOTEM_1 , ; END; _ECODE_ (| 2:NROW(_ECODE_), 1 |) = 0; IF (NCOL(Z)=0) | (NCOL(ZNAMES)=0) THEN DO; PRINT "MAKESS: Z and/or ZNAMES not defined" ; _ECODE_ (| 2 , 1 |) = 7000; RETURN; END; IF NCOL(Z) ^= NCOL(ZNAMES) THEN DO; PRINT , "MAKESS: Z and ZNAMES do not conform"; _ECODE_ (| 2 , 1 |) = 7001; RETURN; END; _N_ = NROW( Z); _NMISS_ = 0; IF _OPT_(| 2 , 1|) = 1 THEN DO; DO _I1_ = 1 TO _N_; _MZ1_ = ANY( Z(| _I1_ ,|) = . ); IF _MZ1_ = 1 THEN DO; _MINDX_ = _MINDX_ || _I1_; _NMISS_ = _NMISS_ + 1; END; ELSE _INDX_ = _INDX_ || _I1_; END; ** end of do _I1_ = 1 to _N_ ; IF _NMISS_ > 0 THEN DO; PRINT , "MAKESS: # of observations deleted due to missing values" , _NMISS_ , "MAKESS: Row numbers of deleted observations" , _MINDX_; END; ELSE IF _OPT_(|1,5|)=0 THEN PRINT , "MAKESS: All observations complete--none deleted"; END; ** end of if _OPT_( ) .... ; ELSE DO; ** _OPT_( ) ^= 1 ; _INDX_ = 1 : _N_; PRINT , "MAKESS : No missing value checks performed"; END; IF ( ( _N_ - _NMISS_ ) < 2 ) THEN DO; PRINT , "MAKESS: Fewer than two complete observations"; _ECODE_ (| 2 , 1 |) = 7003; END; IF ( _ECODE_(| 2 , 1|) > 2000 ) THEN RETURN; IF _NMISS_ > 0 THEN DO; _Z_ = Z(| _INDX_ ,|); _SS_ = _Z_` * _Z_; END; ELSE DO; _SS_ = Z` * Z; END; _VNAME_ = ZNAMES; _VTYPE_ = J( 1 , NCOL( Z) , 0 ); _N_ = _N_ - _NMISS_; _P_ = 0; _R_ = 0; _Q_ = NCOL( Z); _DELTA_ = 0; _PARM_ = _N_ || _P_ || _R_ || _Q_ || _DELTA_; _SUMSQ_ = VECDIAG( _SS_ )`; IF _OPT_(| 2 , 2 |) = 1 THEN DO; RUN _PRPARM_( _PARM_ ); RUN _PVTYPE_( _VTYPE_, _VNAME_ ); END; IF _OPT_(| 2 , 3 |) = 1 THEN DO; PRINT ,,, "_SS_ Matrix" , _SS_ (| COLNAME=_VNAME_ ROWNAME=_VNAME_ &_FMT2_ |); END; FINISH _MAKESS_ ;