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