楼主: wanwanle2
4590 5

SAS/IML过程,循环计算马氏距离问题(急) [推广有奖]

  • 1关注
  • 22粉丝

已卖:153份资源

博士生

87%

还不是VIP/贵宾

-

威望
0
论坛币
310 个
通用积分
294.0629
学术水平
16 点
热心指数
18 点
信用等级
14 点
经验
287100 点
帖子
306
精华
0
在线时间
370 小时
注册时间
2011-4-13
最后登录
2024-10-23

楼主
wanwanle2 在职认证  发表于 2011-4-15 07:48:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
下面计算马氏距离的程序
data score;
input num x1-x5@;
label x1='政治' x2='语文' x3='外语' x4='数学' x5='物理';
cards;
1 99 94 93 100 100
2 99 88 96 99 97
3 100 98 81 96 100
4 93 88 88 99 96
5 100 91 72 96 78
6 90 78 82 75 97
7 75 73 88 97 89
8 93 84 83 68 88
9 87 73 60 76 84
10 95 82 90 62 39
11 76 72 43 67 78
12 85 75 50 34 37
;
proc iml;
n=12;p=5;
xx={x4 x5};
use score;
read all var xx into x;
e={[12] 1};
x0=(e*x)/n;
mm=i(12)-j(12,12,1)/n;
a=x`*mm*x;
s=a/(n-1);
si=inv(s);print x0 s si; /*si为s的逆矩阵*/
use score(obs=1);
read all var xx into xx1;
d1=(xx1-x0)*si*(xx1-x0)`; /*d 为马氏距离*/
use score(firstobs=2 obs=2);
read all var xx into xx2;
d2=(xx2-x0)*si*(xx2-x0)`;
use score(firstobs=3 obs=3);
read all var xx into xx3;
d3=(xx3-x0)*si*(xx3-x0)`;
use score(firstobs=4 obs=4);
read all var xx into xx4;
d4=(xx4-x0)*si*(xx4-x0)`;
use score(firstobs=5 obs=5);
read all var xx into xx5;
d5=(xx5-x0)*si*(xx5-x0)`;
use score(firstobs=6 obs=6);
read all var xx into xx6;
d6=(xx6-x0)*si*(xx6-x0)`;
use score(firstobs=7 obs=7);
read all var xx into xx7;
d7=(xx7-x0)*si*(xx7-x0)`;
use score(firstobs=8 obs=8);
read all var xx into xx8;
d8=(xx8-x0)*si*(xx8-x0)`;
use score(firstobs=9 obs=9);
read all var xx into xx9;
d9=(xx9-x0)*si*(xx9-x0)`;
use score(firstobs=10 obs=10);
read all var xx into xx10;
d10=(xx10-x0)*si*(xx10-x0)`;
use score(firstobs=11 obs=11);
read all var xx into xx11;
d11=(xx11-x0)*si*(xx11-x0)`;
use score(firstobs=12 obs=12);
read all var xx into xx12;
d12=(xx12-x0)*si*(xx12-x0)`;
print d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12;
run;quit;
我不会直接从矩阵x中读取每行数据,只能用 use score(obs=1);read all var xx into xx1;d1=(xx1-x0)*si*(xx1-x0)`; 来计算在第一个观测(即x矩阵的第一行)下的马氏距离,共12个同样的步骤,很繁琐!请哪位高手给个循环模式,可直接一起计算这十二个马氏距离!谢谢!!
二维码

扫码加我 拉你入群

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

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

关键词:马氏距离 score First print Input 循环 马氏距离

沙发
wanwanle2 在职认证  发表于 2011-4-15 07:53:35
另外,在求出了d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 这些值后,怎样把它们存放在一个新的数据集中,以备接下其它过程用(如用freq过程分析这12个数据频率等)?

藤椅
天堂之路 发表于 2011-4-15 15:25:19
用MATLAB 吧

板凳
winsentess 发表于 2011-4-21 13:36:03
SAS中文论坛有相同的问题。
别人无法复制的财富是他人经历的苦难!!!

报纸
wanwanle2 在职认证  发表于 2011-4-21 23:33:50
呵呵,是我发帖求助的!现在已解决,谢谢,好心人士!

地板
qnsz 发表于 2013-3-31 15:11:39
wanwanle2 发表于 2011-4-21 23:33
呵呵,是我发帖求助的!现在已解决,谢谢,好心人士!
怎么解决的,求源码

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-6 07:05