《chaper3过程步》PPT课件_第1页
《chaper3过程步》PPT课件_第2页
《chaper3过程步》PPT课件_第3页
《chaper3过程步》PPT课件_第4页
《chaper3过程步》PPT课件_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章SAS过程步,SAS系统用SAS数据步生成和管理数据,用过程步实现分析、报表、绘图等功能。本章介绍SAS过程步的一般用法和常用语句的含义,以及几个简单报表、分析、绘图过程的使用。,3.1SAS过程初步,SAS过程步的一般形式为:PROC过程名DATA=输入数据集选项;过程语句/选项;过程语句/选项;RUN;,PROC语句的选项是可选的,用来规定过程运行的一些设置,如果有多个选项用空格分开;DATA=输入数据集是可选的,如果缺省的话使用最近生成的数据集;过程步一般以RUN语句结束,可以省略RUN语句而在下一个过程步或数据步的开始处结束。交互式过程:在遇到RUN语句时不结束过程运行,只有遇到QUIT语句或者下一个过程步、数据步时才结束。,过程步在PROC语句之后、结束之前可以有若干个过程语句;过程语句与数据步中的语句不同,数据步中的语句不能用在过程步中;过程步语句一般以某一个关键字开头,比如VAR、BY、TABLES、WEIGHT等,语句中有一些说明,如果有选择项的话要写在斜杠后。,有些SAS过程步是对数据集作某种变换(比如SORT过程对数据集排序),不生成显示结果;多数过程步是对数据集作某些分析、报表,这时结果出现在OUTPUT窗口(高精度绘图过程的输出在GRAPHICS窗口);对OUTPUT窗口的结果,可以用“File|SaveAs”菜单保存为一个文本文件,可以进一步的修饰,插入到其它报告中,也可以用“File|Print”菜单打印。,SAS过程步常用语句,一、VAR语句VAR语句在很多过程中用来指定分析变量。在VAR后面给出变量列表:VAR变量名1变量名2变量名n;变量名列表可以使用省略的形式,如X1-X3,MATH-CHINESE等。VAR用法例如:varmathchinese;,二、MODEL语句MODEL语句在一些统计建模过程中用来指定模型的形式。其一般形式为MODEL因变量自变量表/选项;例3-1dataa2;inputxy;cards;820165780158720130867180690134787167934186679145639120820158;procreg;modely=x;run;,三、BY语句和CLASS语句BY语句在过程中一般用来指定一个或几个分组变量,根据这些分组变量值把观测分组,然后对每一组观测分别进行本过程指定的分析。在使用带有BY语句的过程步之前一般先用SORT过程对数据集排序。例3-2:dataclass;setsasuser.class;Run;Procsort;bysex;Run;procprintdata=class;bysex;run;上述PRINT过程可以把男、女生分别列出。,在一些过程(如方差分析)中,使用CLASS语句指定一个或几个分类变量,它实际相当于因变量;在另一些过程(如MEANS)中,CLASS语句作用与BY语句类似,可以指定分类变量,把观测按分类变量分类后分别进行分析;使用CLASS时不需要先按分类变量排序。,四、OUTPUT语句在过程步中经常用OUTPUT语句指定输出结果存放的数据集;不同过程中把输出结果存入数据集的方法各有不同,OUTPUT语句是用得最多的一种,其一般格式为:OUTPUTOUT输出数据集名关键字变量名关键字变量名;其中用OUT给出了要生成的结果数据集的名字,用“关键字变量名”的方式指定了输出哪些结果(关键字的例子比如MEANS过程中的MEAN,VAR,STD等等),等号后面的变量名指定了这些结果在输出数据集中叫什么名字。,例3-3,title95级1班学生成绩排名;datac9501;inputname$1-10sex$mathchinese;avg=math*0.5+chinese/120*100*0.5;cards;李明男9298张红艺女89106王思明男8690张聪男98109刘颍女80110;run;,procprint;run;procsortdata=c9501;bydescendingavg;run;procprint;run;procmeansdata=c9501;varmath;outputout=resultn=nmean=meanmathvar=varmath;run;procprintdata=result;run;,五、FREQ语句FREQ语句指定一个重复数变量,每个观测中此变量的值说明这个观测实际代表多少个完全相同的重复观测。FREQ变量只取整数值。如freqnumcell;例3-4dataa;Inputsex$agenumber;Cards;F2020f2223M2119m2216;Procmeans;Freqnumber;Varage;run;,六、WEIGHT语句WEIGHT语句指定一个权重变量,在某些允许加权的过程中代表权重,其值与观测对应的方差的倒数成比例。,七、ID语句有些过程(如PRINT、UNIVARIATE)需要输出观测的代号,这一般使用观测的序号。但是,如果数据集中有一个变量可以用来区分观测(如人名、省市名),就可以用ID语句指定这个变量作为观测标识,如:idname;指定用变量NAME的值来标识观测。,八、WHERE语句用WHERE语句可以选择输入数据集的一个行子集来进行分析,在WHERE关键字后指定一个条件。例3-5:wheremath=60andchinese=60;指定只分析数学、语文成绩都及格的学生。,九、LABEL语句和FORMAT语句LABEL语句为变量指定一个标签,很多过程可以使用这样的标签。其格式为LABEL变量名标签变量名标签;例3-6procprintdata=sasuser.c9501label;idname;varmathchinese;labelname=姓名math=数学成绩chinese=语文成绩;run;,FORMAT语句可以为变量输出规定一个输出格式.例3-7procprintdata=sasuser.c9501;formatmath5.1chinese5.1;run;使得列出的数学、语文成绩宽度占5位,带一位小数。在数据步中规定的变量属性是附属于数据集本身的,是永久的;在过程步中规定的变量属性(标签、输出格式等)只用于此过程的本次运行。,3.2列表报告,PRINT过程用来生成列表报告;基本用法procprint;print过程步用来列出数据集的内容,可以检查变量与值之间对应是否正确,数据输入是否正确。为了列出一个指定的数据集,在PROC语句中使用DATA选项指定要列表的输入数据集名,例3-8procprintdata=sasuser.gpa;run;,在过程步内使用VAR语句可以指定要列出的变量并指定顺序。例3-9procprintdata=c9501;varnamechinesesex;run;列出变量NAME、CHINESE、SEX的值。注意这已不是生成时的变量顺序,并且变量MATH未列出。,注意PRINT的输出第一列总是标为OBS,值为观测序号。在PROCPRINT语句中加入NOOBS选项,结果中就没有了OBS这一列例3-10procprintdata=c9501noobs;run;,在过程中使用WHERE语句可以从输入数据集中选一个子集来处理,在PRINT过程中使用WHERE可以指定只列出满足条件的观测。例3-11procprintdata=c9501;wherenamein(李明,张聪);run;,使用中文列标题为了对列标题使用中文,可以在过程内用LABEL语句给变量指定标签,同时在PROCPRINT语句中加LABEL选项,例3-12procprintdata=c9501noobslabel;varnamesexmathchineseavg;labelname=姓名sex=性别math=数学chinese=语文avg=平均分;run;实际上,如果在生成数据集的数据步中使用如上的label语句,结果数据集中的变量就有了标签,在过程步中可以直接使用而不需再次用label语句定义。,例3-13title95级1班学生成绩排名;datac9501;inputname$1-10sex$mathchinese;avg=math*0.5+chinese/120*100*0.5;labelname=姓名sex=性别math=数学chinese=语文avg=平均分;cards;李明男9298张红艺女89106王思明男8690张聪男98109刘颍女80110;run;procprintdata=c9501label;run;procsortdata=c9501;bydescendingavg;run;procprintdata=c9501label;run;,用BY语句分组处理在过程步中使用BY语句可以指定分类变量,把观测分类处理在使用带有BY语句的过程之前一般用SORT过程对数据集按照分类变量排序。例3-14:procsortdata=c9501;bysex;run;procprintdata=c9501;bysex;run;。,在PRINT过程中可以用SUM语句计算某个变量的总计(总和)。例3-159501班的同学购买课外书所用的钱数用如下程序输入数据集:databkmoney;inputname$amount;cards;李明20张红艺15王思明10张聪20刘颍50;run;,计算总计和小计,只要在PRINT过程中加上SUM语句,可以对指定要求和的变量求和:例3-16procprintdata=bkmoneynoobs;sumamount;run;列出了此数据集并计算全班的总书款,,SUM语句中可以指定多个变量名,同时对这些变量求和。用BY语句与SUM语句就可以既计算总和也计算分组小计。例3-16续除了要计算学生购买课外书总支出外还想分男、女生计算总支出。注意由于数据集BKMONEY中没有性别的信息,首先用了带MERGE语句的数据步来横向合并C9501和BKMONEY两个数据集。,procsortdata=c9501;byname;procsortdata=bkmoney;byname;datanew;mergec9501bkmoney;byname;run;procsortdata=new;bysex;procprintdata=new;bysex;sumamount;run;,3.3汇总表格,TABULATE过程可以作出很复杂的表;一般格式为:PROCTABULATEDATA=数据集名;CLASS分类变量;VAR分析变量;TABLE页维说明,行维说明,列维说明/选项;RUN;CLASS语句给出分类变量,用分类变量可以给观测分类,计算统计量时可以对每一类分别计算。VAR语句给出分析变量,分析变量必须是数值型变量,要计算的统计量是对这些变量计算。,例3-17proctabulatedata=new;classsex;varamount;tablesex,amount;run;,可以用“分析变量名*统计量名”的形式。统计量名包括N、NMISS、MEAN、STD、MIN、MAX、RANGE、SUM、USS、CSS、STDERR、CV、T(检验均值为0的t统计量值)、PRT(t统计量的p值)、VAR、SUMWGT(权数变量的和)、PCTN(某类观测占总观测个数的百分比)、PCTSUM(某类观测的总和占全部总和的百分比)。例3-18求男、女生的数学、语文成绩平均值及标准差:proctabulatedata=new;classsex;varmathchinese;tablesex,(mathchinese)*(meanstd);run;,要并列变量或并列统计量的话只要把各项用空格连接,如MATHCHINESE和MEANSTD。变量和统计量名之间用星号连接。如果要计算总的统计量值,只要加一个ALL关键字。例3-18续TABLE语句改成:tablesexall,(mathchinese)*(meanstd);,可以用星号连接分类变量和分类变量以构成交叉分组,用星号连接分类变量和分析变量以构成分类计算分析变量的统计量。例3-18续要考察性别的频数分布,使用统计量N和PCTN,TABLE语句可以写成table(sexall)*(NPCTN);如果要计算的统计量不是N、PCTN这样的基于计数统计量,则还需要指定用来计算统计量的分析变量,例如TABLE语句写成table(sexall)*math*(meanstd);在这两个例子中没有行维,只有列维。,使用KEYLABEL语句可以指定各统计量的标签,其格式为KEYLABEL关键字标签;例3-19proctabulatedata=new;classsex;varmathchinese;table(sexall),(mathchinese)*(meanstd);keylabelmean=平均值std=标准差all=总计;labelsex=性别math=数学chinese=语文;run;用KEYLABEL指定了MEAN和STD标签,又用LABEL语句指定了变量的标签:,3.4数据排序,SORT过程可以把数据集按某一个或若干个变量的次序进行排序。例3-20procsortdata=c9501;bysex;run;把数据集C9501的观测按性别排序(分类)。注意DATA=指定的数据集既是输入数据集又是输出数据集。过程的结果在输出窗口没有显示。,可以按几个变量排序,例3-20procsortdata=c9501;bysexdescendingavg;run;上面程序按男、女性别排序,并在男生、女生内部按平均分由高到低排序。BY语句内在一个变量名前面加上DESCENDING关键字表示此变量的排序是由大到小的。结果可以用procprint;run;显示出来。在INSIGHT中也可以对数据集排序(使用数据窗口菜单的sort功能)。,3.5数据集转置,可以利用Transpose过程改变行和列的关系例3-21datamat;inputx1x2x3;cards;123456789101112;run;Procprint;run;Proctransposedata=matout=matt;Varx1x2x3;Run;Procprint;run;,3.6描述统计,MEANS过程、UNIVARIATE过程、FREQ过程这三个过程用来计算简单的数据汇总信息。MEANS和UNIVARIATE过程对区间变量计算均值、标准差等数字特征,FREQ过程对离散变量计算取值频数分布。例3-21procmeansdata=c9501;varmathchinese;run;上述程序对C9501中的数学成绩、语文成绩计算简单统计量。,如果使用UNIVARIATE过程则可以计算较多的统计量。例3-22procunivariatedata=sasuser.gpa;vargpa;run;结果中各统计量的可参见李东风统计软件教程1.3.7,FREQ过程可以考察离散变量的取值分布,在TABLES语句中指定要分析的变量。例3-23procfreqdata=c9501;tablessex;run;对区间变量使用FREQ过程列出频数分布,如tablesmath;MEANS、UNIVARIATE、FREQ的结果可以在INSIGHT的“Analyze|Distribution”和“Tables|FrequencyTable”得到。,例3-24datasasuser.taxif;inputamountnum;cards;104126131151161195203231241251263271;Run;Procmeansdata=sasuser.taxifmeanstdsumminmax;Varamount;Freqnum;Run;procprint;,3.7用CORR过程计算相关系数,相关系数可以反映变量两两之间的线性相关;可用proccorr。例3-25proccorrdata=sasuser.gpa;varhsmhsshse;run;上述程序计算SASUSER.GPA中的三个变量HSM、HSS、HSE两两之间的相关系数(普通的Pearson相关系数)。CORR的结果也在INSIGHT中可以由“Analyze|Multivariate”菜单得到。,3.8用SAS/GRAPH绘图,SAS可以把存贮在SAS数据集中的数据以图形的方式形象直观地显示出来;在SAS/GRAPH模块的支持下,SAS可以作散点图、曲线图、直方图、扇面图、三维曲面图、等高线图、地图,等等。,散点图和曲线图,用GPLOT过程绘制散点图和曲线图。例3-26procgplotdata=sasuser.gpa;symboli=nonev=star;plotsatv*satm;run;结果显示了一个GRAPHICS窗口,绘出了以SATV为纵轴、以SATM为横轴的散点图在GPLOT过程中,用PLOT语句指定绘图用的变量;要绘制连线,则在symbol语句中指定i=join如果不想出现散点符号,则在symbol语句中指定V=none。,SYMBOL语句是一个全程语句,指定绘图用的连线方式、颜色、散点符号、大小,等等。SYMBOL语句可以带编号,如SYMBOL2,SYMBOL3等,不带编号的相当于SYMBOL1。,在PLOT语句中指定多个因变量(自变量一般应为同一个)并使用OVERLAY选项可以做多条曲线;例3-27procgplotdata=sasuser.air;symbol1i=joinv=noneline=1;symbol2i=joinv=noneline=2;plotco*datetime=1so2*datetime=2/overlay;run;说明:其中指定了两个SYMBOL语句,第一个SYMBOL语句指定了LINE=1,表示线型为实线,第二个SYMBOL语句指定了LINE=2表示线型为虚线。我们在PLOT语句中用了“纵轴*横轴=n”的格式来指定曲线使用哪一个SYMBOL语句的规定来画,n对应于SYMBOL语句的序号。,SYMBOL语句中,I=选项,取I=SMnn(nn取0099值)表示绘制样条曲线但可以不经过散点,nn值代表曲线光滑性与拟和度的折中,取I=NEEDLE绘制每个点到横轴的垂线,取I=RL绘制线性回归直线,I=RQ为二次曲线,I=RC为三次曲线。,后面加上CLInn如RLCLI95表示在回归直线之外绘制预测值的95置信限曲线,例3-28procgplotdata=sasuser.gpa;symboli=rlcli95v=star;plotsatv*satm;run;GPLOT过程还可以有其它灵活的用法,可以参考有关资料或用SAS系统菜单“Help”,从中找“SASSystemHelp:MainMenu|Graphics|GPLOT”。,直方图和扇形图,可用GCHART过程绘制直方图;例3-29procgchartdata=sasuser.gpa;vbargpa;run;SASUSER.GPA中GPA的分布直方图,其中绘图用的变量用VBAR语句给出。把VBAR改成HBAR则条形方向变为横向。用GCHART绘制的直方图和在INSIGHT中绘制的直方图有所不同,它在横轴标的是区间的中点值,而在INSIGHT中横轴标的是区间的端点值。,可以绘制分组的直方图,例3-30procgchartdata=sasuser.gpa;vbargpa/group=sex;run;,在GCHART中用PIE语句绘制表示频数的扇形图:例3-31procgchartdata=sasuser.gpa;piesex;run;若需要显示百分比值,在PIE语句中加入TYPE=PERCENT选项,例3-32“piesex/type=percent;”,GCHART过程还可以用BLOCK语句绘制三维直方图。例3-32goptionshpos=90vpos=70;procgchartdata=sasuser.houses;blockstyle/group=bedrooms;run;,三维曲面图和等高线图,对一个二元函数z=f(x,y),有了x取等间隔值、y取等间隔值时z的值,这时我们可以用G3D过程绘制曲面图形,用GCONTOUR绘制曲面的等高线图。例3-33绘制一个二维正态分布曲面的图形。假设(X,Y)服从联合正态分布,其均值都是0,方差分别为1和a,相关系数为r。这时,我们可以得到(X,Y)的联合密度函数的公式为:可以在一个网格上计算曲面的值:,datadnorm2;a=2;a2=sqrt(a);r=0.5;det=a*(1-r*r);dox=-3to3by0.3;doy=-3*a2to3*a2by0.3*a2;z=1/(2*3.1415926*det)*exp(-0.5/det*(a*x*x+y*y-2*r*a2*x*y);output;end;end;keepxyz;run;,G3D过程来绘制曲面图:Procg3ddata=dnorm2;plotx*y=z;run;,用GCONTOUR过程可以绘制曲面对应的等高线图,例3-33procgcontourdata=dnorm2;plotx*y=z;run;,图形的调整与输出,各绘图过程中都指定了丰富的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论