SAS系统上机.docx
《SAS系统上机.docx》由会员分享,可在线阅读,更多相关《SAS系统上机.docx(36页珍藏版)》请在冰点文库上搜索。
SAS系统上机
SAS上机指导
一、SAS系统的熟悉与了解4
二、SAS编程5
1.创建数据集5
1.1自由格式5
1.2列方式5
1.3规定格式5
2.数据集的整理6
2.1建立新变量、累加、选择变量6
2.2条件语句6
2.3循环语句6
2.4数据集的连接与合并7
2.5SAS与外部数据的交换8
三、Means和Univariate过程10
1.计算统计量10
2.图形概括10
四、随机数的产生与模拟11
1.非均匀随机数的产生11
1.1逆变换法11
1.2合成法11
1.3筛选抽样法11
2.MonteCarlo方法在解确定性问题中的应用12
3.随机模拟方法在随机服务系统中的应用14
4.随机模拟方法在理论研究中的应用14
五、区间估计和假设检验17
1.正态总体的均值、方差的区间估计17
2.均值、方差的假设检验18
3.正态性检验19
4.非参数秩和检验20
六、方差分析21
七、回归分析23
八、附录:
insight简介24
SAS系统上机
一、SAS系统的熟悉与了解
1起动SAS系统
2SAS系统的窗口PGM、LOG、OUTPUT、KEY、DIR、VAR、LIB
3SAS菜单条(不同的窗口其内容有所不同)
4工具栏
5命令条:
在里面输入显示管理(DM)命令后回车或点击前面的对号
6状态栏其左边显示一些重要的帮助信息或提示。
右边有一个用于更改工作目录的图标,双击它可改变SAS的当前的工作目录,
7了解菜单栏
8在程序窗口输入以下程序,
databodyfat;
inPUtsex$fatpct@@;
fat=fatpct/100;
cards;
M13.3F22M19F26M20F16M8F12M18F21.7
M22F23.2M20F21M31F28M21F30M12F23
M16M12M24
RUN;
PROCmeansdata=bodyfat;
varfatpct;
run;
(1)执行该程序,看看LOG窗、OUTPUT窗的表示,并将这两个窗口的内容保存
(2)回到程序窗口,将原程序调回,并将该程序保存到磁盘
(3)三个窗口的切换
(4)退出SAS系统,并重新启动,在程序窗口中打开刚才保存的SAS程序。
(5)建立SAS数据库(用菜单的方式以及程序方式),并将数据集存放到该数据库下。
二、SAS编程
1.创建数据集
1.1自由格式
输入以下程序:
dataA;
inputsex$fatpct;
cards;
M13.3/*一个数据一行*/
F22
M19
F26
run;
procprintdata=A;
run;
还可改变数据的存放格式
dataA;
inputsex$fatpct@@;/*可以多个数据一行*/
cards;
M13.3F22M19F26
run;
1.2列方式
datab;
inputname$1-6dmy$7-13sex$14-15math16-17phy18-19eng20-21;
/*用下面一个语句看结果如何*/
/*inputname$1-6sex$14-15dmy$7-13phy18-19;*/
cards;
张军01MAR75男807984
王卫红24JUL78女959689
run;
1.3规定格式
datac;
input@1name$6.dmydate7.sex$2.math2.phy2.eng2.;
/*inputname$6.@14sex$2.@7dmydate7.+4phy2.;*/
/*用这个语句可替换上一个语句,看看结果*/
cards;
张军01MAR75男807984
王卫红24JUL78女959689
run;
2.数据集的整理
2.1建立新变量、累加、选择变量
dataB;
inputname$1-6dmy7-13sex$14-15math16-17phy18-19eng20-21;
total=sum(math,phy);/*新变量*/
teng+eng;/*累加变量*/
dropdmysex;/*此句亦可用KEEPNAMEMATHPHYENGTOTALTENG;替代。
*/
cards;
张军01MAR75男807984
王卫红24JUL78女959689
run;
2.2条件语句
dataCMCF;
inputname$1-6dmy7-13sex$14-15math16-17phy18-19eng20-21;
ifsex='男'thenoutputCM;
ifsex='女'thenoutputCF;
dropdmysex;/*此句亦可用KEEPNAMEMATHPHYENGTOTALTENG;替代。
*/
cards;
张军01MAR75男807984
王卫红24JUL78女959689
run;
2.3循环语句
datae;
seed=789;
doI=1to50;
x=rannor(seed);
y=2+3*x;
output;
end;
run;
procgchartdata=e;
vbary;
run;
2.4数据集的连接与合并
连接
dataA;
inputnoname$mathphyeng;
cards;
9701wanglei908679
9702wanghao989790
9703gudexian878694
9706zhuming968786
run;
dataB;
inputnoname$mathphichemgeo;
cards;
9701wanglei90868976
9702wanghao98976972
9704zhuzhun88767868
9705chaoyin64857666
run;
dataC;/*连接两个数据集*/
setA(drop=eng)B(drop=chemgeorename=(phi=phy));
run;
合并
一对一合并
dataAA;
inputx1x2;
cards;
12
78
45
;
dataBB;
inputx1y1y2;
cards;
112233
445566
run;
dataaabb;
mergeAABB;
run;
匹配合并
dataA;
inputnoname$mathphyeng;
cards;
9701wanglei908679
9702wanghao989790
9703gudexian878694
9706zhuming968786
run;
dataB;
inputnoname$mathphichemgeo;
cards;
9701wanglei90868976
9702wanghao98976972
9704zhuzhun88767868
9705chaoyin64857666
run;
procsortdata=a;
byno;
run;
procsortdata=b;
byno;
run;
dataC;
mergeAB;
byno;
run;
2.5SAS与外部数据的交换
事先在e:
\example目录下准备以下三个文件EX1.DBF、EX2.XLS、EX3.TXT,则三者分别与SAS之间进行文件转换如下。
1DBF文件转换为SAS文件。
filenameex1'e:
\example\ex1.dbf;
procdbfdb3=ex1OUT=DBF2SAS;
run;
将e:
\example目录下EX1.DBF文件转换成SAS数据集DBF2SAS,存放在临时数据库WORK中.
2SAS文件转换为DBF文件。
filenameex11'e:
\example\sas2dbf.dbf';
procdbfdb3=ex11data=DBF2SAS;
run;
将SAS数据集DBF2SAS转换成DBF数据库文件SAS2DBF.DBF,存放在e:
\example目录下.
3EXCEL文件转换为SAS文件
filenameex2'e:
\example\ex2.xls;
procdbfdb3=ex2OUT=XLS2SAS;
run;
将EXCEL文件EX2.XLS转换为SAS文件XLS2SAS,并存放在SAS的临时库WORK中.
4SAS文件转换为EXCEL文件
filenameex22'e:
\example\SAS2XLS.xls';
procdbfdb3=ex22data=XLS2SAS;
run;
则将SAS文件XLS2SAS转换为EXCEL文件SAS2XLS.xls
5文本文件转换为SAS文件,并设其内容为如下形式
9701wanglei9086
9702wanghao9897
9703gudexian8786
9706zhuming9687
filenameex3'e:
\example\ex3.txt';
datatxt2sas;
infileex3;
inputnoname$mathphy;
run;
则将EX3.TXT文本文件转换为SAS文件TXT2SAS.
6SAS文件转换为文本文件
DATA_null_;/*表示不建数据集,_null_为SAS的关键词*/
SETTXT2SAS;
FILE'E:
\EXAMPLE\SAS2TXT.TXT';/*指出存放的文件位置*/
PUTNO4.NAME8.MATH2.PHY2.;/*存在文件中的变量及格式*/
RUN;
则将TXT2SAS转换成了文本文件SAS2TXT.TXT,并存放在目录e:
\example下.
三、Means和Univariate过程
1.计算统计量
1.熟悉两个过程的格式(语法)
2输入以下程序,并改变相应的参数,看输出的结果
datastat;
inputx@@;
cards;
0.860.780.830.840.770.840.810.840.810.810.800.81
0.790.740.820.780.820.780.810.800.810.740.870.78
0.820.750.780.790.800.850.810.780.870.740.810.71
0.770.880.780.820.770.760.780.850.770.730.770.78
0.770.810.710.790.950.770.780.780.810.810.790.87
0.800.830.770.650.760.640.820.780.800.750.820.82
0.840.800.790.800.900.770.820.810.790.750.820.83
0.790.900.860.800.760.850.780.810.830.770.750.78
0.820.820.780.840.730.850.830.840.810.820.810.85
0.830.840.890.820.810.850.860.840.820.780.820.78
;
procmeansdata=statmeanvarstdstderrrangecvskewnesskurtosis;/*means可换为Univariate*/
varx;
run;
3.并结果用数据集的形式保存。
2.图形概括
用上例数据,输入以下程序
procchartdata=stat;/*chart可换为gchart*/
vbarx;
vbarx/type=percent;
vbarx/type=cpercent;
run;
四、随机数的产生与模拟
1.非均匀随机数的产生
1.1逆变换法
例1已知
(柯西分布),试给出其抽样方法。
dataex1;
seed=678;
doI=1to100;
r=ranuni(seed);
x=tan(3.14159*(r-0.5));
output;
end;
run;
1.2合成法
例2设
时梯形分布的密度函数为
试用合成法产生其随机数。
dataex2;
seed=789;a=0.3;
doI=1to100;
r=ranuni(seed);r3=ranuni(seed);
ifr1<=athendo;u=ranuni(seed);x=u;end;
elsedo;u=ranuni(seed);v=ranuni(seed);x=max(u,v);end;
output;
end;
run;
1.3筛选抽样法
例3设
试用筛选法抽取其随机数。
dataex3;
seed=789;
doI=1to100;
r1=ranuni(seed);r2=ranuni(seed);
ifr1<=r2**3thendo;x=r2;output;end;
end;
run;
2.MonteCarlo方法在解确定性问题中的应用
例4:
计算
,
(1)随机投点法
SAS程序如下:
dataE1;
Dok=1to1000;
m=0;
Doh=1to1000;
a=ranuni(32789);
b=ranuni(32789);
ifb<=(exp(a)-1)/(exp
(1)-1)thenm=m+1;
end;
I1=m/1000*(exp
(1)-1)+1;
output;
E1=abs(I1-(exp
(1)-1));
end;
run;
procmeansdata=e1MeanVar;
varI1;
run;
(2)平均值估计法
dataE2;
Dok=1to1000;
s=0;
Doi=1to1000;
x=ranuni(32789);
fx=exp(x);
s=s+fx;
end;
I2=s/1000;
output;
E2=abs(I2-(exp
(1)-1));
end;
run;
procmeansdata=e2MeanVar;
varI2;
run;
(3)重要抽样法
dataE3;
dok=1to1000;
s=0;
Doi=1to1000;
r=ranuni(32789);
x=(3*r+1)**(1/2)-1;
s=s+exp(x)/(1+x);
end;
I3=3/(2*1000)*s;
output;
E3=abs(I3-(exp
(1)-1));
End;
run;
procmeansdata=e3MeanVar;
varI3;
run;
(4)分层抽样法
dataE4;
Dok=1to1000;
s1=0;
s2=0;
Doi=1to400;
ri=ranuni(32789);
r1=0.5*ri;
f1=exp(r1);
s1=s1+f1;
end;
Doj=1to600;
rj=ranuni(32789);
r2=0.5+0.5*rj;
f2=exp(r2);
s2=s2+f2;
end;
I4=s1*(1/800)+s2*(1/1200);
output;
E4=abs(I4-(exp
(1)-1));
end;
run;
procmeansdata=e4MeanVar;
varI4;
run;
3.随机模拟方法在随机服务系统中的应用
例5某服务系统有三个服务员,输入流为泊松流,服务时间为指数分布。
每个顾客服务时间等于0.5分钟。
求在T=4分钟内被服务顾客的数学期望。
解:
设
表示第
个顾客到达的时刻,
表示第
个顾客到达的时间间隔。
则有
。
SAS程序为
dataex7;
s1=0;s2=0;s3=0;
T=0;
Dountil(T>4);
R=ranuni(-1);
P=0.2*(-log(R));
T=T+p;
Ss1=s1;ss2=s2;ss3=s3;
If(T<=ss1)and(T<=ss2)and(T<=ss3)thend=0;
Elsed=1;
If(T>ss1)thendo;s1=T+0.5;end;
If(T<=ss1)and(T<=ss2)and(T>ss3)thendo;s3=T+0.5;end;
Output;
End;
Run;
Procmeansdata=ex7;
Vard;
Outputout=resultsum=dsum;
Run;
Procprintdata=result;
Run;
4.随机模拟方法在理论研究中的应用
例8:
假设数据来自
和
的总体,用SAS来计算,比较系统聚类法的八种常用方法在分类时之间的分类效果的好坏。
其SAS程序为(以average为例):
%macrocreatedata(mdata=,leixing=,mv1=,mv2=,mvar1=,mvar2=,mvar3=);
data&mdata;
dropiu1u2;
fenlei=&leixing.;
doi=1to50;
u1=rannor(0);
u2=rannor(0);
x1=&mv1.+sqrt(&mvar1.)*u1;x2=&mv2.+(&mvar2.*u1+sqrt(&mvar1.*&mvar3.-&mvar2.*&mvar2.)*u2)/sqrt(&mvar1.);
output;
end;/*产生来自两元正态总体的随机数据*/
run;
%mendcreatedata;
%macrodatacluster(mdata=,method=);
data&mdata.;
setab;
run;
procclusterdata=&mdata.method=&method.outtree=cnoprint;
varx1x2;
copyfenleix1x2;
run;/*对两个来自不同两元正态总体的随机数据进行聚类*/
proctreedata=cout=abcncl=2noprint;
copyfenleix1x2;
run;
dataresult1;
setabc;
result=0;
iffenlei^=clusterthenresult=1;
run;
procsortdata=result1;
byfenlei;
run;
procmeansdata=result1noprint;
varresult;
byfenlei;
outputout=resultsum=errorsum;
run;/*计算出错分的个数*/
procappendbase=r_resultdata=result;
run;
%menddatacluster;
%macroanalyze;
%doi=1%to50;
%createdata(mdata=a,leixing=1,mv1=0,mv2=0,mvar1=1,mvar2=0,mvar3=1);
%createdata(mdata=b,leixing=2,mv1=3,mv2=3,mvar1=1,mvar2=0,mvar3=1);
%datacluster(mdata=ab,method=average);
%end;
%mendanalyze;
%analyze;
datarr;
setr_result;
iferrorsum>25thenerrorsum=50-errorsum;
errorratio=errorsum/50;
run;/*计算错分率*/
procsortdata=rr;
byfenlei;
run;
procmeansdata=rrnoprint;
outputout=rmean=err_ratio;
varerrorratio;
byfenlei;
run;/*计算平均错分率*/
procprintdata=r;
varfenleierr_ratio;
title'总错判率:
';
run;
在运用SAS进行计算时,只需将“method=average”中的“average”用其它七种聚类方法进行替换即可。
五、区间估计和假设检验
1.正态总体的均值、方差的区间估计
例1:
设某厂一车床生产的钮扣,其直径据经验服从正态
,
。
为了判断其均值的置信区间,现抽取容量n=100的子样,其子样均值
=26.56,求其均值的95%的置信区间.
SAS程序为
dataval1;
xbar=26.56;
sigma=5.2;
n=100;
u=probit(0.975);
delta=u*sigma/sqrt(n);
lcl=xbar-delta;
ucl=xbar+delta;
procprintdata=val1;
varlclxbarucl;
run;
例2(t检验的置信区间)检验某种型号玻璃纸的横向廷伸率。
测得的数据如下:
横向廷伸率%35.537.539.541.543.545.547.549.551.553.555.557.559.561.563.5
频数7811991217145320201
现在要检验假设
并求出其95%的置信区间。
SAS程序为:
datavar22;
inputxfx@@;
y=x-65;
cards;
35.5737.5839.51141.5943.5945.51247.51749.514
51.5553.5355.5