Finds the linear relations associated with matrix singularities (J.H. Maindonald).

### Option

`PRINT` = string tokens |
Printed output (`dependent` , `coefficients` ); default `depe` |
---|

### Parameters

`DATA` = symmetric matrices |
Specifies the positive semi-definite matrix for which the information is required |
---|---|

`COEFFICIENTS` = matrices |
Stores the coefficients of the linear dependencies |

### Description

Procedure `LINDEPENDENCE`

takes a positive semi-definite matrix *S* (e.g. a matrix formed as *X*′*X*), and identifies any columns of *S* that are a linear combination of earlier columns. It determines the linear relations involved, and stores these in the columns of the matrix specified by the `COEFFICIENTS`

parameter.

In more mathematical terms the output, stored as columns of `COEFFICIENTS`

, is a basis for the null space of a positive semi-definite matrix *S*. If *S* = *X*′*X*, then this will also be a basis for the column space of *X*.

The first parameter, `DATA`

, specifies the symmetric matrix *S* for which the information is required. The columns of the `COEFFICIENTS`

matrix store the linear relations. This matrix will be defined automatically if it has not been declared earlier.

Printed output information on either which columns are dependent and/or what the coefficients for the dependencies are can be requested with the settings `dependent`

and `coefficients`

of the `PRINT`

option. By default the dependent columns are printed.

Option: `PRINT`

.

Parameters: `DATA`

, `COEFFICIENTS`

.

### Method

The matrix function `CHOLESKI`

is used to determine a lower triangular matrix *L* such that *LL*′ = *S*. Zeros on the diagonal of *L* identify columns of *S* that are a linear combination of earlier columns. The corresponding columns of *L*′ form a matrix *H*. The algorithm then replaces zeros on the diagonal of *L*′ by ones, to give the matrix *T*, and solves the equation *T* *B* = *H*. Finally it identifies in each column of *H* the element that was originally on the diagonal of *L*, and sets each such element to -1. For further details, see Maindonald (1984) page 105.

Warning – if *S* is inaccurately formed, e.g. using single precision calculations, there is a risk that it will not be detected as singular, or that it will be detected as not positive semi-definite.

### Reference

Maindonald, J.H. (1984). *Statistical Computation*. Wiley, New York.

### See also

Procedure: `POSSEMIDEFINITE`

.

Commands for: Calculations and manipulation.

### Example

CAPTION 'LINDEPENDENCE example'; STYLE=meta VARIATE [VALUES=0...10] x[1] VARIATE [VALUES=6,5,5,4,3,3,2,1,1,0,0] x[2] CALCULATE x[3]=x[1]+0.5*x[2] "This ensures that x[3] is a linear combination of x[1] and x[2]" VARIATE [VALUES=(0,1)5,1] x[4] CALCULATE x[5]=0.5*x[1]+x[2]+0.5*x[4] "This ensures that x[5] is a linear combination of x[1], x[2], and x[4]" MATRIX [ROWS=5; COLUMNS=11; VALUES=#x[1...5]] xt CALCULATE ss=QPROD(xt;1) LINDEPENDENCE [PRINT=dependent,coefficient] ss; b