全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1432 4
2012-03-28
为什么beta输出来的不是数组呢??提示错误 (execution) Matrix has not been set to a value.


proc iml ;
A={0.483 13.2682 0 4.3646 5.1070,
0.4035 13.4909 39.0131 3.6151 5.5005,
0.8979 25.7776 9.0513 4.8920 7.5342,
0.5927 16.0245 13.2935 4.4529 6.5913
};
r=nrow(A);
c=ncol(A);
B=A;
do i=1 to c;
do p=1 to r;
if i=3
then B[p,i]=(A[<>,i]-A[p,i])/(A[<>,i]-A[><,i]);
else
  B[p,i]=(A[p,i]-A[><,i])/(A[<>,i]-A[><,i]);
  end;
end;

do i=1 to c;
deta[i]=std(B[1,i],B[2,i],B[3,i],B[4,i]);

end;
print deta;


quit;

二维码

扫码加我 拉你入群

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

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

全部回复
2012-3-29 14:12:07
我想做的就是对B数组的每一列求标准差,然后每一列的标准差再除以各列标准差的和,该如何写的,我刚开始学习sas,很多不是很会...
二维码

扫码加我 拉你入群

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

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

2012-3-29 15:56:11
你得先定义deta在进行一对一的赋值
在do i=1 to c;前加
deta=j(1,c,.);
二维码

扫码加我 拉你入群

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

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

2012-3-30 10:02:13
yunqingwang 发表于 2012-3-29 15:56
你得先定义deta在进行一对一的赋值
在do i=1 to c;前加
deta=j(1,c,.);
谢谢,按照你说的运行把这个问题解决了我还有问题是,标准化那步,std()里面要放每一列的值,如何不都列出来呢,如果列数比较多,这样不是太麻烦了吗?
二维码

扫码加我 拉你入群

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

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

2012-3-30 12:25:19
自己思考去,iml在矩阵运算很方便
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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