1、第6章 SAS使用入门,SAS概述,SAS含义:Statistical Analysis System SAS是在美国使用的最为广泛的三大著名统计分析软件SAS SPSS和SYSTAT)之一 SAS是集大型数据管理、统计分析、报表图形、信息系统开发等多种强大功能于一体的大型软件系统,在农业、生物、医学、经济管理、社会学、工程等多个行业有着广泛的应用。,SAS的广泛应用,电信(运用SAS软件产品进行网络运营分析和管理) 金融(SAS帮我们发现有竞争力的商机) 保险 制造(SAS软件帮助日本富士通集团了解客户的需求,上海宝钢利用SAS软件改善产品质量和运输过程) 证券 公共事业(香港选择SAS来做
2、2001年的人口普查),SAS软件发展历程,1966年开始研制 1976年商品化 1985年SAS PC微机版本 1987年DOS下的SAS6.03版(6.04版) 推出WINDOWS下运行,SAS6.11版,SAS6.12版,SAS8.0版,SAS8.2版,SAS9.0版,SAS9.1版,SAS软件适用人员,具有不同水平与经验的用户 初学者可以较快掌握其基本操作 熟练者可用于完成各种复杂的数据处理(科研工作者和统计学家),统计分析,常用生物统计分析 多变数分析 试验设计 次数资料的测验 非参数测验,常用生物统计分析,描述性统计 统计推断 方差分析 线性相关和回归分析 协方差分析 非线性回归分
3、析,多变数分析,多元方差分析 主成份分析 因子分析 聚类分析 典范相关分析,6.1命令及窗口环境,6.1.1 SAS系统的启动与退出 6.1.2 SAS系统窗口介绍,启动SAS之后,出现下页的运行界面,称为SAS应用工作空间(SAS application workspace),简称为SAS AWS。 SAS具有三个最重要的子窗口:程序编辑窗口(Editor),运行记录窗口(Log)和输出窗口(Output),程序编辑窗口(Editor):用于编辑SAS源程序文件,支持全窗口编辑,即点即输功能,支持复制、剪切、粘贴等常规操作,具有智能编辑功能。,F5,F6,F7,Log(运行记录窗口):用于显
4、示和记录SAS程序的运行情况,说明程序运行成功或存在的错误,用红色字符显示错误信息,绿色显示警告信息。,Output(输出记录窗口):可分页显示SAS程序运行所产生的文本型输出结果(图形通过Graphics窗口显示),文本结果报错为.lst文件,图形文件可以保存为各种图形格式的文件。,Explorer窗口:显示SAS库及其SAS数据集,Results窗口:用于显示程序运行成功时程序输出结果的目录,可以方便的查看运行结果。,SAS基本概念,SAS数据集:可以看作由若干行和若干列组成的表格,数据集的每一行称为一个观测,每一列称作一个变量。,SAS数据库:多个SAS文件放在一起,称为一个SAS数据库
5、(Library)。有三个预定义的数据库,WORK,SASUSER,SASHELP,其中WORK用于存放临时文件,叫做临时库,SASUSER库保存与用户个人设置有关的文件,是永久的,SASHELP库保存与SAS帮助系统、例子有关的文件,是永久的。,SAS通过libname函数将库名和子目录联系起来,如: libname mylib “E:sas example”,临时数据集和永久数据集使用时的区别:临时数据集可以用单水平名,也可以用work.水平名,而永久数据集必须用库名.数据集名表示。 生成永久数据集的方法: libname mylib “E:sas example”; data mylib
6、.数据集名; ,6.2 SAS程序设计基本常识,6.2.1 基本语法和运行方式,1、SAS程序的基本语法规定如下: (1)SAS程序中除了赋值、表达式、注释和空语句之外,所有其他语句都要以SAS命令作为起始单词,且不区分大小写。 (2)程序中使用的所有计算对象(变量、数据集、逻辑库)都必须按SAS标识符定义规定命名。 (3)标示符命名规则为:1)以字母或下划线开头;2)由字母、数字、下划线构成;3)应用中不区分大小写英文字母。 (4)每个SAS语句都必须以西文状态下的分号;作为结束符。,(5) 每行数据的行尾不能有;,但是数据行结束后的;必须独占一行。 (6)行保持标识符和,其中表示cards
7、语句中的数据一行为一条记录,用多条input语句输入,表示cards语句中的数据为多条记录,用一条input语句读入。 (7)程序的注释方式为/* 注释内容*/,可以出现在任何允许加入空格的位置 (8)SAS程序编辑完成后,通过按F8或者工具栏的小人图标运行,也可以通过鼠标选程序的某一部分运行。 (9)保存某个窗口前先进行激活操作,2、SAS的变量基本类型 (1)数值型,如20,-7.5,3E-10; (2)字符型,变量名后必须使用$说明符;,其他的数据类型中,日期、时间等变量存为数值型,可以使任意的整数,定点实数、浮点实数等,一般使用8个字节。字符型变量默认的长度为8个字符,当然也可以通过l
8、ength语句指定其长度。Length 字符型变量名 $ 长度;,一个SAS程序示例:,6.2.2 运算符,SAS运算符包括算术运算符、关系运算符以及逻辑运算符,1、算术运算符包括+-*/和*(乘方),x3可写为x*3,2、关系运算符用于处理常量、变量、表达式值之间的大小、相等或包含关系,是双目运算符,格式为:运算对象1 运算符 运算对象2 关系运算符有: 符号表示:= = = = 字符表示 EQ NE GT LT GE LE IN,IN是SAS一个特殊的比较运算符,用来检查某个变量的取值是否在一个给定列表中,如: City IN(beijing, tianjing, shanghai, ch
9、ongqing),3、逻辑运算符用来描述多个真假条件之间的关系,构成比较复杂的组合条件,主要有& And,| Or, Not三种运算符,例如 (salary=1000) and (salary=1000) and (salary2000),4、其他运算符,连接两个字符串操作|,取两个运算值中比较大的一个,取两个运算符中较小的一个,6.2.3 赋值语句和循环语句,1、赋值语句,变量名=表达式,2、循环语句,三种循环语句,do, do while, do until,1)do循环,语法格式为: do 计数变量=起始值 to 结束值 by 步长;循环体; end;,计数变量=计数变量+步长,如果循环
10、步长为1,则可以省略 by 步长。,例:,2) do while循环,语法格式为: do while(循环继续条件);循环体; end;,3) do until循环,语法格式为: do until(循环退出条件);循环体语句; end;,6.2.4 输出语句,SAS数据步的输出一般是数据集,用赋值语句计算的结果会自动写入数据集中。用于输出的语句为put,格式为: Put 变量名1(字符串1),变量名2(字符串2),变量名n(字符串n),注:Put后面不可以是数值常量或表达式,并且各项之间要用空格分开。,例:data;x=0.5;y=sin(x);put ”sin(” x ”)=” y;run;
11、 Put x= y=;(指定带有变量名输出的结果) Put x 10-20 .6 y 30-40 .6;指定具体列的位置和小数位数; Put x 20.8 y 20.8;指定输出的宽度和精度; Put i ;使结果显示在同一行,6.2.5 分支语句,1、单分支单操作结构:if 条件 then 语句; 2、单分支多操作结构:if 条件 then do 语句1;语句n; end; 3、双分支结构: if 条件 then 语句; else 语句; 4、多分支结构: Select(选择表达式); When(值列表) 语句; When(值列表) 语句; Otherwise 语句; End;,Select
12、; When(条件) 语句; When(条件) 语句; otherwise 语句; End;,6.2.6 数组,SAS数组中每个元素都有自己的变量。,(1)数值型数组 格式说明为: Array 数组名(维数说明) 数组元素名列表(初始值表); 例:array test(3) Math Chinese English (0,0,0); Array sales(95:97) yr95-yr97;利用下标界说明维数 Array test(*) Math Chinese English (0,0,0);元素个数决定维数 Array table(2,2) x11 x12 x21 x22; 二维数组 (2
13、)字符型数组 Array 数组名(维数说明) $元素长度说明 数组元素名列表(初始值表),6.2.7 常用函数,6.3 SAS程序语言结构,SAS对数据的处理分为两大步骤:数据步和过程步。数据步用来读入SAS建立SAS数据集,每一个数据步都是以data语句开始,以run语句结束。过程步用来调用SAS的模块,处理和分析数据集中的数据,每一过程步都以proc语句开始,以run语句结束。,6.3.1 SAS数据步结构,1、SAS语言的自编程计算功能主要在数据步实现,一个SAS数据步相当于一个单独运行的程序。数据步也称为data步,语法结构为:,data 数据集名; Input 变量名1$ 变量名2$
14、 变量名n$; 其他数据步语句; cards; 数据行 ; 其他数据步语句; run;,说明: (1)变量名和变量名,数据和数据之间至少要空一个空格。(2)变量名不能与SAS命令相同。,2、SAS数据步的运行机制,说明: SAS数据步如果有数据输入,比如用input, set, merge, update, modify等语句读入数据,则数据步中隐含了一个循环,即数据步程序执行到最后一个语句后,会返回到数据步内的第一个可执行语句开始继续执行,知道数据语句标志才停止执行数据步,并把读入的各个观测写入到data语句中指定的数据集。,6.3.2 SAS过程步结构,SAS过程步的语法结构为:,proc
15、 过程名 data=输入数据集 选项;过程语句 选项;过程语句 选项; run;,说明: (1)若data选项缺省,则系统默认为最近生成的数据集; (2)过程步语句一般以某个关键字开头,对应语句需要的选择项要写在斜线/后面,SAS过程步常用命令:,说明: (1)使用by语句分组时必须首先要用sort命令对数据集按照分类变量排序。 (2)利用tabulate过程可以制作复杂的表格,格式为:,Proc tabulate data=数据集名;class 分类变量;var 分析变量;table 页数说明,行维说明,列维说明/选项,区间变量的默认统计量为总和,分类变量的默认统计量为频数,计算其他统计量可
16、用“变量名*统计量名”的形式,统计量有:n,nmiss,mean,std,min,max,range,sum,uss,css,stderr,cv,t等等,keylabel指定统计量的标签,label指定变量的标签。,几个实例:,6.3.3 常用统计量及符号,6.4 SAS程序作图,6.4.1 Plot绘制图形的语句格式:,Proc plot选择项1; By 变量名; Plot 表达式/选择项2;,选择项1可能的表达式为: (1)data=数据集名,用来说明要做plot的数据集名,缺省则指定最新建立数据集。 (2)vtoh=数值,用来指定Plot过程输出时纵横坐标轴的比例 Vpercent=数值
17、,用来指定plot过程产生图表长度占一页长度的纵向百分比的分子,若在数值后空格再加0,则表示此页只输出一个图。,Hpercent=数值,用来指定plot过程产生图表宽度占一行宽度的横向百分比的分子。 选择项2的可能取值: (1)vaxis=数值 指定纵轴上的刻度标记; (2)haxis=数值 指定横轴上的刻度标记; (3)Overlay 指定将所有的图组合输出,相互重叠覆盖。,Symbol是一个全程语句,指定绘图用的连线方式、颜色等,i=join表示绘制三点见的连线,还可以是:i=rl,绘制线性回归直线,i=rq,二次曲线,i=rc三次曲线。,6.4.2 gplot绘制图形,对于连续曲线图,需
18、要用gplot函数来绘制。,6.4.3 g3d绘制图形,g3d用来绘制三维曲面图,6.4.4 gchart 绘制图形,gchart的功能是做频率直方图、扇面图(饼图)和三维直方图,vbar:纵向 pct:表示图高为频率,6.4.5 chart 绘制图形,Chart过程可以用来绘制常用的统计图形,包括直方图、块形图、饼形图和星形图等,命令和前面几个过程一致,只是表达形式有区别。,说明:图中每个条代表一个城市的支出情况: Type=sum说明图中的条代表总和,sumvar=money表示求和变量; Subgroup=item表示每个条中要标出4种支出项目格子的支出情况,MEANS过程 Means过
19、程提供单个或多个变量的简单描述。和Univariate过程相比,它更倾向于描述已经明确样本所在总体符合正态分布的变量,因此它不提供百分位数,但可以提供95%可信区间。同时在多个变量输出时,它的输出格式紧凑,便于阅读。,PROC MEANS DATA= 选项 指定要分析的数据集名及一些选项 统计量关键字列表 ; 列出需要的统计量 VAR ; 要分析的变量名列 BY ; 按变量分组统计,数据集已按变量名列排序 CLASS ; 按变量名列分组统计,不要求数据集排序 FREQ ; 表明该变量为分析变量的频数 WEIGHT ; 表明分析变量在统计时要按该变量权重 ID ; 输出时加上该变量作为索引 OU
20、TPUT 指定统计量的输出数据集名 关键字= . ;指定统计量对应的新变量名 【选项】 Means过程常用的选项如下: NOPRINT 禁止统计报告在OUTPUT视窗中输出 MAXDEC=n 给出列表输出的最大小数位数,缺省值为2 MEANS过程中常用的统计量关键字有: 基本统计量 N MEAN STD CV SUM VAR RANG MIN MAX 与假设检验有关的统计量 STDERR(标准误) T PRT(与t对应的p值) LCLM(可信区间下限) UCLM(可信区间上限),菜单操作进行简单统计分析,利用SAS/INSIGHT进行简单分析 score数据集为例进行窗口操作分析。具体操作步骤
21、如下:,利用SAS/ASSIST进行简单分析 Summary Statistics(与MEANS过程相同),总结: Means 过程用于同一对象的不同处理方法间的方法差异性的检验。 首先假设方法间没有区别,去找无区别的概率。 若概率值0.05,则假设成立,方法间无区别。 若概率值0.05,则假设不成立,方法间有区别。,univariate过程,UNIVARIATE过程除了可以提供MEANS和SUMMARY所提供了基本统计数外,还提供位置特征数(如Med中位数,Mode众数)和偏度系数(Skewness)、峰度系数(Kurtosis)这些变异数。此外它还可通过FREQ选项统计变量次数及频率,通过PLOT选项给出茎叶图(Stem Leaf)和正态概率密度图(Normal Probability Plot),通过NORMAL选项进行变数正态性检验(给出W:Normal值)。,注意:UNIVARIATE过程中不能指定基本统计数(如N,MEAN,MODE,SKEWNESS,MEDIUM等),如果指定则程序将出错,这一点与MEANS和SUMMARY过程不同。,