Hi everyone,
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:
Mata returns the following eigenvectors:
While if I do the same in Matlab:
To make the readability easier, I added the column sums which nicely display the problem. First you note that the order is reversed, Matlab displays the eigenvalues in ascending order, mata in descending order. Secondly I noted that columns (Stata perspective) 1, 2, 4, 6, 8 and 10 have the same sign, the others have reversed signs.
My question is: why is this the case? Any thoughts would be highly appreciated!
Thanks!
Jan
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
Comment