GCSCP
Generates centered variables, squares, and crossproducts.
Required Arguments
XNRX by NVAR matrix containing the data. (Input)
XMEAN — Vector of length NVAR containing the means of the variables. (Input)
CSCPNRX by NVAR * (NVAR + 3)/2 matrix containing the centered variables, squares, and crossproducts. (Output)
Columns
Description
1 to NVAR
Centered variables
NVAR+ 1 to 2 * NVAR
Squared variables
2 * NVAR + 1 to NVAR * (NVAR + 3)/2
Crossproducts
If X is not needed, X and the first NVAR columns of CSCP may occupy the same storage locations.
Optional Arguments
IDO — Processing option. (Input)
Default: IDO = 0.
IDO
Action
0
This is the only invocation of GCSCP for this data set, and all the data are input at once.
1
This is the first invocation, and additional calls to GCSCP will be made. Initialization and updating for the data in X are performed.
2
This is an intermediate or final invocation of GCSCP and updating for the data in X is performed.
NRX — Number of rows of data in X. (Input)
Default: NRX = size (X,1).
NVAR — Number of variables. (Input)
Default: NVAR = size (X,2).
LDX — Leading dimension of X exactly as specified in the dimension statement in the calling program. (Input)
Default: LDX = size (X,1).
ICEN — Centering option. (Input)
If IDO = 1 or IDO = 2, ICEN must equal 0.
Default: ICEN = 0.
ISUB
Action
0
CSCP contains the centered variables in columns 1 through NVAR. Square and crossproduct variables are generated from these centered variables in the remaining columns of CSCP.
1
First, the action taken when ICEN = 0 is performed. Next, the means of the square and crossproduct variables are subtracted from the square and crossproduct variables.
SCPM — Vector of length NVAR * (NVAR + 1)/2 containing the means of the generated square and crossproduct variables. (Output, if IDO = 0 or 1; input/output, if IDO = 2)
Elements
Description
1 to NVAR
Squared variable means
NVAR+ 1 to NVAR * (NVAR + 1)/2
Crossproduct variable means
LDCSCP — Leading dimension of CSCP exactly as specified in the dimension statement in the calling program. (Input)
Default: LDCSCP = size (CSCP,1).
NRMISS — Number of rows of data encountered in calls to GCSCP that contain any missing values for the variables. (Output, if IDO = 0 or 1; Input/Output, if IDO = 2)
NaN (not a number) is used as the missing value code.
Default: NRMISS = 0.
NVOBS — Number of valid observations. (Output, if IDO = 0 or 1; Input/Output, if IDO = 2)
Number of rows of data encountered in calls to GCSCP that do not contain any missing values for the variables.
FORTRAN 90 Interface
Generic: CALL GCSCP (X, XMEAN, CSCP [])
Specific: The specific interface names are S_GCSCP and D_GCSCP.
FORTRAN 77 Interface
Single: CALL GCSCP (IDO, NRX, NVAR, X, LDX, ICEN, XMEAN, SCPM, CSCP, LDCSCP, NRMISS, NVOBS)
Double: The double precision name is DGCSCP.
Description
Routine GCSCP centers a data set consisting of independent variable settings and generates (using the centered variables) the settings for all possible squared and crossproduct variables in standard order. The routine GCSCP is designed so that you can partition a large data set into submatrices (requiring less space) and make multiple calls to GCSCP (with IDO = 1, 2, 2  , 2). Alternatively, one invocation of GCSCP (with IDO = 0) can be made with the entire data set contained in X.
Let n be the number of rows in the entire data set, and let m (stored in NVAR) be the number of variables. Let xij be the i-th setting of the j-th variable (i = 1, 2, n; j = 1, 2, m). Denote the means (stored in XMEAN) by
The settings of the j-th centered variable (stored in the j-th column of CSCP) are given by
The settings of the j-th squared variable (stored in the (m + j)-th column of CSCP) are given by
where
(stored in the (m + j)-th column of SCPM) is the mean of the j-th squared variable. The settings of the jk crossproduct variable (stored in the
column of CSCP) are given by
where
(stored in the
location of SCPM) is the mean of the jk-th (j < k) crossproduct variable.
Comments
Crossproduct variables are ordered as follows: (1, 2), (1, 3), , (1, NVAR), (2, 3), (2, 4), , (2, NVAR), , (NVAR  1, NVAR).
Examples
Example 1
With data containing 4 rows and 3 variables, GCSCP is used to center the variables and to generate (using the centered variables) the square and crossproduct variables. The data is input in one invocation (IDO = 0), and the generated squared and crossproduct variables are centered (ICEN = 1). On output, SCPM contains the means in standard order, i.e.,
Also, CSCP contains the variables in standard order, i.e.,
 
USE GCSCP_INT
USE UMACH_INT
USE WRRRN_INT
 
IMPLICIT NONE
INTEGER LDCSCP, LDX, NRX, NVAR, J, ICEN
PARAMETER (NRX=4, NVAR=3, LDCSCP=NRX, LDX=NRX)
!
INTEGER NOUT, NRMISS, NVOBS
REAL CSCP(LDCSCP,NVAR*(NVAR+3)/2), SCPM(NVAR*(NVAR+1)/2), &
X(LDX,NVAR), XMEAN(NVAR)
!
DATA (X(1,J),J=1,NVAR)/10.0, 8.0, 11.0/
DATA (X(2,J),J=1,NVAR)/ 5.0, 15.0, 1.0/
DATA (X(3,J),J=1,NVAR)/ 3.0, 2.0, 4.0/
DATA (X(4,J),J=1,NVAR)/ 6.0, 3.0, 4.0/
DATA XMEAN/6.0, 7.0, 5.0/
!
ICEN = 1
CALL GCSCP (X, XMEAN, CSCP, ICEN=ICEN, scpm=scpm, nrmiss=nrmiss, &
nvobs=nvobs)
!
CALL UMACH (2, NOUT)
WRITE (NOUT,*) ' NRMISS = ', NRMISS
CALL WRRRN ('SCPM', SCPM, 1, NVAR*(NVAR+1)/2, 1)
CALL WRRRN ('CSCP', CSCP)
END
Output
 
NRMISS = 0
 
SCPM
1 2 3 4 5
6.50 26.50 13.50 2.75 7.75 -4.25
 
CSCP
1 2 3 4 5 6 7 8 9
1 4.00 1.00 6.00 9.50 -25.50 22.50 1.25 16.25 10.25
2 -1.00 8.00 -4.00 -5.50 37.50 2.50 -10.75 -3.75 -27.75
3 -3.00 -5.00 -1.00 2.50 -1.50 -12.50 12.25 -4.75 9.25
4 0.00 -4.00 -1.00 -6.50 -10.50 -12.50 -2.75 -7.75 8.25
Example 2
With data containing 4 rows and 3 variables, GCSCP is used to center the variables and to generate (using the centered variables) the square and crossproduct variables. The data is input in multiple invocations (IDO = 1, 2, 2, 2). Here, the square and crossproduct variables, generated using the centered variables, cannot be centered (ICEN = 0).
 
USE GCSCP_INT
USE UMACH_INT
USE WRRRN_INT
 
IMPLICIT NONE
INTEGER LDCSCP, LDX, NRX, NVAR, J
PARAMETER (LDX=4, NRX=1, NVAR=3, LDCSCP=NRX)
!
INTEGER I, IDO, MISS, NOUT, NRMISS, NVOBS
REAL CSCP(LDCSCP,NVAR*(NVAR+3)/2), SCPM(NVAR*(NVAR+1)/2), &
X(LDX,NVAR), XMEAN(NVAR)
!
DATA (X(1,J),J=1,NVAR)/10.0, 8.0, 11.0/
DATA (X(2,J),J=1,NVAR)/ 5.0, 15.0, 1.0/
DATA (X(3,J),J=1,NVAR)/ 3.0, 2.0, 4.0/
DATA (X(4,J),J=1,NVAR)/ 6.0, 3.0, 4.0/
DATA XMEAN/6.0, 7.0, 5.0/
!
CALL UMACH (2, NOUT)
MISS = 0
DO 10 I=1, 4
IF (I .EQ. 1) THEN
IDO = 1
ELSE
IDO = 2
END IF
CALL GCSCP (X(I:,1:), XMEAN, CSCP, IDO=IDO, NRX=NRX, scpm=scpm, &
nrmiss=nrmiss, nvobs=nvobs)
MISS = MISS + NRMISS
CALL WRRRN ('CSCP', CSCP)
10 CONTINUE
CALL WRRRN ('SCPM', SCPM, 1, NVAR*(NVAR+1)/2, 1)
WRITE (NOUT,*) ' MISS = ', MISS
END
Output
 
CSCP
1 2 3 4 5 6 7 8 9
4.00 1.00 6.00 16.00 1.00 36.00 4.00 24.00 6.00
 
CSCP
1 2 3 4 5 6 7 8 9
-1.00 8.00 -4.00 1.00 64.00 16.00 -8.00 4.00 -32.00
 
CSCP
1 2 3 4 5 6 7 8 9
-3.00 -5.00 -1.00 9.00 25.00 1.00 15.00 3.00 5.00
 
CSCP
1 2 3 4 5 6 7 8 9
0.00 -4.00 -1.00 0.00 16.00 1.00 0.00 0.00 4.00
 
SCPM
1 2 3 4 5 6
6.50 26.50 13.50 2.75 7.75 -4.25
MISS = 0