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