Calculates a positive semi-definite approximation of a non-positive semi-definite symmetric matrix (L.C.P Keizer, M. Malosetti & J.T.N.M. Thissen).

### Options

`PRINT` = string tokens |
Controls printed output (`approximation` , `eigenvalues` , `epsilon` ); default `*` i.e. none |
---|---|

`EPSILON` = scalar |
Specifies the lowest eigenvalue for the positive semi-definite matrix; default 0.0001 |

### Parameters

`OLDSYMMETRICMATRIX` = symmetric matrices |
Symmetric matrices to approximate |
---|---|

`NEWSYMMETRICMATRIX` = symmetric matrices |
Positive semi-definite approximations to the old symmetric matrices |

### Description

`POSSEMIDEFINITE`

forms a positive semi-definite symmetric matrix to approximate an input symmetric matrix that is not positive semi-definite. The original symmetric matrix is supplied by the `OLDSYMMETRICMATRIX`

parameter, and the new approximate matrix can be saved by the `NEWSYMMETRICMATRIX`

parameter.

The `EPSILON`

option specifies the lowest eigenvalue for the positive semi-definite symmetrical matrix; default 0.0001. Printed output is controlled by the `PRINT`

option, with settings:

`approximation` |
prints the positive semi-definite symmetric matrix approximating the original matrix, |
---|---|

`eigenvalues` |
prints the eigenvalues, and |

`epsilon` |
prints the value used to set the lowest eigenvalue for the approximate matrix. |

By default, nothing is printed.

Options: `PRINT`

, `EPSILON`

.

Parameters: `OLDSYMMETRICMATRIX`

, `NEWSYMMETRICMATRIX`

.

### Method

`POSSEMIDEFINITE`

uses the `FLRV`

directive to calculate the eigenvalues and eigenvectors of the input symmetric matrix. If the matrix contains missing values they are replaced by zero. All eigenvalues below the value specified by the `EPSILON`

option are replaced by that value. The positive semi-definite matrix is then calculated as

`V +* D *+ TRANSPOSE(V)`

where `V`

is the matrix of eigenvectors, and `D`

is a diagonal matrix containing the new eigenvalues.

### See also

Procedure: `LINDEPENDENCE`

.

Commands for: Calculations and manipulation.

### Example

CAPTION 'POSSEMIDEFINITE example'; STYLE=meta SYMMETRIC [ROWS=5; VALUES=1,0,1,1,0.5,1,0,1,1,0.5,1,0,1,1,0.5] nonpos PRINT nonpos POSSEMIDEFINITE [PRINT=approximation,eigenvalues] nonpos;\ NEWSYMMETRICMATRIX=pos POSSEMIDEFINITE [PRINT=approximation,eigenvalues; EPSILON=1.0e-2] nonpos;\ NEWSYMMETRICMATRIX=newin