470 likes | 693 Views
第一讲: SAS 系统概述. SAS(Statistical Analysis System ,统计分析系统 ) 是 20 世纪 60 年代初推出的一种科学的统计分析技术,如今已广泛地普及和应用于医学、社会学、市场、经济和自然科学各个领域的信息处理、定量研究和科研分析中。. 1 .1 SAS 系统的主要功能与模块.
E N D
SAS(Statistical Analysis System,统计分析系统)是20世纪60年代初推出的一种科学的统计分析技术,如今已广泛地普及和应用于医学、社会学、市场、经济和自然科学各个领域的信息处理、定量研究和科研分析中。
1 .1 SAS系统的主要功能与模块 在数据处理和统计分析领域,SAS系统是大型集成应用软件系统,具有完备的数据访问、数据管理、数据分析和数据呈现功能。它运用统计分析、时间序列分析、运筹决策等科学方法进行质量管理、财务管理、生产优化、风险管理、市场调查和预测等业务,并可将各种数据以灵活多样的各种报表、图形和三维透视的形式直观地表现出来。
SAS系统包含了20多个模块,每个模块又包含若干过程,主要过程有频数统计、交叉汇总表、数据的排序分类、方差分析、相关与回归分析、制图和制表、各种高级统计分析过程,如Conjoint(结合)分析、Factor(因素或称因子)分析、Cluster(聚类)分析等。
SAS语言 SAS程序的书写规则 • 语句可在行的任一列开始和结束; • 语句的词之间可以用一个或多个空格符或其它特殊字符隔开; • 一个语句可以分写为多行(换行时,换行符相当于一个空格符) • 多个语句也可以写在同一行。 • 但是,规则的书写格式有助于阅读和检查,也可以减少书写错误,通常习惯使用的规则有: • 不同的程序步间留有空行; • 每个语句都另起一行。程序步的第一个语句和最后的RUN语句由第一列开始书写。其它语句按程序的逻辑结构层次每层缩进固定的列数; • 语句的词之间都是固定的一个空格符。
2.1.2 数据步和过程步 数据步(Data Step): 读入源数据文件和SAS数据集,修改、编辑或创建SAS数据集或文本文件。 过程步(Proc Step): 面向SAS数据集,完成某特定的计算、分析和呈现的功能。 每个程序步都是由若干语句构成,每个语句是由一个关键词开始,并以分号结束。DATA语句和PROC语句分别标志数据步和过程步的开始。RUN语句标志程序步的结束。
2.2 SAS数据集和SAS文件 SAS系统分析和呈现数据的过程只面向SAS数据集。当然,SAS也提供了很多工具,使用户可以方便地实现许多流行数据库文件与SAS数据集之间的转换,使用户可以面向各种格式数据文件的数据进行分析,并按用户的需要用不同的方式呈现和提交分析的结果。 SAS系统有自己的面向对象的开发工具。为了实现存储和管理这些面向对象的开发任务,SAS就建立目录册(Catalog)类型的文件,在这一类文件中可以存储整个应用系统,包括它的界面、源程序和各种对象间的连接。这些由SAS建立、维护和管理的文件都称为SAS文件。
2.2.1 SAS逻辑库 从SAS系统来看,它所建立的众多的SAS文件可按不同需要将其归入若干个SAS逻辑库,以此来对SAS文件进行访问和管理。
2.2.1.1 逻辑库名和引用SAS文件 • 在SAS系统中,为了访问一个SAS文件,一定要为该SAS文件所在的位置指定一个SAS逻辑库,即赋予一个逻辑库名或简称为库名。逻辑库名的命名规则: • 由英文字母(A~Z,包括大写和小写)或下划线(_)开始; • 由数字、字母和下划线构成; • 总共使用1至8个字符。 在指定逻辑库名以后,就可使用两级命名的方式引用SAS文件: 逻辑库名.文件名 例如,sasuser.class是指逻辑库sasuser中名为class的SAS文件。 注意:在每个SAS进程一开始,系统就自动地指定了一些逻辑库供用户使用,它们是WORK(临时逻辑库 )、SASHELP和SASUSER(永久逻辑库 )。
2.3 用数据步读入数据生成SAS的数据集 SAS中基本的数据输入语句包括: • DATA;(数据步的第一条语句) • INPUT;(将源数据文件中的数据读入SAS数据集) • LIST;(列表显示数据的输入格式,以便检查数据是否输入在它对应的栏位上) • CARDS(或DATALINES);(告诉SAS读取CARDS后面的数据行) • INFILE‘数据文件名’;(调用外部源数据文件) • RUN;(表示数据步的结束)
2.3.1 数据文件格式与输入模式 2.3.1.1 按列输入模式 对字段固定格式的源数据文件,使用INPUT语句读入时,通常采用按列输入模式。其一般格式为: INPUT 变量名[$] 开始列-结束列…; 其中,符号$为字符型变量的选项,若为数值型变量,则不必加这个符号。
注:SAS将从数据行的第7列开始读取SEX的变量值1位数,然后,SAS回到数据行的第3列开始读CASEID变量值的3位数(此例读的1行的001,其余类推)。“INPUT @n”语句一般用于读取一个现成的外部数据文件,因此,INPUT之前应有“INFILE'数据文件名';”语句。用“+n”跳列读取数据: +n的含义与@n不同。@n是跳读第n列开始的某变量值;而+n表示“从当前指针位置向右空出n之后”再去读新的变量值。
2.3.1.2 列举输入模式 对于自由格式的数据文件,系统根据分隔符区分各个字段,SAS采用列举模式读入。其一般形式为: INPUT 变量名[$]…; 其中,符号$为字符型变量的选项,若为数值型变量,则不必加这个符号。
[例2-7] 在字符型变量后加一个字符&,把两个字符串(中间有若干空格)作为一个整体读取。 将[例2-6]中INPUT语句改为如下格式,则能解决上例中变量NAME的值不能正确读入的问题: INPUT ID CASID NAME $ & SEX AGE EDUC;
注:若在input语句的最后加入跟踪符号“@”,可保留input语句使用过的数据行的剩余数据供后面的input语句使用;若在input语句的最后加入跟踪符号“@@”,则可保留input语句使用过的数据行的剩余数据供下一个循环使用。本例在INPUT后面用两个“@@”跟踪符号,因此每行数据可以安排几个观察值(这里是3个观察值),每个观察值分别有3个变量值。注:若在input语句的最后加入跟踪符号“@”,可保留input语句使用过的数据行的剩余数据供后面的input语句使用;若在input语句的最后加入跟踪符号“@@”,则可保留input语句使用过的数据行的剩余数据供下一个循环使用。本例在INPUT后面用两个“@@”跟踪符号,因此每行数据可以安排几个观察值(这里是3个观察值),每个观察值分别有3个变量值。
2.3.1.4 用INFILE语句调用外部数据文件 使用INFILE语句时,必须建立两个文件,一个是纯命令文件,另一个是纯数据文件。例如,首先要建立以下的命令文件(即程序)。 DATA older; INFILE 'older.dat'; /*调用当前目录中的older.dat数据文件*/ INPUT ID1 1-2 CASEID 3-5 S EX 7; 其他数据转换语句; RUN; 其次要在当前目录建立older.dat纯数据文件。
2.3.1.5 通过CARDS命令(或DATALINES命令)读取数据 用CARDS(或DATALINES)命令导读CARDS后面的数据。CARDS语句的位置如下: DATA 数据集名; INPUT 变量名列表; LIST; CARDS(或Datalines); 数据行 RUN;
2. 4 数据的输出格式 2.4.1 用FORMAT指定输出格式 可以在数据步的INPUT语句后加入FORMAT语句,其一般形式为: FORMAT 变量名 输出格式…;
2.5 读入数据的选取 2.5.1 IF语句 有些操作命令通常要以IF语句为先决条件,符合IF语句中的条件时,则可执行DELETE(也可执行GO TO、SUM或LIST)以及赋值等命令语句。
2.5.2 用RETAIN语句预置变量值 在数据步执行的每次循环中,RETAIN语句将指定的变量初始化。由于RETAIN命令不是过程(PROC),因此它可放在程序的任何位置。其命令格式为: RETAIN 变量1 初值1 变量2 初值2…;
2.6.1.1 问卷设计简例 在社会调查与市场研究中,有多种调查研究方法(如总卷调查法、文献追踪法、内部资料调研法、访谈调查法、亲自实践法等)。目前,绝大多数是采用发放问卷的形式采集原始数据。然后,把反馈而来的问卷编码成计算机统计软件所能识别的数码。 下面举一个简单问卷设计如表2-1所示: