Output from imlinv3.sas

Source
0 Graphs

NOTE: Capture of log output started.
NOTE: %INCLUDE (level 1) file n:\psy6140\examples\iml\imlinv3.sas is file
      n:\psy6140\examples\iml\imlinv3.sas.
644  +title 'IMLINV3: Generailzed inverse of a matrix';
645  +proc iml;
IML Ready
646  +   reset print log fuzz fw=6;
647  +*-- Construct a square, singular matrix [Timm, EX. 1.7.3];
648  +A = {4 4 -2, 4 4 -2, -2 -2 10};
                A             3 rows      3 cols    (numeric)

                                  4      4     -2
                                  4      4     -2
                                 -2     -2     10

649  +r = det(A);
                R             1 row       1 col     (numeric)

                                         0

650  +*-- rank is 2, so inv(A) wont work;
651  +r = echelon(A);
                R             3 rows      3 cols    (numeric)

                                  1      1      0
                                  0      0      1
                                  0      0      0

652  +r = inv(A);
ERROR: (execution) Matrix should be non-singular.
 operation : INV      at line   652 column   8
 operands  : A

A             3 rows      3 cols    (numeric)

      4      4     -2
      4      4     -2
     -2     -2     10

 statement : ASSIGN          at line   652 column   1
653  +*-- Generalized inverse does exist for any  matrix
654  +    (but unlike ordinary inverse is not unique);
655  +AI = ginv(A);
                AI            3 rows      3 cols    (numeric)

                             0.0694 0.0694 0.0278
                             0.0694 0.0694 0.0278
                             0.0278 0.0278 0.1111

656  +*--PROPERTIES OF GENERALIZED INVERSE (Moore-Penrose inverse);
657  +r = A * AI * A;
                R             3 rows      3 cols    (numeric)

                                  4      4     -2
                                  4      4     -2
                                 -2     -2     10

658  +r = AI * A * AI;
                R             3 rows      3 cols    (numeric)

                             0.0694 0.0694 0.0278
                             0.0694 0.0694 0.0278
                             0.0278 0.0278 0.1111

659  +*--Both (A*AI) and (AI*A) are symmetric, but A * AI ^= AI * A ^= I;
660  +r = A * AI;
                R             3 rows      3 cols    (numeric)

                                0.5    0.5      0
                                0.5    0.5      0
                                  0      0      1

661  +r = AI * A;
                R             3 rows      3 cols    (numeric)

                                0.5    0.5      0
                                0.5    0.5      0
                                  0      0      1

662  +*--For a rectangular matrix, inv(A'A)*A' is the ginv of
663  +*  A if (A'A)- is ginv of (A'A) [TIMM: EX 1.6.11];
664  +A = J(4,1) || {1 0, 1 0, 0 1, 0 1};
                A             4 rows      3 cols    (numeric)

                                  1      1      0
                                  1      1      0
                                  1      0      1
                                  1      0      1

665  +AA= t(A) *  A;
                AA            3 rows      3 cols    (numeric)

                                  4      2      2
                                  2      2      0
                                  2      0      2

666  +AAI= ginv(AA);
                AAI           3 rows      3 cols    (numeric)

                             0.1111 0.0556 0.0556
                             0.0556 0.2778 -0.222
                             0.0556 -0.222 0.2778

667  +*--ginv of A is AAI * A';
668  +AI = AAI  *  t(A);
                AI            3 rows      4 cols    (numeric)

                         0.1667 0.1667 0.1667 0.1667
                         0.3333 0.3333 -0.167 -0.167
                         -0.167 -0.167 0.3333 0.3333

669  +r = A * AI * A;
                R             4 rows      3 cols    (numeric)

                                  1      1      0
                                  1      1      0
                                  1      0      1
                                  1      0      1

670  +r = AI * A * AI;
                R             3 rows      4 cols    (numeric)

                         0.1667 0.1667 0.1667 0.1667
                         0.3333 0.3333 -0.167 -0.167
                         -0.167 -0.167 0.3333 0.3333

671  +quit;
Exiting IML.
NOTE: The PROCEDURE IML used 0.17 seconds.

672  +
NOTE: %INCLUDE (level 1) ending.