2.14k likes | 2.47k Views
SAS S tatistical A nalysis S ystem 程 振 源 www.statistics.mentors.cn. 学习目的与要求. 1.了解 SAS 系统的功能特点; 2.熟悉 SAS 系统的操作环境; 3.掌握 SAS 系统的有关概念; 4.学会使用 DATA 步 建立数据集,能对现有数据集进行基本操作; 5.学会使用 PROC 步 的基本过程对数据集进行常规的统计分析; 6.学会自己查看系统帮助; 7.能够利用 SAS 系统处理常见的经济数据并能根据所学的统计知识对计算结果进行解释. 第一章 SAS 概述.
E N D
SASStatistical Analysis System程 振 源www.statistics.mentors.cn
学习目的与要求 • 1.了解SAS系统的功能特点; • 2.熟悉SAS系统的操作环境; • 3.掌握SAS系统的有关概念; • 4.学会使用DATA步建立数据集,能对现有数据集进行基本操作; • 5.学会使用PROC步的基本过程对数据集进行常规的统计分析; • 6.学会自己查看系统帮助; • 7.能够利用SAS系统处理常见的经济数据并能根据所学的统计知识对计算结果进行解释
第一章 SAS概述 SAS系统是世界领先的信息系统,它由最初的用于统计分析经不断发展和完善而成为大型集成应用软件系统,具有完备的数据存取、管理、分析和显示功能。在数据处理和统计分析领域,SAS系统被誉为国际上的标准软件系统。 SAS系统于1966年由美国North Carolina州立大学开始研制,1976年成立美国SAS软件研究所公司,并开始对SAS系统进行维护、开发、销售和培训等工作。1985年推出了SAS/PC(6.02)版本。自SAS系统推出以来,它的版本更新很快,功能也不断增加,1998年推出6.12版,现在已有9.1版面世。
美国SAS软件研究所自创建以来,就以SAS系统的卓越功能和可靠的技术支持著称于世,逐步发展成为全球最大的独立软件开发商之一。目前SAS软件研究所在世界六大洲的60个国家设有分公司及分支机构。世界上有120个国家和地区的30000多个机构在使用SAS系统,直接用户超过三百万。SAS系统在世界范围内被广泛地应用于政府、科研、教育、生产和商业等不同领域,发挥着积极的作用。美国SAS软件研究所自创建以来,就以SAS系统的卓越功能和可靠的技术支持著称于世,逐步发展成为全球最大的独立软件开发商之一。目前SAS软件研究所在世界六大洲的60个国家设有分公司及分支机构。世界上有120个国家和地区的30000多个机构在使用SAS系统,直接用户超过三百万。SAS系统在世界范围内被广泛地应用于政府、科研、教育、生产和商业等不同领域,发挥着积极的作用。
§1 SAS系统的特点 • SAS系统: SAS系统是一个模块化的集成软件系统。所谓软件系统就是一组在一起作业的计算机程序。使用SAS系统的用户可以根据自己的需要,随时作出明智的选择。SAS系统是一种模块化的组合软件系统。基本部分是Base SAS模块,此外还有用于统计分析的SAS/STAT模块;用于高级绘图的SAS/GRAPH模块;用于矩阵运算的SAS/IML模块;用于运筹学和线性规划的SAS/OR模块;用于经济预测和时间序列分析的SAS/ETS模块等。 • SAS系统的特点: • 操作简便:SAS的宗旨是为所有需要进行数据处理、数据分析的非计算机专业人员提供一种易学易用、完
整可靠的软件系统。用户把要解决的问题用SAS语言(近乎自然英语的非过程语言)表达出来,组成SAS程序,提交给SAS系统就可以解决所提出的问题。执行情况和输出结果都在屏幕上显示出来。整可靠的软件系统。用户把要解决的问题用SAS语言(近乎自然英语的非过程语言)表达出来,组成SAS程序,提交给SAS系统就可以解决所提出的问题。执行情况和输出结果都在屏幕上显示出来。 • SAS系统将数据管理与统计分析溶为一体: SAS程序的结构由两个基本步骤任意组合而成。DATA步用于对数据的加工处理;PROC步用于分析数据和编写报告。SAS系统克服了通常软件或偏重于数据管理功能或偏重于统计分析的弊病,把数据管理与统计分析有机地结合在一起。 • 适用性强、应用面广: SAS系统适用于任何经验的人员(初学者或有经验的用户);适用于任何类型的数据;适用于几乎是任何应用的需要;适用于任何计算机环境;适用于今日与未来(扩展性能强)。
§2 Base SAS模块简介 Base SAS模块是SAS系统的核心。主要功能是数据管理和数据加工处理,并有报表生成和描述统计的功能。Base SAS模块可以单独使用,也可以同其它模块产品一起组成一个用户化的SAS系统。Base SAS模块提供以下几方面的功能: • 、数据管理功能 • 信息存贮和检索: SAS系统可用任何格式读入数据,然后把数据组成SAS数据集;并可用文件操作管理方法把不同数据集的数据组合在一起,供SAS过程分析处理
数据修改与程序设计: SAS系统为用户提供完备的SAS语句和函数用于数据加工处理。有些语句用于执行标准操作,如建立新变量、累加求和及修改错误等;另外还提供了DO/END、IF-THEN/ELSE等控制语句,构成一套完整的语言系统。由于Base SAS模块具有非常强的数据管理功能,所以许多人亦把它作为数据库管理系统。 • 文件操作: 数据分析常常需要从几个数据集中抽取一些变量和观测进行组合。Base SAS模块中有用于对数据进行编辑、整理、连接、合并及更新的功能,还能同时处理多个输入文件,或者对一次输入的数据能够生成几种报表等。 二 、基础统计计算功能 • Base SAS模块中有一些基本过程和SAS函数能够完成基础统计计算,包括:
计算简单的描述统计量,如均值、标准差、极差、总和、平方和、偏度、峰度、分位数和相关系数等;计算简单的描述统计量,如均值、标准差、极差、总和、平方和、偏度、峰度、分位数和相关系数等; • 对数据进行标准化、求秩及有关统计量; • 生成并分析列联表; • SAS函数可用于计算概率分布函数、分位数、样本统计量及产生随机数。 • 、报表生成和图形显示功能 • Base SAS模块输出数据与读入数据时同样可以采用任何格式。除了SAS过程产生的固定格式的报表外,用户可根据自己的需要来设计报表的输出格式,包括输出文件到磁盘上。 • SAS的一些基本过程可绘制水平的或垂直的直方图、饼图、块图等,还可以画散点图、曲线图、层次图、时间序列图等。
§3 SAS的窗口环境 SAS窗口可分为两大类:基本窗口和其它窗口。 一、基本窗口:包括PROGRAM EDITOR窗口(程序编辑窗,缩写为PGM)、LOG窗口(登录窗或日志窗)和OUTPUT(输出窗)三个窗口。各窗口的主要功能如下:
PGM • 窗口 • 提交SAS语句; • 拷贝一个外部文件到PGM输入和编辑文本,包括SAS语句; • 窗口,或拷贝窗口内容到外部文件上; OUTPUT 窗口 包含由大多数SAS过程产生的输出。在SAS会话期间相继产生的输出都附加到OUTPUT窗口内容中。 • LOG • 窗口 • 包含SAS日志,主要内容有: • 在当前会话中发布的SAS语句; • 注释、警告和出错信息; • DATA步应用的一些结果。
二、其它窗口: 除了三个基本窗口以外,显示管理包含很多其它窗口。如资源管理器窗口和结果窗口。各个窗口均可在任何一个窗口的命令行键入相应的命令来打开。
第二章 SAS编程基础 • 同其它计算机语言一样,SAS语言也有它自己的语句和句法:关键词和连结关键词与其它辅助信息的规则。用户使用SAS语言来定义数据和规定对数据怎样做统计分析。由SAS语句组成的序列称为SAS程序。 • 1 SAS语句 一 、SAS语句的定义 • 我们先来看一个实例: • 某小学10名9岁男生3个项目智力测验得分资料如下,试计算这10名男生各项目的平均得分。
在这个例子中,我们看到: • data, input, cards, proc, var, • run是关键词; • zhili是数据集名; • name, x1, x2, x3是变量名; • means是过程名; • data=是means语句中的选项; • $是特殊字符。 • Data zhili; • input name $ x1 x2 x3; • cards; • Zhang 14 13 28 • Li 10 14 15 • Wang 11 12 19 • Zhao 7 7 7 • Wu 13 12 24 • Liu 19 14 22 • Zhong 20 16 26 • Yang 9 10 14 • Zeng 9 8 25 • He 9 9 12 • ; • Proc means data=zhili; • var x1 x2 x3; • run; • 现在,我们给出SAS语句的定义: • SAS语句是由关键词、SAS名、特殊字符或运算符组成并以分号结尾的字符串。
二 、几个概念 1.SAS关键词 位于句首的用以说明语句类型和功能的单词称为SAS语句的关键词。它是SAS语句的主要成份。 2.SAS名 • SAS语句中出现的SAS名有很多种类,如变量名、SAS数据集名、过程名等。 • SAS名最多可由1至8个字符(不能用汉字)组成; • 第一个字符必须是字母或下划线,其余的字符可以是字母、数字或下划线; • SAS名中不能出现空格、特殊字符(如$、@、#等); • SAS系统保留了一些名字作为特殊的变量名,这些变量名的开头和结尾都用特殊字符下划线表示(如_N_、_ERROR_等)。 3.特殊字符和运算符 • 特殊字符包括:
圆括号( )、单引号‘‘、双引号““、美圆符号$、列指针控制符@、行指针控制符#、冒号:、句号.、分号;等; • 运算符包括: • 加号+、减号—、乘号*、除号/、乘方**等; • 等号=、不等号^=、小于号<、大于号>、小于等于号<=、大于等于号>=等。 三 、语句格式 • SAS语句的基本格式是: • KEYWORD Parameter … [item | item | item ] options; • 关键词 参数 选项1 选项2 选项3 选择值 • 关键词:用以说明语句类型和功能的单词; • 参数:要求用户提供的信息。不用括号,不是任选项。例如: input x y z;
其中:input 是关键词,它说明要把数据提供给哪些变量。后面跟的变量名x、y、z 都是参数,即要求用户提供的信息。 • …表示参数可以不止一个。 • [选项1 | 选项2 | 选项3 ]中的竖线|用来分隔各选择项,表示其中任选一个;方括号内的信息是可以选择的。 • 例如:proc means data=store maxdec=3; • 其中:proc是语句的关键词,它说明本语句是过程语句;means是过程名,它说明要调用的过程名称;data=、maxdec=都是选项的关键词,等号后面是用户提供的信息。 • 2 SAS程序 • 一系列SAS语句组成一段SAS程序。SAS程序中的语句可分为两类:DATA步和PROC步。这两类步骤是所有SAS程序的模块。通常用DATA步产生SAS数据集
而用PROC步对SAS数据集内的数据进行分析处理并输出结果。一段SAS程序可由一个DATA步或一个PROC步组成;或者由DATA步和PROC步两部分组成;也可由多个DTAT步和多个PROC步组成。而用PROC步对SAS数据集内的数据进行分析处理并输出结果。一段SAS程序可由一个DATA步或一个PROC步组成;或者由DATA步和PROC步两部分组成;也可由多个DTAT步和多个PROC步组成。 一 、DATA STEP(数据步) • DATA步包括:创建一个或几个新的SAS数据集的语句和创建数据集所必须的运算操作语句。每个DATA步以DATA语句开头,可以包含任意多个SAS程序语句。一个DATA步的基本语句有: • DATA语句:表示创建SAS数据集,同时给数据集命名; • INPUT语句:对SAS数据集中的变量进行描述; • CARDS语句:用来指示数据行的开始; • ;语句(空语句):表示数据行的结束。 • 例如:
Data zhili; • input name $ x1 x2 x3; • cards; • Zhang 14 13 28 • Li 10 14 15 • Wang 11 12 19 • Zhao 7 7 7 • Wu 13 12 24 • Liu 19 14 22 • Zhong 20 16 26 • Yang 9 10 14 • Zeng 9 8 25 • He 9 9 12 • ;
二 、PROC STEP(过程步) • PROC步要求SAS系统从过程库中调出一个过程模块并执行它。PROC步以PROC语句开始,可以包含多个相应的SAS语句。 • 例如: • Proc means data=zhili; • var x1 x2 x3; • 注意:一个完整的SAS程序必须以run语句结尾方能提 • 交运行。如: • Proc means data=zhili; • var x1 x2 x3; • Run;
3 编写SAS程序 一 、SAS程序的例子 • Data zhili; • input name $ x1 x2 x3; • cards; • Zhang 14 13 28 • Li 10 14 15 • Wang 11 12 19 • Zhao 7 7 7 • Wu 13 12 24 • Liu 19 14 22 • Zhong 20 16 26 • Yang 9 10 14 • Zeng 9 8 25 • He 9 9 12 • ;
下面的PROC步要求SAS对刚创建的数据集按变量name值的字母顺序排序;然后显示排序后的数据;并对数据集中的所有数值变量计算均值等简单描述性统计量。下面的PROC步要求SAS对刚创建的数据集按变量name值的字母顺序排序;然后显示排序后的数据;并对数据集中的所有数值变量计算均值等简单描述性统计量。 • Proc sort; • by name; • proc print; • title ‘9岁男生智力测验数据’; • proc means; • run; • 以上一个DATA步和三个PROC步就构成了一个SAS程序。 这个程序运行后的结果如下:
二、 SAS程序的书写方法 1. 书写格式 • SAS语句可以从一行上的任意位置开始; • 几个SAS语句可以写在同一行上; • 一个语句也可以写成几行,只要语句中的单词不被断开即可; • 在一个语句中各项之间至少要有一个空格; • 一些特殊符号(如等号=,加号+)可以占据空格的位置,如: • total=a+10; 与 • total= a + 10 ; • 是等价的; • SAS语句用大写字母、小写字母或大、小写混合书写均可。
2. 注释(屏蔽符) • SAS语句中有一个注释语句,形式为: • /*注释内容*/ • 凡是空格可以出现的地方,以上形式的注释语句也能出现。例如: • proc sort /*对数据集排序*/; • 就是一个合法的语句。 • 需要注意的是,注释符/*…*/内的字符在程序运行中不被执行。因此,注释符又称为屏蔽符。
3.变量的缩写 • 变量按它们第一次出现的次序被定义。例如前面的例子的input语句中,name被定义为第一个变量,接着是x1,x2,x3。 • 在一些SAS语句中,需要对变量进行集中处理,SAS采用如下的方式来解决这个问题: • 形如x1,x2,x3...xn的带序号的变量名,缩写为x1-xn; • 形如x1,a,b,x2,x3,d的不带序号的变量名,缩写为x1--d; • 特殊的SAS变量,_numeric_表示所有数值变量; • _character_表示所有字符变量; • _all_表示所有变量。
请看上面数据集形式,这些变量在数据集中的位置是:请看上面数据集形式,这些变量在数据集中的位置是: no x1 age x2 x3 x4 x5 下面以VAR语句为例说明SAS变量缩写引用中-与--区别: VAR x1 x2 x3 x4 x5; VAR x1-x5; 表示只引用变量x1 x2 x3 x4 x5。 VAR x1--x5; VAR x1 age x2 x3 x4 x5; 表示引用在位置上从x1到x5之间的 所有变量x1 age x2 x3 x4 x5。
4 SAS程序的执行与输出 一、 程序的执行 • 当我们在PGM窗口将程序输入完毕,检查修改后就可以提交给SAS系统执行。在LOG窗口显示程序执行中记录的信息,它包括:执行哪个语句;生成的数据集中变量个数及观测个数是多少;每一步花费的时间及出错信息等。 二、 SAS过程的输出 • 前例提交执行以后,DATA步产生一个名为zhili的SAS数据集;后面的三个PROC步产生的结果输出到OUTPUT窗口(例如前例的输出)。
§5 SAS表达式 表达式是由一系列运算符和运算对象形成的一个指令集,它被执行后产生一个目标值。运算对象是变量和常数;算符是特殊的运算符、函数和括号。 表达式分为简单表达式和复合表达式。下列式子都是表达式。 • X+1 3 LOG(X) P/A*100 AGE<100 • 1-EXP(N/(N-1)) A=B=C STATE=‘NC’ • 在DATA步中,为了对变量作变换,建立新变量、条件处理、计算新数值及指定新数值,都需要使用表达式编写程序语句。
一、SAS常数 SAS常数用来表示固定的值,它或者是一个数字,或者是用引号引起来的字符串、或者是其它特殊记号。 SAS使用的常数有五种类型:数值常数、字符常数、日期、时间和时期时间常数、十六进制数值常数、十六进制字符常数,我们主要介绍数值常数和字符常数。
1. 数值常数: 一个数值常数就是出现在SAS语句里的数字。很多数值常数完全像通常的数据值一样书写。数值常数可以包括小数点,负号和E记号。例如: 1 -5 1.23 1.2E23 0.1 0.5E-10 用E表示法时,如2E4,它表示 2*104,或者20000。 • 缺失值用小数点来(.)表示。
2.字符常数: 字符常数是由单引号括起来的1~200个字符组成的.例如,在下面的语句中: if name=‘TOM’ then do; ‘TOM’就是一个字符常数。 缺失的字符常数值用空格表示
3、日期时间常数 (1)日期型: ’01Jan2005’d (2)时间型: ’12:30:21’t (3)日期时间型: ’01Jan2005:12:30:21’dt SAS系统以“0”代表1960年1月1日0时,其它日期在SAS系统中存为与该日期相差的天数。 如:1960年1月3日在SAS系统中存为“2”
SAS数据集 二、 SAS变量: 描述给定特征的数值集合的指标称为变量。
SAS变量主要分为两类,数值变量和字符变量。 • SAS变量名只能用英文字母表示 • 数值变量只能取数值为值。可以有正负号及小数点(+、—、•),但不能有逗号(,),可以接受的范围为±10E-307至±10E308。 • 字符变量可以取字符、字母、特殊字符以及数字为值。在DATA步中某些SAS语句所使用的变量名后跟一个美元符号,即表明该变量是字符型变量。在SAS中一个字符变量的取值可以有1—200个字符长。
三、 SAS算符 SAS算符是一些符号,它们要求作比较、算术运算或逻辑运算。SAS使用两种主要类型的算符:前缀算符和中缀算符。 前缀算符用于变量、常数、函数或者用括号括起来的表达式。例如: +Y -25 -COS(A) 加号和减号可作为前缀算符;NOT和符号^也是前缀算符。 中缀算符作用在算符两边的运算对象上,例如6<8 。中缀算符一般分为四类:算术算符、比较算符、逻辑算符和其它算符(最大、最小和连接)。
1.算术算符: 算术算符表示执行一种算术运算,包括: ** 乘方 * 相乘 / 相除 + 相加 - 相减 如果算术算符有一个运算对象是缺失值,运算结果也是缺失值。 2.比较算符: 比较算符确定两个量之间的一种关系,如果这种关系成立,则输出结果为1(真);如果它不成立,则输出结果为0(假)。比较算符包括: =(EQ) 等于 ^=(NE) 不等于 >(GT) 大于 <(LT) 小于 >=(GE) 大于等于 <=(LE) 小于等于
考虑表达式:A<=B。如果A的值为4,B的值为3,则表达式A<=B的值为0(假);若A的值为5,B的值为9,则表达式A<=B的值为1(真);若A与B的值均为47,则表达式成立,且其值为1。
3.逻辑算符: 逻辑算符也称为布尔(Boolean)算符,在表达式里通常用来连接一系列比较式。逻辑算符包括: &(AND) 与; | (OR) 或; ^ (NOT) 非 4.运算次序: 关于运算次序,SAS有如下的三个准则: 准则1:在括号里的表达式先计算; 准则2:较高优先级的运算先被执行。
下面是各运算符的优先等级(排在前面的优先):下面是各运算符的优先等级(排在前面的优先): • **、^(not) • *、/ • +、-、 • <、<=、=、 ^=、>、>=、 ^>、^< • &(and) • |(or) 准则3:对于相同优先级的算符,左边的运算先做。但有 两个例外: 1) 对第一级,右边的先做;如6*3*2=6*(3*2) 2) 当两个比较算符围着一个量时,则等价于一个and运算。例如: 12<age<20 等价于 ( 12<age) and (age<20)
6 SAS函数 一 、SAS函数的定义 1.SAS函数的定义: SAS函数是一个子程序,它由0个或几个自变量返回一个结果值。每个SAS函数都有一个关键词名字。为了引用函数,要写出它的名字,然后写出一个自变量或几个自变量,它们用括号括起来,这个函数对这些自变量执行某种运算。SAS函数的形式为: functionname(argument,...) 例如: • INT(cash) • SUM(cash,credit) • MIN(SUM(cash,credit),1000)
2. SAS函数的分类:SAS函数分为17种类型,我们需要接触的有:算术函数、截取函数、数学函数、概率函数、分位数函数、样本统计函数、随机函数、字符函数等。 二、 SAS函数自变量和结果 1. SAS函数的自变量 1) 自变量的类型:自变量可以是简单的变量名、常数或者表达式。这个表达式还可以包含其它的函数。例如: sqrt(2500) min(sum(of x1-x10),y)
2) 自变量的个数: 有些函数不需要自变量(如DATE()), 有些只需要一个自变量, 有些函数是对几个自变量作分析处理。 所有函数都不允许超过2000个自变量。 如果函数的自变量是表达式,则先计算作为自变量的表达式。 如:LOG(x+y) 这个函数,是先计算x+y,然后调用对数函数LOG来计算x+y的对数。
3) 自变量的表示法:一般地,当函数有几个自变量时,它们必须用逗号分隔开。不过,以下三种写法均是等价的: functionname(OFvariable1-variable...) functionname(OF variable variable ...) functionname(variable, variable, ...) 例如: sum(of x1-x5) sum(of x1 x2 x3 x4 x5) sum(x1,x2,x3,x4,x5) 是等价的。
2. 函数的结果: 作为函数结果的目标变量(因变量),其取值通常取决于自变量,当自变量是字符变量时,因变量取字符为值;当自变量为数值变量时,因变量取数值为值。 对大多数函数而言,数值目标变量的长度是8个字节,字符目标变量的长度为200个字节。
三.、函数的分类 SAS函数主要分为以下五类: • 数学函数 abs():求绝对值 mod(var1,var2):求var1除以var2后的余数 sqrt():求平方根值 int():取整函数,截取小数部分 round(var,规定):按规定四舍五入。 规定取:0.1,.01,…… log():计算以e为底的对数值 log10():计算以10为底的对数值
样本统计函数 max():求最大值 min():求最小值 mean():求平均数 std():求标准差 sum():求和 • 随机函数 normal():产生一个正态分布的随机数 rannor():产生一个标准正态分布的随机数 • 字符函数 substr():从一个字符串中抽取或取代一个指定的子串 trim():去掉字符串尾部的空格 • 日期时间函数 year():从变量中抽取“年份”值 month():从变量中抽取“月份”值 day():返回变量的天数值 mdy(月,日,年):将变量转换成日期值形式 具体的函数请查阅: SAS Online Help--->SAS Language--->SAS Functions
第三章 数据集的建立、浏览与修改 §1、数据集的结构与种类 一、结构:见PPT14 二、种类: 1、临时数据集 2、永久数据集 三、逻辑库(数据库) 1、什么是逻辑库 与通常的数据库不同,逻辑库是SAS的一个特有概念。它本质上是一个比数据集高一级的目录,数据集作为一个文件存储在这一目录之下。 2、逻辑库的种类