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.