maybe this is a very silly question and I am overlooking something very, very obvious. I am interested obtaining the eigenvectors from a symmetric matrix. Comparing results from mata and Matlab I note that the eigenvectors are the same in absolute value, but the sign is different for some columns. Does anyone know why this is the case? The sign in my case matters as I need the eigenvectors for further steps in some calculations and I need to ensure that my Stata/mata code reproduces some Matlab code.
Let me show the following example:
Code:
clear all set seed 123 mata a1 = rnormal(100,10,0,1) mata a = quadcross(a1,a1) mata eigensystem(a,evec=.,ev=.) mata evec
Code:
. mata evec 1 2 3 4 5 6 7 8 9 10 +---------------------------------------------------------------------------------------------------------------------------------------------+ 1 | .154773751 .430540368 .157377265 .736356707 -.190048099 -.039730741 -.266316045 .330046069 .043541535 .065145637 | 2 | .560311284 -.070572586 .5335531 -.183320564 -.103330895 -.392098006 .262833648 .164038255 -.127964573 -.2932615 | 3 | -.107331677 .315302011 -.101299235 -.278079616 -.329385204 .128312068 .028175163 .171943027 .629334735 -.500095683 | 4 | -.11680293 .628603515 .203390955 -.227595329 .022151179 .416304179 .370359529 .040548746 -.416397393 .109773256 | 5 | .3366534 .227323037 -.535369916 .223776312 .515636807 -.093825465 .321012737 -.085672388 -.01291286 -.336231658 | 6 | -.396290022 -.307470176 -.185830684 .299810497 -.378426197 -.072974618 .50877657 .276063847 -.285346408 -.242853522 | 7 | -.225810941 -.253774484 .384405925 .109023332 .582850665 .358419676 -.082034656 .376075698 .07693423 -.320457292 | 8 | -.089692161 -.0261965 .377944666 .372175253 -.05496082 .141525952 .269537163 -.73266162 .234119525 -.150355911 | 9 | -.321274722 .161023461 .142640628 -.009946111 .281437301 -.488882304 .386767574 .170962276 .408914718 .431471158 | 10 | .451994837 -.279046218 -.082544808 .067696836 -.114842988 .503268107 .362163387 .204810529 .320544564 .405106383 | +---------------------------------------------------------------------------------------------------------------------------------------------+ mata colsum(evec) 1 2 3 4 5 6 7 8 9 10 +---------------------------------------------------------------------------------------------------------------------------------------------+ 1 | .246530821 .825732429 .894267896 1.10989732 .23108175 .460318847 2.16127507 .916154439 .870768073 -.831759133 | +---------------------------------------------------------------------------------------------------------------------------------------------+
Code:
[V,D] = eig(a); V = 0.0651 -0.0435 0.3300 -0.2663 -0.0397 0.1900 0.7364 -0.1574 0.4305 0.1548 -0.2933 0.1280 0.1640 0.2628 -0.3921 0.1033 -0.1833 -0.5336 -0.0706 0.5603 -0.5001 -0.6293 0.1719 0.0282 0.1283 0.3294 -0.2781 0.1013 0.3153 -0.1073 0.1098 0.4164 0.0405 0.3704 0.4163 -0.0222 -0.2276 -0.2034 0.6286 -0.1168 -0.3362 0.0129 -0.0857 0.3210 -0.0938 -0.5156 0.2238 0.5354 0.2273 0.3367 -0.2429 0.2853 0.2761 0.5088 -0.0730 0.3784 0.2998 0.1858 -0.3075 -0.3963 -0.3205 -0.0769 0.3761 -0.0820 0.3584 -0.5829 0.1090 -0.3844 -0.2538 -0.2258 -0.1504 -0.2341 -0.7327 0.2695 0.1415 0.0550 0.3722 -0.3779 -0.0262 -0.0897 0.4315 -0.4089 0.1710 0.3868 -0.4889 -0.2814 -0.0099 -0.1426 0.1610 -0.3213 0.4051 -0.3205 0.2048 0.3622 0.5033 0.1148 0.0677 0.0825 -0.2790 0.4520 sum(V) ans = -0.8318 -0.8708 0.9162 2.1613 0.4603 -0.2311 1.1099 -0.8943 0.8257 0.2465
My question is: why is this the case? Any thoughts would be highly appreciated!
Thanks!
Jan
0 Response to Eigenvectors in Stata (mata) vs. Matlab
Post a Comment