全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4209 2
2013-11-22
写了一个module在proc iml下来做一个two sample t test。
proc iml;
start q4(q);
use q;
read all var {x1 x2} into x;
x1=x[*,1];
x2=x[*,2];
n=nrow(x1);
x1bar=mean(x1);
x2bar=mean(x2);
d1=x1-x1bar*j(n,1);
d2=x2-x2bar*j(n,1);
s1=d1`*d1/(n-1);
s2=d2`*d2/(n-1);
t=(n/(s1+s2))**0.5*(x1bar-x2bar);
df=2*n-2;
pvalue=2*probt(t,df);
print t,pvalue;
finish;
测试过不写module而是直接用在数据上是结果是没问题的,但是当要用module的时候出现问题了,下面是数据
data ones;
input x1 x2;
cards;
1 2
4 5
7 8
3 8
9 7
6 3
;
run;
当我把数据写在iml里面时,run q4(ones)虽然没问题但是不会出来结果;当我把数据写在iml上面时,sas告诉我ERROR: File WORK.Q.DATA does not exist。不知道怎么回事,向大家请教下
二维码

扫码加我 拉你入群

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

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

全部回复
2013-11-22 04:22:29
感觉问题就出在use q;这句话,sas好像不认为这个q是q4(q)括号里的数据集q,而应该是一个已存在的数据集q
二维码

扫码加我 拉你入群

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

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

2016-11-15 16:45:53
proc iml;
start q4;
use q;
read all var {x1 x2} into x;
x1=x[*,1];
x2=x[*,2];
n=nrow(x1);
x1bar=mean(x1);
x2bar=mean(x2);
d1=x1-x1bar*j(n,1);
d2=x2-x2bar*j(n,1);
s1=d1`*d1/(n-1);
s2=d2`*d2/(n-1);
t=(n/(s1+s2))**0.5*(x1bar-x2bar);
df=2*n-2;
pvalue=2*probt(t,df);
print t,pvalue;
finish;

submit;
data q;
input x1 x2;
cards;
1 2
4 5
7 8
3 8
9 7
6 3
;
run;
endsubmit;

run q4;

quit;
上面的代码可以运行。。。

q4()括号里填的是参数,不是数据集名字。
你没有设置参数,所以直接run这个module就可以了的。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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