RSUBM
Retrieves a symmetric submatrix from a symmetric matrix.
Required Arguments
A — NA by NA symmetric matrix. (Input)
Only the upper triangle of A is referenced.
SWEPT — Vector of length NA. (Input)
Element A(I, J) is included in submatrix ASUB if and only if SWEPT(I) > 0.0 and SWEPT(J) > 0.0.
NASUB — Order of submatrix ASUB. (Output)
NASUB equals the number of elements in SWEPT that are greater than zero.
ASUB — NASUB by NASUB symmetric matrix containing a submatrix of A. (Output)
If A is not needed, ASUB and A can share the same storage locations.
Optional Arguments
NA — Order of matrix A. (Input)
Default: NA = size (A,2).
LDA — Leading dimension of A exactly as specified in the dimension statement of the calling program. (Input)
Default: LDA = size (A,1).
LDASUB — Leading dimension of ASUB exactly as specified in the dimension statement of the calling program. (Input)
Default: LDASUB = size (ASUB,1).
FORTRAN 90 Interface
Generic: CALL RSUBM (A, SWEPT, NASUB, ASUB [, …])
Specific: The specific interface names are S_RSUBM and D_RSUBM.
FORTRAN 77 Interface
Single: CALL RSUBM (NA, A, LDA, SWEPT, NASUB, ASUB, LDASUB)
Double: The double precision name is DRSUBM.
Description
Routine RSUBM retrieves a symmetric submatrix from a symmetric matrix A. If elements i and j of the input vector SWEPT are greater than zero, then the ij-th element of A is output in the submatrix ASUB. Otherwise, the ij-th element of A will not be included in ASUB. (Here, i = 1, 2, …, NA, and j = 1, 2, …, NA, where NA is the order of A.)
Routine RSUBM can be useful in conjunction with two routines, GSWEP and RSTEP. The routine RSUBM can be used after routine GSWEP in order to retrieve the submatrix of A that corresponds to the rows/columns that have been successfully swept. In this case, the SWEPT vector output from GSWEP can be used as the input for the argument SWEPT in RSUBM. Also, RSUBM can be used after routine RSTEP in order to retrieve the submatrix of COVS that corresponds to the independent variables in the final model. In this case, the HIST vector output from RSTEP can be used as the input for the argument SWEPT in RSUBM.
Comments
1. Workspace may be explicitly provided, if desired, by use of R2UBM/DR2UBM. The reference is:
CALL R2UBM (NA, A, LDA, SWEPT, NASUB, ASUB, LDASUB, IWK)
The additional argument is:
IWK — Vector of length NASUB.
2. Routine RSUBM can be used after invoking routines GSWEP and RSTEP in order to retrieve the submatrix for the variables in the model.
Examples
Example 1
The 2 × 2 symmetric submatrix ASUB is retrieved from rows and columns 1 and 4 of the 4 × 4 symmetric matrix A.
USE RSUBM_INT
USE WRRRN_INT
IMPLICIT NONE
INTEGER LDA, LDASUB, NA
PARAMETER (LDASUB=2, NA=4, LDA=NA)
!
INTEGER NASUB
REAL A(LDA,NA), ASUB(LDASUB,LDASUB), SWEPT(NA)
!
DATA SWEPT/1.0, -1.0, -1.0, 1.0/
DATA A/10.0, 20.0, 40.0, 70.0, 20.0, 30.0, 50.0, 80.0, 40.0,&
50.0, 60.0, 90.0, 70.0, 80.0, 90.0, 100.0/
!
CALL RSUBM (A, SWEPT, NASUB, ASUB)
CALL WRRRN ('ASUB', ASUB)
END
Output
ASUB
1 2
1 10.0 70.0
2 70.0 100.0
Example 2
This example invokes RSUBM after routine RSTEP in order to retrieve the submatrix of COVS that corresponds to the independent variables in the final stepwise model. With this submatrix, routine BLINF (IMSL MATH/LIBRARY) is used to compute the estimated standard deviation for the intercept in the final model.
A data set from Draper and Smith (1981, pages 629‑630) is used. The means and the corrected sum of squares and crossproducts matrix for this data are given in the DATA statements. They can be computed using routine CORVC in Chapter 3, “Correlation”. The first four entries in XMEAN and the first four columns of COV correspond to the independent variables, the last entry in XMEAN and the last column of COV correspond to the dependent variable.
After RSTEP is invoked to obtain a model, the intercept is computed using the formula
where k is the number of independent variables in the final model. The estimated standard deviation of the intercept is computed using the formula
where s2 is the error mean square from the fit (stored in AOV(8)), n is the number of observations, is the subvector of means for the independent variables in the final model (in this case the first mean and the fourth mean), and A is the submatrix (in this case with rows and columns 1 and 4) of the matrix COVS that is output by RSTEP.
USE IMSL_LIBRARIES
IMPLICIT NONE
INTEGER LDCOEF, LDCOV, LDCOVS, NVAR
PARAMETER (NVAR=5, LDCOEF=NVAR, LDCOV=NVAR, LDCOVS=NVAR)
!
INTEGER I, IEND, INVOKE, IPRINT, ISTEP, J, LEVEL(NVAR), &
NFORCE, NIND, NOBS, NOUT, NSTEP
REAL AOV(13), B0, COEF(LDCOEF,5), &
COV(LDCOV,NVAR), COVS(LDCOVS,NVAR), HIST(NVAR), PIN, &
POUT, SCALE(NVAR), SEB0, SQRT, TOL, XMEAN(NVAR)
INTRINSIC SQRT
!
DATA COV/415.231, 251.077, -372.615, -290.000, 775.962, 251.077, &
2905.69, -166.538, -3041.00, 2292.95, -372.615, -166.538, &
492.308, 38.0000, -618.231, -290.000, -3041.00, 38.0000, &
3362.00, -2481.70, 775.962, 2292.95, -618.231, -2481.70, &
2715.76/
DATA XMEAN/7.46154, 48.1538, 11.7692, 30.0000, 95.4231/
DATA LEVEL/4*1, -1/
!
J = 0
ISTEP = 1
NOBS = 13
IPRINT = 1
CALL RSTEP (COV, NOBS, AOV, COEF, COVS, NVAR=NVAR, ISTEP=ISTEP, &
IPRINT=IPRINT, HIST=HIST)
! Compute intercept
B0 = XMEAN(NVAR)
DO 10 I=1, NVAR - 1
IF (HIST(I) .GT. 0.0) THEN
B0 = B0 - XMEAN(I)*COEF(I,1)
J = J + 1
XMEAN(J) = XMEAN(I)
END IF
10 CONTINUE
! Compute standard error of intercept
CALL RSUBM (COVS, HIST, NIND, COVS)
SEB0 = 1.0/NOBS + BLINF(COVS, XMEAN, XMEAN, NRA=NIND, NCA=NIND)
SEB0 = SQRT(AOV(8)*SEB0)
! Print intercept and standard error
CALL UMACH (2, NOUT)
WRITE (NOUT,99999) ' '
WRITE (NOUT,99999) 'Intercept ', B0
WRITE (NOUT,99999) 'Std. Error', SEB0
99999 FORMAT (1X, A, F10.3)
!
END
Output
FORWARD SELECTION
Dependent R-squared Adjusted Est. Std. Dev.
Variable (percent) R-squared of Model Error
5 97.247 96.697 2.734
* * * Analysis of Variance * * *
Sum of Mean Prob. of
Source DF Squares Square Overall F Larger F
Regression 2 2641.0 1320.5 176.636 0.0000
Error 10 74.8 7.5
Total 12 2715.8
* * * Inference on Coefficients * * *
(Conditional on the Selected Model)
Coef. Standard Prob. of Variance
Variable Estimate Error t-statistic Larger t Inflation
1 1.440 0.1384 10.403 0.0000 1.06
4 -0.614 0.0486 -12.622 0.0000 1.06
* * * Statistics for Variables Not in the Model * * *
Coef. Standard t-statistic Prob. of Variance
Variable Estimate Error to enter Larger t Inflation
2 0.416 0.1856 2.242 0.0517 18.7
3 -0.410 0.1992 -2.058 0.0697 3.46
* * * Forward Selection Summary * * *
Variable Step Entered
1 2
4 1
Intercept 103.097
Std. Error 2.124