1. Home
  2. POSSEMIDEFINITE procedure

POSSEMIDEFINITE procedure

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
Updated on March 6, 2019

Was this article helpful?