|
|
沙发

楼主 |
发表于 2009-11-5 15:30:23
|
只看该作者
Re: 请教高手一个关于IML特征值累计的问题
特征值累计是搞定了,但是最后求出的主成分和proc princomp不一样,高手给我看看这是为什么?多谢!下面是code:
%let n=5;
proc iml;
reset deflib=work;
a={22 10 2 3 7,
14 7 10 0 8,
-1 13 -1 -11 3,
-3 -2 13 -2 4,
9 8 1 -2 4,
9 1 -7 5 -1,
2 -6 6 5 1,
4 5 0 -2 2};
create tb from a;
append from a ;
call svd(u,q,v,a);
reset fuzz;
print a u q v ;
sq=sum(q);
print sq;
dq=diag(q);
print dq;
trace=trace(dq);
print trace;
retain_eig={0};
idx={0};
do i=1 to &n.;
eig=q[i];
retain_eig=retain_eig+eig;
rate_eig=retain_eig/sq;
if rate_eig >= 0.7 then do;idx=i; new_eig=q[1:idx];stop;end;
end;
print retain_eig;
print idx;
print new_eig;
u1=u[1:idx,];
print u1;
p=a*(u1)`;
print p;
quit;
proc princomp data=tb out=tb1;
run;
结果,IML里面最后作出的P和PROC 出来的ta1中的主成分不一样。估计是P的公式有问题,但是实在没有找出来。 |
|