版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
统计软件SAS讲义教材《SAS系统使用手册》高惠璇中国统计出版社SAS参考书一、《SAS系统应用开指南》彭昭英希望电子出版社二、《SAS应用统计教程》王吉利中国统计出版社三、《数据分析方法》董麓东北财经大学出版四、《现代统计与SAS应用》胡良平军事医学出版五、《SAS基础及统计实例教程》胡小平王长发SAS是“统计分析系统”英语Statisticalanalysissystem的缩写。SAS统计软件SAS是美国SAS软件研究所发展为SAS软件公司的产品。1966年,由美国北卡罗里那州立大学(NorthCarolinaStateUniversity)统计系教授开发的统计软件。1976年成立SAS研究所SAS的统计功能十分全面和完备。涉及的统计方法非常广泛。掌握SAS软件主要是统计理论与计算机知识的结合。SAS系统是由模块构成,主要模块有:SAS/BASE模块·BaseSAS作为SAS系统的核心,负责数据管理,交互应用环境管理,进行用户语言处理,调用其它SAS模块。BaseSAS为SAS系统的数据库提供了丰富的数据管理功能,还支持标准的SQL语言对数据进行操作。BaseSAS能够制作从简单列表到比较复杂的统计报表。BaseSAS可进行基本的描述性统计及基本相关系数的计算,进行正态分布检验等。SAS/STAT推断统计与回归分析SAS/STAT覆盖了所有的实用数理统计分析方法,是国际统计分析领域的标准软件。SAS/STAT提供了40多个过程,可进行各种不同模型或不同特点数据的回归分析,可处理的数据有实型数据、有序数据和属性数据,并能产生各种有用的统计量和诊断信息。在方差分析方面,SAS/STAT为多种试验设计模型提供了方差分析工具。还有处理一般线性模型和广义线性模型的专用过程。在多变量统计方面,SAS/STAT为主成分分析、典型相关分析、判别分析和因子分析提供了许多专用过程。SAS/STAT还包含多种聚类准则的聚类分析方法。SAS/QC质量控制统计
SAS/QC为全面质量管理提供了一系列工具。提供一套全屏幕菜单系统引导用户进行标准的统计过程以及试验设计。SAS/QC提供了多种不同类型控制图的制作与分析。Pareto图(排列图)可用于发现需优先考虑的因素,Ishikawa图(鱼骨图)可用于直观地进行因果分析。SAS/IML矩阵运算·
SAS/IML提供功能强大的面向矩阵运算的编程语言,帮助用户研究新算法或解决SAS中没有现成算法的专门问题。SAS/IML中的基本数据元素是矩阵。它包含大量的数学运算符、函数和例行程序,用户用很少的语句便可执行很复杂的计算过程。SAS/GRAPH统计图形分析SAS/GHAPH可将数据及其包含着的深层信息以多种图形生动地呈现出来,如直方图、圆饼图、星形图、散点相关图、曲线图、三维曲面图、等高线图及地理图等。SAS/GHAPH提供一个全屏幕编辑器,提供多种设备程序,支持非常广泛的图形输出设备以及标准的图形交换文件。
·SAS/ASSIST模块
SAS/ASSIST为SAS系统提供了面向任务的菜单界面,借助它可以通过菜单系统来使用SAS系统其它产品。它自动生成的SAS程序既可辅助有经验的用户快速编写SAS程序,又可帮助用户学习SAS。·SAS/AF模块
SAS/AF是一个应用开发工具。用户使用SAS/AF可将包含众多功能的SAS软件作为方法库,利用SAS/AF的屏幕设计能力以及SCL语言的处理能力来快速开发各种功能强大的应用系统。SAS/AF也了采用了OOP(面向对象编辑)技术,使用户可方便快速开发各类具有图形用户界面(GUI)的应用系统。
·SAS/ETS模块
SAS/ETS提供丰富的计量经济学和时间序列分析方法,是研究复杂系统和进行预测的有力工具。它提供方便的模型设定手段、ARIMA模型、谱分析功能、线性联立方程模型、季节调整、预测、财政数据分析等。还有多样的参数估计方法。·SAS/OR模块
SAS/OR提供全面的运筹学方法,是一种强有力的决策支持工具。它辅助人们实现对人力、时间以及其它各种资源的最佳利用。SAS/OR包含通用的线性规划、混合整数规划和非线性规划的求解,也为专门的规划问题提供更为直接的解决办法,如网络流问题、运输问题、分配问题等。
·SAS/EIS模块
SAS/EIS是决策工具,也是一个快速应用开发工具。SAS/EIS完全采用新兴的面向对象的编程模式(OOP)。EIS以生动直观的方式(图或表)将关键性或总结性信息呈现给使用者。
·SAS/ACCESS模块为了对众多不同格式的数据进行查询、访问和分析,SAS/ACCESS提供了与目前许多流行数据库软件的接口,利用SAS/ACCESS,可建立外部其它数据库的一个统一的公共数据界面。SAS/ACCESS提供的接口是透明的和动态的。用户不必将此文件当作真正存储着数据的SAS数据集一样使用,而只需在SAS中建立对外部的描述(即VIEW)文件,便可将此文件当作真正存储着数据的SAS数据集一样使用。对一些经常使用的外部数据,可以利用SAS/ACCESS将数据真正提取进入SAS数据库。SAS/ACCESS提供的接口是双向的,既可将数据读入SAS,也可在SAS中更新外部数据或将SAS数据加载到外部数据库中。编辑窗口信息记录窗口输出窗口SAS版本的界面,浏览窗口统计求解SAS8软件有五个基本窗口:
1、OUTPUT显示程序有关结果的输出窗口
输出窗口显示SAS程序的文本型输出(图形输出单独有一个GRAPHICS窗口)。输出分页显示。2、LOG显示程序运行信息记录窗口,运行记录窗口记录程序的运行情况,运行是成功还是出错,运行所用时间,如果出错,错在什么地方。运行记录窗口中以红色显示的是错误信息。
3、ENHANCEDEDITOR增强型编辑窗口
4、RESULTS结果窗口,具有索引性,提供结果目录。
5、EXPLORER浏览窗口,具有索引性,提供文件库目录。LOG视窗用于输出程序在运行时的各种有关信息。主要有以下几种内容:程序行黑色,以系统给出的顺序行号123...开始。记录执行过的每一条语句。提示蓝色,以NOTE开始。提供系统或程序运行的一些常规信息。警告绿色,以WARNING开始。有时也提供内存不足、软件执照即将到期等信息。错误红色,以ERROR开始。SAS界面命令输错时显示“红色”可以同时打开几个编辑窗口在下面显示各窗口的提示假设我们有一个班学生的数学成绩和语文成绩,数学满分为100,语文满分为120,希望计算学生的平均分数(按百分制)并按此排名,可以在程序窗口输入此程序:title‘95级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;程序举例SAS语法简介SAS最基本的操作是如何编写、高度、保存、装载、运行程序。SAS程序的简单举例SAS程序一般有两个部分组成SAS数据集与SAS过程或分成两步:1、数据步:数据建立部分DATA2、过程步:计算程序部分proceduretitle‘95级1班学生成绩排名’;datac9501;inputname$sex$mathchinese;avg=math*0.5+chinese/120*100*0.5;cards;李明男9298红艺女89106王思明男8690张聪男98109
刘颍女80110;procprint;run;procsortdata=c9501;bydescendingavg;procprint;run;加权平均数据集名输入数据变量名SAS程序举例SAS的运算符名称加减乘除乘方符号+-*/**运算式中最容易丢失乘号“*”如Y=3X要写成Y=3*XY=X5写成Y=X**5名称等于不等于大于小于大于等于小于等于属于符号=^=><>=<=In字母EQNEGTLTGELEIN例:X≠3写成X^=3或XNE3比较运算的结果是逻辑值,真为1,假为03<5的运算结果是1IFX<60THENN=N+1计不及格人数名称与或非字母ANDORNOT符号&|^逻辑运算符运算结果为逻辑值,真为1,假为0。><<>∣∣取小取大联接A=3,B=5X=A><B则X=3A=3,B=5Y=A<>BY=5A=“my”,B=“SAS”M=A∣∣BM=“mySAS”操作符的执行顺序1、括号优先2、具有较高优先级的操作先执行P14执行次序按组号从小到大SAS语法规则:SAS语句可以在任一行的的任一列开始或结束。每个SAS语句用分号“;”结束。几个语句可写在一行。也可以一个语句写成多行。SAS程序中大小写一般不区分(字符串中要区分大小写)SAS程序中的空格、空行一般可以任意放置,这样我们可以安排适当的缩进格式使得源程序结构清楚易读。SAS程序由两部分构成,数据部分,以DATA语句开始。用于计算和建立数据集.过程部分,以PROC语句开始。以RUN语句结束。用于统计分析.注释:(1)在语句开头加一个“*”号,表示这一行是注释句。(2)在命令后用/*…..*/表示注释标题语句格式TITLE“标题内容”字符变量名后要加$,如name$,city$,SEX$变量的标签(lable),是一个代替变量名的描述性标识。缺失的数据SAS用“.”表示变量名缩写形式:如X1,X2,X3,X4带有序号的变量名,可以用X1—X4表示。要求这些变量类型必须相同。建立数据集命令格式:DATA数据集名;(建立数据集并命名)INPUT变量表;(按顺序列出变量名)CARDS;(表示以下是数据区)数据;(;表示数据区结束)RUN;(DATA命令结束)DROP变量表;将指定变量不作为所建数据集的变量KEEP变量表;只将指定的变量作为所建数据集的变量指针控制读取数据符号@@在INPUT语句未尾,表示读一个观测值后不换行,读完一行数据才换行。在SAS中用赋值语句计算一个值并存放到变量中。赋值语句格式为:变量名=表达式;计算右边的表达式再存入左边的变量中。例如:
avg=(math+chinese/120*100)/2;赋值语句用一个公式计算平均分数。OUTPUT输出语句OUTPUT语句是一个可执行语句,它使得当前观测被写到语句指定的数据集中。格式:OUTPUT数据集名;OUTPUT所用的数据集必须事先被定义过,要先用DATA语句定义。不指定数据集名的OUTPUT语句输出到第一个结果数据集。OUTPUT语句可以用来强行写入数据集而不必象我们在数据步流程图中说明的那样等到数据步最后一个语句完成。数据步中有了OUTPUT语句后数据步流程中不再有自动写入观测的操作,而只能由OUTPUT语句指定输出。自动写入方式是在数据步程序中当执行完最后一个数据步语句时,系统自动将当前观测值送入数据集,使数据集增加一个观测值。例:DATANEW;INPUTX1-X3;Y=X1;OUTPUT;Y=X2;OUTPUT;Y=X3;OUTPUT;CARDS;123456PROCPRINT;RUN;输出结果:OBSX1X2X3Y112312123231233445645456564566例:DATANEW;INPUTNAME$AGESCORE@@;IFAGE<=30THENOUTPUT;CARDS;ZHANG2889WANG2579LIU5999PROCPRINT;RUN;结果:ZHANG2889WANG2579标签语句LABEL格式LABEL变量=“标签”用于给变量定义标签。例:DATASAS432;INPUTX$y@@; LABELX=“NAME”Y=“WEIGHT”; CARDS; ZHANG61LI57 PROCPRINT;LABELX=“NAME”Y=“WEIGHT”;
RUN;结果OBSNAMEWEIGHTzhang61Li57标签条件判断语句IF条件是否满足?YNTHEN后的语句下一语句棱形框,一个入口,两个出口条件分支语句格式:IF条件
THEN语句;
如果在某条件满足时执行THEN后的操作语句。例如:如果X为正数则显示“X为正数”,可以用IFx>0THENPUT'X为正数';例DATASAS441;INPUTNAME$SCORE@@;IFSCORE>80THENGRADE='A';IF60<=SCORE<=80THENGRADE='B';IFSCORE<60THENGRADE='C';CARDS;ZHANG75LI90WANG55PROC
PRINT;RUN;有时我们在条件成立时需要进行的操作无法用一个语句完成,这时可以使用SAS提供的复合语句功能:只要把若干个语句用“DO;”语句和“END;”语句包围起来,就可以把它们看作是一个语句,就可以用在需要指定一个语句的地方。格式IF条件THENDO;多个语句END;如果同时需要规定条件不成立时进行什么操作,使用带有ELSE字句的IF结构:IF条件
THEN语句1;ELSE语句2;
其中“语句”均可以是复合语句。例如,当X为非负时将X加倍,为负时将X取绝对值,用如下程序:IFx>=0THENx=2*x;ELSEx=-x;SELECT语句的另一种形式为:SELECT;WHEN(条件)语句;WHEN(条件)语句;……
OTHERWISE语句;END;
这种SELECT语句没有选择表达式,而是在每一个WHEN语句指定一个条件(逻辑表达式),执行第一个满足条件的WHEN后的语句。如果所有条件都不满足则执行OTHERWISE后的语句。例如:SELECT;WHEN(age<=12)put‘少年’
;WHEN(age<35)put‘青年’
;OTHERWISEput‘中老年’
;END;循环结构SAS数据步可以使用丰富的循环结构,主要的是两种:计数DO循环和当型、直到型循环。计数DO循环的写法是:DO计数变量=起始值
TO结束值
BY步长;循环体语句……
END;在DO和END之间可以有多个语句。程序先把计数变量赋值为起始值,如果此值小于等于结束值则执行循环体语句,然后把计数变量加上步长,再判断它是否小于等于结束值,如果是则继续执行循环体,直到计数变量的值大于结束值为止。结构中“BY步长”可以省略,这时步长为1。如果步长取负值,则继续循环的条件是计数变量大于等于结束值。例如:data;DOi=1TO20BY2;j=i**3;puti3.j5.;END;run;
可以输出一个1,3,5,7,…,19的立方表。在循环体中可以用LEAVE语句跳出循环,相当于C语言的break语句。例如在上例中的循环体最后加上这样一句可以在立方大于1000时停止循环:
ifj>1000thenLEAVE;在循环体内用CONTINUE语句可以立即结束本轮循环并转入下一轮循环的判断与执行。比如:data;Dox=0to3.1415926by0.01;y=sin(x);ify<0thenCONTINUE;z=cos(x);putx5.2y20.7z20.7;end;run;当型循环的语法是:DOWHILE(循环继续条件);循环体语句……END;程序先判断循环继续条件是否成立,成立时执行循环体语句,再判断循环继续条件,如此重复,直到循环继续条件不再成立。例如,下面的程序判断1333333是不是素数:data;x=1333333;i=3;DOWHILE(mod(x,i)^=0);i=i+2;END;ifi<xthenputx‘不是素数’;elseputx‘是素数’;run;
其中mod(x,i)表示x除以i的余数。
直到型循环的写法是:DOUNTIL(循环退出条件);
循环体语句……END;程序先执行循环体,然后判断循环退出条件是否成立,成立则结束循环,否则继续。注意每轮循环都是先执行循环体再判断是否退出。例如:data;n=0;dountil(n>=5);n+1;putn=;end;run;
可以依次输出n=1,2,3,4,5,当n=5时退出条件“n>=5”满足,循环结束。上例中语句n+1是一种特殊的写法,叫做累加语句,等价于n=n+1。SAS的循环语句比上面所述还要灵活得多,它在DO语句中可以指定一个循环列表,比如:data;doi=5,7,11to17by3while(i**2<200);j=i**2;Putij;end;run;
循环变量i取5,7,11,14循环体被执行,当i取17时i的平方为289故循环体不被执行,循环结束。注意WHILE条件只作用于用逗号隔开的最后一项。数据集的复制与修改SET比如要把数据集WORK.C9501复制为数据集SASUSER.CLS,只要用如下程序:datasasuser.cls;setc9501;run;这样的程序流程中也有一个隐含循环,程序在数据步内反复循环,直到输入数据集C9501最后一个观测读过。SAS的数据集修改。比如,我们把超过100分的语文成绩都改为100分,就可以用如下程序:datac9501a;setc9501;ifchinese>100thenchinese=100;run;在数据步中可以用KEEP语句或DROP语句指定要保留的变量或要丢弃的变量。比如,datac9501b;Setc9501;keepnameavg;run;可以指定一个条件取出数据集的某些行组成的子集。比如,我们希望取出数学分数90分以上,语文分数100分以上的学生的观测,可以用如下的“子集IF语句”:datac9501c;setc9501;IFmath>=90andchinese>=100;run;注意子集IF语句不同于我们前面所讲的分支语句,它没有THEN部分,只有条件,用于取出满足条件的行子集。多个数据集的纵向合并SET命令将多个结构相同的数据集连接到一起。有四个班的学生的数据集Class1-Class4,每个数据集包含一个班学生的学号、姓名、性别信息,我们希望把这些数据集合并为一个大数据集,可以用如下程序:dataclasses;setclass1class2class3class4;run;要把若干个结构相同的数据集合并为一个数据集,只要在DATA语句中指定要生成的大数据集的名字,然后在数据步中使用SET语句并在SET语句中依次列出各小数据集。数据集的横向合并命令MERGE
两个(或多个)数据集如果包含了同样的一些观测的不同属性(变量),数据集C9501U包含学生的姓名、性别,数据集C9501V包含学生的数学成绩,数据集C9501W包含学生的语文成绩.先按变量ID排序.MERGE语句的数据步把它们左右横向合并到一个数据集NEW:datanew;mergec9501uc9501vc9501w;Byid;run;所以横向合并一般应该采用按关键字ID合并的办法,即先把每个数据集按照相同的、能唯一区分各观测的一个(或几个)变量排序,然后用BY语句和MERGE语句联合使用,这样即使原来观测顺序不一致也可以保证横向合并的结果没有错。例先把C9501数据集横向拆分为包含姓名、性别的数据集C9501X和包含姓名、数学成绩、语文成绩的数据集C9501Y,然后按关键字横向合并:其中的PROCSORT是排序过程,用来把数据集按照某个变量的次序排序(这里是按变量NAME的次序排列,用BY语句指定排序的变量名)。datac9501x;setc9501;keepnamesex;run;datac9501y;setc9501;keepnamemathchinese;run;
proc
sortdata=c9501x;byname;run;proc
sortdata=c9501y;byname;run;datanew;mergec9501xc9501y;byname;run;proc
print;run;
用三个doend语句输入带三个下标的一维变量Rfmr(f=1-4;m=1-3;r=1,2)(两因素+重复)datarockey;/*注:输入Rfmr(f=1-4;m=1-3;r=1,2)(两因素+重复)*//*顺序行标f→列标m→重复r*/dof=1to4;dom=0to12by6;dorep=1to2;inputR@@;output;end;end;end;cards;58.252.656.241.265.360.849.142.854.150.551.648.460.158.370.973.239.240.775.871.558.25148.741.4;/*可以看到输入数据时与表格形式一致*/run;FORMAT语句转换解释变量值dataE28;inputname$sex$agerankx1x2x3;cards;Am1211.13.83.8Bw834.5-5.7./*遗漏数据一定要加符号.*/Cm484-8.2-8.29.7Aw2311.21.21.2Am2622.54524;procprint;run;procformat;/*第一个format给出转换定义*/valueran1=优2=良3=中4=“差”;/*将数值变量定义成文字*/valueagefmtlow-12=儿童13-19=少年20-high=“成年”;/*将数值变量范围定义成文字*/value$name"A"="甲级""B"="乙级""C"="丙级""D"="丁级";/*将文字变量用文字变量取代*/value$sexfmt"m"=0"w"=1;/*将文字变量用数值变量取代*/dataE29;/*数据即E28,注意format转换后数据形式改变*/inputname$sex$agerankx1x2x3;formatrankran.ageagefmt.namename.sexsexfmt.;/*第二个format将转换定义引入数据集,注意变量对:前者是DATA语句中变量对应后者是format中变量(加后缀.),即使变量名不变也要有此变量对*/cards;Am1211.13.83.8Bw834.5-5.7./*遗漏数据一定要加符号.否则SAS会将该行数据自行删除*/Cm484-8.2-8.29.7Aw1611.21.21.2Am2622.54524;procprint;run;PROC过程名[DATA=数据集名][选项];
该过程的专用语句描述;
[VAR变量序列;]
[WHERE条件表达式...;]
[BY变量序列;]Run;过程的格式方括号里的语句表示可选项。选项是可选的,用来规定过程运行的一些设置,如果有多个选项用空格分开。当所有选项均省略,在这时该过程按最通常的情况来处理,即:处理最新建立的SAS数据集。处理所有的变量(或对一个计算过程来说处理全部数值变量)。一次处理整个数据集而不是某个子集。Print过程PRINT过程是将数据集的内容打印出来。例:DATAh61;INPUTname$sex$mathchinese;Cards;Zhoum8996Wuf7788Zhengm6887Wangf8669;Run;Procprint;Run;obsnamesexmathchinese;1Zhoum89962Wuf77883Zhengm68874Wangf8669SAS过程步常用语句一、VAR语句VAR语句在很多过程中用来指定分析变量。在VAR后面给出变量列表:VAR变量名1变量名2…变量名n;例如:在上例中PRINT语句后加VAR。只显示所指定的变量值。varmathchinese;变量名列表可以使用省略的形式,如X1-X3,MATH--CHINESE等。ID语句有些过程(如PRINT、UNIVARIATE)需要输出观测的代号,这一般使用观测的序号。但是,如果数据集中有一个变量可以用来区分观测(如人名、省市名),就可以用ID语句指定这个变量作为观测标识,如:idname;指定用变量NAME的值来标识观测。Procprint;varmathchinese;Idname;Run;namemathchinese;Zhou8996Wu7788Zheng6887Wang8669BY语句格式:BY变量;在使用带有BY语句的过程步之前一般先用SORT过程对数据集排序。如,假设我们已经把C9501数据集按性别排序,则下列PRINT过程可以把男、女生分别列出:分组分析procprintdata=c9501;bysex;run;排序PROCSORTDATA=c9501;
BYsex;RUN;BY语句在过程中一般用来指定一个或几个分组变量,根据这些分组变量值把观测分组,然后对每一组观测分别进行本过程指定的分析。
TheSASSystem23:01Tuesday,September10,20022‘性别’=fOBSNAMEMATHCHINESE1Wu77882Wang8669‘性别’=mOBSNAMEMATHCHINESE3Zhou89964Zheng6887DATAh61;INPUTname$sex$mathchinese;Cards;Zhoum8996Wuf7788Zhengm6887Wangf8669;Run;procsort;bysex;Procprintdata=h61;bysex;
Run;在一些过程(如方差分析)中,使用CLASS语句指定一个或几个分类变量,它实际相当于因变量。而在另一些过程(如MEANS)中,CLASS语句:CLASS语句作用与BY语句类似,可以指定分类变量,把观测按分类变量分类后分别进行分析。使用CLASS时不需要先按分类变量排序。格式:CLASS变量表;四、OUTPUT语句在过程步中经常用OUTPUT语句指定输出结果存放的数据集。不同过程中把输出结果存入数据集的方法各有不同,OUTPUT语句是用得最多的一种。一般格式为:OUTPUTOUT=输出数据集名[关键字=变量名…];其中用OUT=给出了要生成的结果数据集的名字,用“关键字=变量名”的方式指定了输出哪些结果(关键字的例子比如MEANS过程中的MEAN,VAR,STD等等),等号后面的变量名指定了这些结果在输出数据集中叫什么名字。DATAh61;INPUTname$sex$mathchinese;Labelname=‘姓名’sex=‘性别’math=‘数学’chinese=‘语文’;Cards;Zhoum8996Wuf7788Zhengm6887Wangf8669;Run;procmeansdata=h61;varmath;outputout=sasuser.resultrun;procprintdata=sasuser.result;run;
TheSASSystem23:01Tuesday,September10,20028OBS_TYPE__FREQ__STAT_MATH104N4.0000
204MIN68.0000304MAX89.0000404MEAN80.0000504STD9.4868二、MODEL语句MODEL语句在一些统计建模过程中用来指定模型的形式。其一般形式为
MODEL因变量=自变量表/选项;比如model
math=chinese;即用语文成绩预测数学成绩。WEIGHT语句WEIGHT语句指定一个权重变量,在某些允许加权的过程中代表权重,其值与观测对应的方差的倒数成比例。身高人数比重160150.25165250.42180200.33Datah522;Inputheightnumber@@;Cards;1600.251650.421800.33;Procmean;Freqnumber;Run;
00:35Wednesday,September11,2002AnalysisVariable:HEIGHTNMeanStdDevMinimumMaximum3168.70000005.7797059160.0000000180.0000000
八、LABEL语句LABEL语句为变量指定一个标签,很多过程可以使用这样的标签。其格式为LABEL变量名=‘标签’变量名=‘标签’
…;例如
procprintdata=sasuser.c9501
label;
idname;
varmathchinese;
labelname=‘姓名’
math=‘数学成绩’
chinese=‘语文成绩’;
run;结果显示
姓名数学成绩语文成绩
李明9298
张红艺89106
王思明8690
张聪98109
刘颍80110描述统计描述统计学主要用于已知总体数据,求总体的平均、方差,标准差,极差、极值、等指标。做直方图和饼图、线图等图形。表2.2
SAS中可以计算的描述性统计量关键字及其含义关键字所代表的含义n有效数据记录数nmiss缺失数据记录数mean均数std标准差stderr标准误var方差median中位数mode众数cv变异系数max最大值min最小值range全距sum总计sumwgt加权值总计css校正的离均差平方和uss未校正的离均差平方和clm可信限(上下界值)lclm可信限下侧界值uclm可信限上侧界值skew(skewness)偏度kurt(kurtosis)峰度t分布位置假设检验之t统计量probt上述t统计量对应的概率值q1第一四分位数q3第三四分位数qrange四分位数间距p1第一百分位数p5第五百分位数p10第十百分位数p90第九十百分位数p95第九十五百分位数p99第九十九百分位数实现描述性统计功能的几个过程描述性统计指标的计算可以用四个不同的过程来实现,它们分别是means过程、summary过程、univariate过程以及tabulate过程。它们在功能范围和具体的操作方法上存在一定的差别,下面我们大概了解一下它们的异同点。相同点:他们均可计算出均数、标准差、方差、标准误、总和、加权值的总和、最大值、最小值、全距、校正的和未校正的离差平方和、变异系数、样本分布位置的t检验统计量、遗漏数据和有效数据个数等,均可应用by语句将样本分割为若干个更小的样本,以便分别进行分析。不同点:(1)means过程、summary过程、univariate过程可以计算样本的偏度(skewness)和峰度(kurtosis),而tabulate过程不计算这些统计量;(2)univariate过程可以计算出样本的众数(mode),其它三个过程不计算众数;(3)summary过程执行后不会自动给出分析的结果,须引用output语句和print过程来显示分析结果,而其它三个过程则会自动显示分析的结果;(4)univariate过程具有统计制图的功能,其它三个过程则没有;(5)tabulate过程不产生输出资料文件(存储各种输出数据的文件),其它三个均产生输出资料文件。MEAN过程格式:PROCmeanS选择项;
VAR变量表;BY变量表;FREQ变量表;WEIGHT变量表;ID变量表;OUTPUTOUT=数据集;PROCMEANS[DATA=<数据集名>[选项]指定要分析的数据集名及一些选项
[统计量关键字列表]];列出需要的统计量
[VAR<变量名列>;要分析的变量名列
BY<变量名列>;按变量名列分组统计,要求数据集已按变量名列排序
CLASS<变量名列>;按变量名列分组统计,不要求数据集排序
FREQ<变量名>;表明该变量为分析变量的频数
WEIGHT<变量名>;表明分析变量在统计时要按该变量权重
ID<变量名列>;输出时加上该变量作为索引
OUTPUT<OUT=数据集名>指定统计量的输出数据集名关键字=<新变量名列>...];指定统计量对应的新变量名Procmeans语句后的选项主要用来指定所要计算的统计量,默认情况下,Means过程会给出频数、均数、标准差、最大值和最小值等,其余统计量的计算均需要在选项中指定。class语句所指定的分组变量用来进行分组,而by语句所指定的分组变量是用来将数据分为若干个更小的样本,以便SAS分别在各小样本内进行各自独立的处理。freq语句和weight语句分别引导代表记录出现频数和权重系数的数值变量。var语句引导所要进行分析的所有变量的列表,SAS将对var语句所引导的所有变量分别进行描述性统计分析。NMeanStdDevMinimumMaximum1424.64285713.477557620.000000030.0000000Dataaa;Inputage@@;Cards;2522212126252629302022212829Run;Procmeansdata=aa;varage;Run;DATAA;INPUTGRPABCSEX$AREA$;CARDS;1809070MALEA1708070MALEB1706060FEMALEA.907090MALEB.706080FEMALEA2608070MALEA2556570MALEB2908070FEMALEA;PROCSORT;BYGRP;PROCMEANSMEANSTDNMAXMINRANGE;VARABC;IDSEXAREA;BYGRP;OUTPUTOUT=MSDMEAN=MAMBMCSTD=S1-S3N=NA;PROCPRINT;RUN;输出文件名ID后的性别与地区在输出文件MSD中没分组时是第一个观测的值。
报表2.1a描述性的统计分析GPR=.NObsVariableN Minimum Maximum Range Mean StdDev
2A 2 70.000000090.000000020.0000000 80.0000000 14.1421356 B 2 60.000000070.000000010.0000000 65.0000000 7.0710678 C 2 80.000000090.000000010.0000000 85.0000000 7.0710678
GRP=1NObsVariableN Minimum Maximum Range Mean StdDev
3A 370.000000080.000000010.0000000 73.3333333 5.7735027 B 3 60.000000090.000000030.0000000 76.6666667 15.2752523 C 3 60.000000070.000000010.0000000 66.6666667 5.7735027
GRP=2NObsVariableN Minimum Maximum RangeMean StdDev
3A 3 55.000000090.000000035.0000000 68.3333333 18.9296945 B 3 65.000000080.000000015.0000000 75.0000000 8.6602540 C 3 70.000000070.0000000 0 70.0000000 0
报表2.1b描述性的统计分析(将统计值存入MSD档) __ TF A YROG SR PEBR EE EQ M M M S S SNSP XA __ A B C 1 2 3C1.MALEB 0280.000065.0000 85.000014.14217.07117.07107221MALEB 0373.333376.6667 66.66675.773515.27535.77350332MALEB 0368.333375.0000 70.000018.92978.66030.000003OUTPUTOUT=MSDMEAN=MAMBMCSTD=S1-S3N=NA;语句的执行结果DATAA;INPUTPRE1-PRE3POST1-POST3;DIFF1=POST1-PRE1;DIFF2=POST2-PRE2;DIFF3=POST3-PRE3;CARDS;102030153050152240183040203060253565182535203640182830152530;PROCMEANSMEANSTDSTDERRTPRT;VARDIFF1-DIFF3;RUN;STDERR标准误差
T检验均值等于0PRT显著性P值
VariableMeanStdDevStdErrorTProb>|T|
DIFF12.40000003.28633531.46969381.63299320.1778DIFF26.20000005.63027532.51793572.46233460.0695DIFF36.00000008.21583843.67423461.63299320.1778
dataaa;dopinzh='A','B';doi=1to10;inputsuishu;output;end;end;cards;1314151718181921222316161718181818192020;procmeansnmeanmaxminrangevarstdcvmaxdec=4fw=8;varsuishu;bypinzh;run;Datanew;Inputname$sex$score1score2@@;Cards;ZhangM8099LiuF6775FengM8998HongM5072LiangF8889WangF4367FangF8779MaF5656JiangF7778luM7682;procstandardout=new1mean=0std=1;varscore1score2;procprintdata=new1;run;Procmeanstprt;run;变量标准化命令描述统计过程
univariate过程的一般格式procunivariate选项列表;
by变量名称(分组变量);
ID变量名称(分组变量);
freq变量名称(数值变量,用以表示相应记录出现的频数)
weight变量名称(数值变量,用以表示相应记录的权重系数)
histogram变量名称/选项列表
output<out=数据集名><统计量关键字=自定义变量名>
var变量名称(待分析的数值变量);univariate过程和其它两个过程的格式非常相似,相同的语句和选项其含义也相同,所不同的是某些统计量只能在univariate过程中计算(如众数),以及univariate过程中所具有的绘图功能。histogram语句即用来指示SAS对其后所指定的变量绘制直方图,其后的选项用来指示SAS添加不同类型的拟合图形(如正态分布的分布密度曲线)。语句选项列表:DATA=数据集NOPRINT不打印报表PLOT做图NOMAL设为正态数据,并给出检验PCDLDEF=1/2/3/4/5在5种百分数计算方法中选一个缺省为4VARDEF=DF/N/WEIGHT选一种自由度计算方法BOXplot盒式图下限上限Q3Q1Q1中位*1.5(Q3-Q1)1.5(Q3-Q1)最小最大异常Datanew;Inputname$sex$score1score2@@;Cards;ZhangM8099LiuF6775FengM8998HongM5072LiangF8889WangF4367FangF8779MaF5656JiangF7778luM7682procstandardout=new1mean=0std=1;varscore1score2;run;Procunivariatedata=new1plotnormal;varscore1score2;run;DATAA;INPUTIDCNT@@;CARDS;4005204006344205534028544523554008654009654010664011674050684055694112604222614444644422654007664114664056674118704224714312714048724060744023744002754213784125884333994001120;PROCUNIVARIATEFREQNORMALPLOT;VARCNT;IDID;RUN;PROCFREQ过程,用于统计频数和百分数。格式:PROCFREQDATA=数据集名;
TABLES变量名列;
RUN;Procfreqdata=aa;Tablessexage;Run;例:Dataaa;Inputnumsex$age@@;Cards;101F23102M25107M22110F21109F21111M26;Run;Dataaa;Inputnumsex$age@@;Cards;101F23102M25107M22110F21109F21111M26;Run;Procfreqdata=aa;Tablessex*age;Run;两个变量交叉频数统计
TABLEOFSEXBYAGESEXAGEFrequencyPercentRowPctColPct2122232526TotalF20100333.330.0016.670.000.0050.0066.670.0033.330.000.00100.000.00100.000.000.00M0101130.0016.670.0016.6716.6750.000.0033.330.0033.3333.330.00100.000.00100.00100.00Total21111633.3316.6716.6716.6716.67100.00Format格式Procformat选择项;
Value格式名范围=被输出值;
Invalue格式名范围=被输入值;作用:定义一种输出格式,可把某变量的值按所定义的格式输出。Dataaa;Inputage@@;Cards;2522212126252629302022212829Run;procformat;valueagegrplow-<21='--21'21-<25='22--25'25-<28='26--28'28-high='29';run;Procfreqdata=aa;Tablesage;formatageagegrp.;Run;
CumulativeCumulativeAGEFrequencyPercentFrequencyPercent--2117.117.122--25535.7642.926--28428.61071.429428.614100.0运行结果统计量样本容量N均值MEAN标准差STD方差VAR变异系数CV偏度SKEWNSS峰度KURTOSIS总和SUM标准误未校正平方和校正平方和中位数MEDIAN众数MODEdatasale;inputname$salesregion$type$@@;cards;wanhua9664eastsmliming22969eastsmwanying27253eastsmzhangxi86432eastcwuying99210eastcliulan38928westczhaohua21531westsmliuxiao79345westcmali18523westsmdinghi32915westsmyuzhen42109westsmandong94320westcchenyi25718southsmlimei64700southcchenmin27634southsmlili32719northsmwanzhi38712northsmyanghui97214northcrun;procprint;run;procfreq;tablestype*region;run;procsort;bytype;procmeans;bytype;run;
tabulate过程的一般格式proctabulate选项列表;
by变量名称(分组变量);
class变量名称(分组变量);
freq变量名称(数值变量,用以表示相应记录出现的频数)
weight变量名称(数值变量,用以表示相应记录的权重系数)
table<<页变量表达式>,<行变量表达式>,<列变量表达式>></表格选项>
var变量名称(待分析的数值变量,统计量列入相应的表单元格);run;tabulate过程和上述几个过程的格式也基本相似,相同的语句和选项也代表相同的含义。最大的不同也是tabulate过程中最为重要的是table语句,他用来定义表格的具体格式以及表格中所要包括的统计量。TABLE语句是TABULATE过程的核心。可以定义三个表格表达式。这三个表达式分别表达了输出表格的页、行列的有关规定。表达式的运算符:“*”表示包含,空格表示并列,()表示分组,“,”表示相邻两个向量的分界<>表示分母项,等号=表示解释或输出格式。例:Datanew;Inputname$sex$score1score2@@;Cards;ZhangM8099LiuF6775FengM8998HongM5072LiangF8889WangF4367FangF8779MaF5656JiangF7778luM7682;procprint;Proctabulateformchar='|-+-+|||+-+';Classsex;Varscore1;Tablesexscore1*(Nmeanstd);Run;
++|SEX||||||F|M|SCORE1||||||N|N|N|MEAN|STD||||||||6.00|4.00|10.00|71.30|16.59|++运行结果:如果改成Tablesex*score1*(Nmeanstd);结果如何?
++|SEX||||F|M|||||SCORE1|SCORE1|||||N|MEAN|STD|N|MEAN|STD|||||||||6.00|69.67|17.86|4.00|73.75|16.74|++若改为:Tablesex*score1;若改为Varscore1score2;Tablesex*(score1score2);Varscore1score2;Tablesex*(score1*(nmean)score2*(nmean));Ta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林省辉南县2026年中考备考冲刺阶段(查缺补漏)化学试题含解析
- 2026年多参数检测仪场景渠道厂商三级筛选逻辑
- 2026年青海省海南州重点中学初三化学试题三模卷含解析
- 2026年江苏省南京市栖霞区第二学期初三期末考试生物试题试卷含解析
- 河南省信阳市商城县市级名校2025-2026学年中考模拟试卷(化学试题理)试卷含解析
- 2026年长三角科技创新共同体建设与“两心同创”探路实践
- 2026年工厂用能结构绿色低碳转型源头减碳方案
- 2026年制造强国战略下服务型制造指数构建与区域竞争力排名
- 2025年临床执业测试卷
- 政府机构行政人员应聘全解及注意事项
- 人流室感染控制措施
- 风电项目安全生产实施计划书
- 皮肤型红斑狼疮诊疗指南(2025年)
- 融媒体应聘考试题及答案
- 2025年西安医专选拔面试题库及答案
- 鄂科版二年级全册心理健康教育教案
- 《SBT 11204-2017衣物清洗服务规范》(2026年)实施指南
- 老年2型糖尿病合并认知障碍照护方案
- 高校交通安全课件
- 雨课堂在线学堂《医学实验技术与方法新进展》单元考核测试答案
- 雨课堂在线学堂《文化差异与跨文化交际》单元考核测试答案
评论
0/150
提交评论