全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6310 5
2013-08-01
请问各位,我需要做如下操作,如何实现?例如:
复制代码
读取了matrix这个观测,现在要做的操作如下:
  • 计算新矩阵 P = matrix - I,(I为单位矩阵)
  • 计算新矩阵的转置矩阵:P'.
  • 计算新矩阵 Q = P'P,(矩阵乘法)
  • 计算新矩阵Q的特征值


谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-8-1 11:26:30
同求
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-8-1 11:54:05
DATA matrix;
INPUT a b c;
CARDS;
1 0.4 0.3
0.8 2 0.2
0.7 0.1 0.6
;
RUN;

proc iml;
use matrix;
read all into g;
close matrix;
P=g-i(nrow(g));
t_P=P`;
Q=P`*P;
eig_Q=eigval(Q);
print P Q t_P eig_Q;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-8-1 21:00:05
ziyenano 发表于 2013-8-1 11:54
DATA matrix;
INPUT a b c;
CARDS;
谢谢!不过如果不能用IML模块的话该如何呢?我们的SAS版本里没有IML的授权,
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-8-2 23:42:00
ans1:
data p(drop=i);
set matrix;
array p(*) a b c;
do i=1 to dim(p);
   if i=_n_ then p(i)=p(i)-1;
end;
run;

ans2:
proc transpose data=p out=t_p;
run;

ans3:
data t1(rename=(a=a1 b=b1 c=c1));
set p p p;
run;

data t2;
if mod(_n_-1,3)=0 then set p;
set t1;
array p1(*) a b c;
array p2(*) a1 b1 c1;
p=0;
do i=1 to dim(p1);
   p=p+p1(i)*p2(i);
end;
run;


data Q;
array q(3);
do i=1 to 3;
   set t2(keep=p);
       q(i)=p;
end;
drop p i;
run;

用data步写矩阵太难受了,特征值不晓得怎么用data步写,
proc fcmp支持有限的矩阵运算,不过不是很好用,
实在不行用R吧,算出来结果再传回SAS

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-8-3 10:27:50
这是另一种方式来计算矩阵,但不包括特征值和特征向量.
如果数据不多, 可以直接在网上计算特征值和特征向量.
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群