当前位置:文档之家› sas教程

sas教程

sas教程
sas教程

sas教程:第一章统计软件中的数据录入格式

统计分析是科研中的必要环节,统计软件则是进行统计分析的利器。但是,在计算机已逐渐普及的今天,统计软件却仍让人感到几分神秘:除了大型统计软件都还没有中文版这一原因,统计软件在许多小的方面也有自己的特点,往往就是这些小地方就会让许多人深入宝山而空返。今天我们就来谈谈使用统计软件时一个最基本而又非常重要的问题--数据录入格式。

简言之,我们平时往往用表格的形式来记录数据,这并无不妥。问题在于当进行统计分析时,如果我们直接将数据按平时记录的格式来进行分析,那就很可能不得其门而入--因为大多数统计软件对数据格式都有着特定的格式要求,下面我们就举一些常见的情况来解释这一问题。

1. 单组或多组数据平时我们多记录成" 第1组、第2组、第3组... " 等等,如表一左侧所示。样本含量相等或不等。主要用于成组资料比较的t、F或秩和检验等。这种记录格式姑且称为统计表格格式,在各种统计软件中,该数据通用的分析格式如表一右侧所示,我们把这种格式称为统计分析格式。

表一

①统计表格格式

序号第1组第2组第3组

1 0.1 0.4 0.6

2 0.2 0.5 0.7

3 0.3 0.8

4 0.9

样本量 3 2 4

②统计分析格式

1 , 0.1

1 , 0.2

1 , 0.3

2 , 0.4

2 , 0.5

3 , 0.6

3 , 0.7

3 , 0.8

3 , 0.9

看出来区别了吗?统计分析格式中第一列为“分组变量”,指示所在的组号;第二列为原始数据。现在再回到SPSS等统计软件的菜单去,做one-way ANOVA(成组的方差分析)知道怎么选变量了吧!

2. 配伍组数据平时的记录格式同上面相似。主要用于配伍组资料比较或秩和检验等。见表二:

表二

①统计表格格式

序号第1组第2组第3组

1 0.1 0.3 0.5

2 0.2 0.4 0.6

样本量 2 2 2

②统计分析格式

1 , 1 , 0.1

1 ,

2 , 0.2

2 , 1 , 0.3

2 , 2 , 0.4

3 , 1 , 0.5

3 , 2 , 0.6

统计分析格式中第一列为“第一分组变量”,指示所在的组号;第二列为“第二分组变量”,指示在该组的序号,第三列为原始数据;

3. 单组成对数据变量名分别为:X、Y,要求样本含量相等。主要用于配对计量资料比较的t、秩和检验;直线回归与相关;曲线拟合等,格式见表三。

表三

①统计表格格式

序号X Y

1 0.1 0.4

2 0.2 0.5

3 0.3 0.6

样本量 3 3

②统计分析格式

0.1 , 0.4

0.2 , 0.5

0.3 , 0.6

两种格式没有区别,但请注意,如果配对资料转用方差分析来处理,则相应的也要变换格式。

4. 多组成对数据主要用于协方差分析,格式见表四。

表四

①统计表格格式

序号X1 Y1 X2 Y2

1 0.1 0.3 0.5 0.8

2 0.2 0.4 0.6 0.9

0.7 1.0

样本量 2 2 3 3

②统计分析格式

1 , 0.1 , 0.3

1 , 0.

2 , 0.4

2 , 0.5 , 0.8

2 , 0.6 , 0.9

2 , 0.7 , 1.0

在统计分析格式中,第一列为对子组号,第二列与第三列分别为该组的对子X、Y。

第二章 SAS/ASSIST视窗简介

SAS是一个庞大的系统,它由许多模块组成,每个模块分别完成不同功能。由于SAS最初是为专业统计人员设计的(这一点和SPSS恰恰相反),因此使用上以编程为主,初学者掌握较为困难。现在,微机操作系统已经进入了WINDOWS时代,而WINDOWS软件的一个重要特点就是易学易用。要想在市场中继续领先,SAS必须推出能体现WINDOWS软件这一特色的新界面,SAS/ASSIST视窗就是这一努力的结果。虽然它还有许多不足之处,但这一新界面使得初学者较快地学会使用SAS成为可能。本章将向大家介绍这一SAS的全新界面――SAS/ASS IST视窗。

长期以来,对于统计软件界面的易用性有两种理论:一种认为统计软件也是软件,美观易用的界面是它必备的功能;另一种理论则认为统计软件有其特殊用途,现在有许多统计方法实际上是在被滥用,而如果任何人都可以通过简单方便(即“友好”)的界面来使用自己实际

上并不了解的复杂统计模型,则等同于是在助长这一现象。这两种理论都有一定的道理,看来SAS倾向于后者:ASSIST视窗只能提供较常用的统计功能,并且看上去也不怎么漂亮。

2.0.1 ASSIST视窗的启动

ASSIST视窗的启动方法也是比较多的。如果从下拉菜单启动,则请单击Globals--> SAS/A SSIST,系统将开始启动ASSIST视窗,几秒钟后进入ASSIST视窗主界面如下图所示:

ASSIST视窗的正上方为主菜单名(Primary Menu),下面的12个按钮分别表示了在该视窗中可用的各种功能。常用的按钮有:

?TUTORIAL按钮由此可以进入SAS提供的教学程序

?DATA MGMT按钮由此进入数据库管理模块

?GRAPHICS按钮由此进入绘图模块

?DATA ANALYSIS按钮由此进入统计分析的有关模块

?INDEX按钮提供全部可用命令的索引,如果对菜单项的分类不清楚,可以从这里直接查找所需功能

?EXIT按钮使我们可以退出ASSIST视窗

我们主要介绍统计分析功能,对于其它功能,有兴趣的同学可以自行摸索。

单击DATA ANALYSIS,则视窗进入二级菜单――数据分析菜单(Data Analysis Menu),它的布局和主菜单界面基本一致,各种按钮中常用的有:

?ELEMENTARY按钮提供基本的统计分析,如描述、相关、频数表

?REGRESSION 按钮提供线性回归、Logstic回归和时间序列回归统计

?ANOVA 按钮提供方差分析、非参数检验和t检验

?MULTIVARIATE按钮提供主成分分析等多元分析方法

?QUALITY CNTL按钮进入质量控制模块

?TIME SERIES按钮提供时间序列分析功能

?DATA MGMT按钮与主菜单的该按钮相同,进入数据库管理模块

?INDEX按钮提供全部可用功能的索引

?GOBACK按钮退回主菜单

?HELP按钮启动HELP视窗

2.0.2 ASSIST视窗的使用方法

下面我们以一个例子来说明ASSIST视窗的使用方法。

现有数据集 SASUSER.CLASS记录了某班学生的年龄、身高和体重情况,我们要对该数据进行简单的描述,则用ASSIST视窗的操作方法如下:

①单击数据分析菜单中的按钮ELEMENTARY ,则系统开启一个新的ELEMETARY对话框如下图所示:

②请注意Summary statistics是以深色显示的,表示该项为默认值。用鼠标单击该项目,则系统开启下一个对话框――Summary Statistics对话框如下图所示:

③ Summary Statistics对话框就是统计描述的主窗口,它由一些按钮和复选框(Check bo x)组成,注意Active data set:按钮和Variables:按钮的右侧写着“-REQUIRED-”,表示这两项必须加以定义,否则程序没有足够的信息来运行。首先定义所分析的数据集:单击Active data set:,则系统开启新对话框如图A所示:

④在该对话框中列出了可用的所有数据集名,从左到右依次为库名、数据集名和数据集类型,拖动滑块使SASUSER.CLASS数据集出现在窗口中,用鼠标单击数据库名,由于当前数据集只能有一个,所以对话框自动关闭,退回Summary Statistics对话框。

如果我们再次进入Active data set对话框,则可见SASUSER.CLASS数据集的左侧有一个星号,如图B所示,这表示该数据集已被选中为当前数据集。如果要改变选择,直接单击需要的数据集名,系统会自动替换。

⑤请注意右图,Active data set:按钮的右侧显示为SASUSER.CLASS,表示当前分析数据集为SASUSER库的数据集CLASS。现在我们可以定义分析变量了:单击Variables:,系统开启一个变量选择对话框供我们选择变量。

⑥ SASUSER.CLASS中可供分析的连续变量均显示在变量窗口中,我们想对这三个变量都做描述,则依次单击三个变量名,单击后变量名的左侧出现一个星号,表示该变量被选中;再单击一次则星号消失,表示撤消选择。将三个变量全部选中,如图C所示。然后后按OK,该窗口关闭,系统退回上一级窗口。

⑦ Variables按钮右侧显示为AGE、HEIGHT、WEIGHT三个变量。现在我们输入的信息已经满足了运行程序的最低要求,但是我们还想将结果按性别分开输出,则单击Class:,系统开启变量选择窗口如图D所示。用鼠标单击变量名“SEX”,再单击OK,

此时变量描述窗口如下图所示:

⑧变量的选择告一段落,现在开始选择所需要的统计量。变量描述窗口的下方为一些复选框,右侧为复选框名,左侧为复选框的状态。以SUM复选框为例,用鼠标单击SUM左侧的小方框,此时该方框内打勾,表示该项被选择;再点一下则复选框恢复原状态。如此选择所需的全部统计量,最后变量描述窗口的状态如下图所示:

⑨现在是最后一步――运行程序了,选择下拉菜单Locals--> Run,则系统开始执行程序,最后OUTPUT视窗自动弹出,显示最终的运行结果。

可能有的同学觉得奇怪,为什么我总是说系统在执行程序,刚才没有写程序啊?!事实上,SAS/ASSIST视窗是一个程序自动产生器,我们所做的每一个选择都被写成了程序,最后系统执行这个自动产生的程序来向我们交差。如果想看所产生的程序,则选择下拉菜单Local s View--> Sourse。以刚才的选择为例,系统产生的程序其主要部分如下:

proc means data=SASUSER.CLASS vardef=DF

MIN MAX RANGE SUM MEAN

VAR STD STDERR CV ;

var AGE HEIGHT WEIGHT ;

class SEX ;

;

run;

通过这个例子,我们掌握了使用SAS/ASSIST视窗时将会碰到的窗口界面的用法。为了使大家在学习SAS时能打下较坚实的基础,本书仍然以讲述SAS语言为主线。但是在例题的解中,我们将尽可能给出程序和ASSIST视窗两种操作方法。同学们可根据具体情况自行选择使用哪种解法。

第三章 SAS程序初步

从本质上讲,SAS是一种完善的第四代计算机语言。因此要真正掌握它,我们仍然要抛开其华丽的外表,从学习它的核心――SAS程序开始。

现在,让我们将SAS看成一个计算能力极强的统计学白痴(之所以这样说,是因为它计算能力虽然极强,却只能帮你计算而不能提出自己的实验设计方案或研究方向来),而你有一个非常小的关于数据分析的问题要请它帮忙。自然你要开口提出请求,无论措辞是委婉动听还是直截了当,你的大实话无非是“喂,老兄,我有这样一些数据,我想做这样一种统计分析,您能帮我吗?”。他迅速检查您的要求,在认为合情、合理并且合法后,就开始进行计算,并且在很短的时间内给出计算结果。

好的,计算机语言就是我们和计算机对话时所用的语言。和以上人类对话的例子相对照,“我有这样一些数据”对应SAS程序中的数据步;而“我想做这样一些统计处理”对应SAS程序中的程序步;最后的那一句哀求“您能帮我吗”则对应了Submit命令。在默认情况下,运

行结果或者出错信息将自动给出(当然你也可以强制不让它输出)。此外,还有一些系统环境控制语句,如Libname、title等。SAS程序就是由一个或多个数据步和/或程序步加上一些乱七八糟的环境控制语句组成。在本章中,我们将首先学习SAS对数据的管理方式,然后会了解到什么是数据步和程序步,最后则介绍一下SAS语言中结构化语句的语法。

§3.1 SAS系统对数据的管理

在SAS系统中只有SAS数据集才能被SAS过程直接调用,SAS数据集的结构和DBF数据库完全相同,因此无须多讲。而SAS数据集存储在被称为SAS数据库的文件集中,在PC系统中,SAS数据库与某一个文件夹相对应,我们要为每一个数据库指定一个库标记(库名)来识别该库,使用Libname命令可以指定库标记。它的一般格式如下:

Libname 库标记’文件夹位置’选项;

例如要指定目录“C:\USER”为库标记A,可以在视窗中提交如下语句:

libname a ’c:\user’;

数据库可分为永久库和临时库两种。临时库只有1个,名为WORK,它在每次启动SAS系统后自动生成,关闭SAS时库中的数据集被自动删除;永久库可有多个,用户可以使用Libna me语句指定永久库的库标记,永久库中的所有文件都将被保留。但库标记仍是临时的,每次启动SAS系统后都要重新指定。不过为了方便用户,SAS在每次启动时都会自动指定两个库标记:

?SASUSER:指明为永久库,即库中的数据集被保存起来,以便下次启动系统时使用。

?WORK:指明为临时库,对于开发和检查新程序非常有用,但每次SAS运行结束后WO RK库中的所有文件将被删除。在程序中引用该库中的数据集可以省略库标记,即它被认为是缺省的数据库。

SAS数据库对应文件夹,如SASUSER对应c:\sas\sasuser,WORK对应c:\sas\saswork, SAS数据集则对应文件,每个数据集实际上是在硬盘的相应文件夹内产生一个文件名为数据集名,而扩展名为.sd2的文件,因此如果你成功的建立了一个数据集,理论上你就可以反复使用它直到硬盘报废。

每一个数据集都有一个两级名,第一级是库标记,第二级是数据集名,中间用“.”隔开,在程序中通过指定两级名来识别文件。文件两级名的一般形式如下:

库标记.数据集名

如在a库中的数据集abc可以这样来引用:a.abc 。

§3.2 SAS程序的数据步

3.2.1 预备知识

SAS程序的语句从上一个语句结束处开始,以一个分号结束,可占多行。

3.2.2 数据步

以DATA语句开始,用于创建和处理数据集。其中最常用的语句有:

?DATA语句它的主要功能是:

o标志数据步的开始。

o命名将要创建的SAS数据集。

DATA语句的一般形式如下:

DATA 数据集名;

?INFILE语句用于从外部文件读入数据,必须出现在INPUT语句之前。它的主要功能是:

o确定一个包含原始数据的外部文本文件。

INFILE语句的格式如下:

INFILE ’外部文件的所在位置及名称’选项;

?CARDS语句用于直接输入数据,标志着数据块的开始。格式如下:

CARDS;

数据块

;

?INPUT语句用于向系统表明如何读入每一条记录。它的主要功能有:

o读入由语句指定的数据列。

o为相应的数据域定义变量名。

o确定变量的读入模式。

INPUT语句的格式如下:

INPUT 变量名 [变量类型起止列数]...;

方括号表示其中的内容为可选,如果不输入,系统会以默认值代替。

3.2.3 数据的两种输入方式

上面我们学到了INFILE语句和CARDS语句,它们分别对应了两种数据输入的方式:

【直接输入方式】

实际上我们在第一章已经用到了直接输入方式,仍以那个程序为例,其中的数据步如下:

data temp; 命名将要建立的数据集为work.temp

input x y@@; 要输入的变量为x、y,并且连续输入

cards; 直接输入数据,数据块开始

34 56 78 90 35 67 89 10 23 65 77 45 数据块

; 数据块结束

变量y后面的@@表示数据可以在一行里连续读入,SAS默认按列来分隔变量,可是这里只有两个变量,输成两列数据太长,因此加上两个@@,SAS见到这个符号,在按变量名依次读取完数据后,不是跳到下一行,而是继续在该行读数据,直至本行结束或到达分号为止。

如果你对这段叙述无法理解,请去掉两个@@,重新运行一遍程序,看看LOG视窗中的提示都有些什么变化。

【外部文件读入方式】

如果刚才的数据已经事先输好,在硬盘上的“C:\USER”文件夹内存为temp.dat文件,该文件内容如下(纯文本):

34 56 78 90 35 67 89 10 23 65 77 45

则我们可以输入程序如下:

data temp; 命名将要建立的数据集为work.temp

Infile ’c:\user\temp.dat’;指定外部数据文本文件名

input x y@@; 要输入的变量为x、y,并且连续输入

Run; 数据步结束,以上语句可以执行了

数据步以DATA语句开始,那么在哪里结束?在遇到run语句或另一个数据步/程序步时就结束了。

为什么程序的最后都要加一句run?这个问题还不太好解释,每一个程序应至少在最后有一个run语句,表明前面的所有语句可以提交运行了,如果没有这一句,SAS会以为你后面还有语句要输入,从而将一些非立即执行的语句保留在编译缓冲区中,等待后续命令发出后一起执行,这有时会把事情弄得很糟。出于减少麻烦的需要,建议大家养成在每一个数据步或程序步后都写上一句run的习惯。

Submit命令和run语句有什么区别?这是初学者最爱问的一个问题,也同样是一个难以回答的问题。简单地讲,run是程序语句,可在程序中多次出现,它表示前面的程序段已经全部写完,可以作为一个或几个整体提交运行了,而Submit则是SAS命令,只在最后程序运行的时候发出,表示将程序正式提交运行。如果你还不明白,那么我还是来给你打个比方,run语句是你对SAS说“我想让您做的就是这些了”,而Submit命令就是对SAS说“现在开始为我做这些事,好吗”,明白了吗?

【读入其他格式的数据文件】

除了以上的两种通过数据步创建数据集的方法,SAS还提供了一些其他的方式可以用来读入其他格式的数据文件。6.11版本以上的SAS可以利用FILE菜单上的import命令将其他格式的数据文件导入SAS系统,创建SAS自己的数据集。可以导入的数据文件格式有:dBase 数据库,EXCEL工作表,LOTUS的数据库,纯文本的数据文件等。

导入的操作完全是对话式的,界面友好,简便实用。以下简单叙述导入的步骤,假如例1.1的数据输成一个dBASEIII数据库文件temp.dbf, 已经存放在"c:\user"下,要导入成数据集work.li1_1。选择FILE菜单上的import,弹出一个对话框,按照向导的提示进行下去。

1. 选择导入的数据格式,从下拉式菜单上选择DBF格式,单击NEXT按钮。

2. 给出数据文件的位置和文件名,在对话框中键入C:\USER\temp.DBF,或点BROWSE直接从上面选择文件,选好后单击NEXT按钮。

3. 选择导入的目的地,即指定要创建的数据集的名字和存放的数据库名,先在左面的对话框选择数据库名WORK(临时库),在右面的对话框键入数据集的名字li1_1,此名可任意起,少于8个字符,选择完后,单击FINISH按钮,就完成了此次操作。

这时已经建好了一个数据集,名为WORK.li1_1,与我们前面建立的数据集完全一致。

§3.3 SAS程序的程序步

通俗的讲,SAS的程序步(有的书中也称过程或过程步)就是已经编好了的用于数据整理和统计的计算机程序,你只需要调用它们就是了。程序步总是用一个PROC语句开始,后面紧跟着程序步名,用以区分不同的程序步。以下是一些常用的程序步的名称及功能。

PROC就是程序(procedure)的缩写,而程序步的名字大都是其功能相对应的单词或词组的缩写。

可见SAS的许多功能就是通过程序步来体现的,可如此多的种类也使我们难以总结出一个程序步的通式来。不过仍可大致给出如下结构:

PROC 过程名 [DATA=数据集名] [选项];

该过程的专用语句描述;

[VAR 变量序列;]

[WHERE 条件表达式...;]

[BY 变量序列;]

Run;

方括号里的语句均可以省略,在这时该过程按最通常的情况来处理,即:

o处理最新建立的SAS数据集。

o处理所有的变量(或对一个计算过程来说处理全部数值变量)。

o一次处理整个数据集而不是某个子集。

我们在第一章中用到的PRINT程序步就是采用的这种默认方式。

但有时我们的要求超出了默认方式所提供的范围,这时就要动用方括号里的秘密武器了。

o DATA参数指明所需处理的数据集名,请注意在这里它是一个参数而不是语句。

o VAR语句如果只想分析某一个或几个特定的变量,则可用VAR语句指定它们。例如只想显示变量x的列表,则PRINT过程如下:

Proc print ;

Var x;

Run;

如果想显示x和y两个变量,则将VAR语句改为如下形式即可:

var x y;

当然,也可以将VAR语句删除,结果相同。

o Where语句如果你想处理的不是整个数据集而只是其中符合某种条件的子集,那么WHERE语句将会非常有用,如上例中我们只想显示大于50的x变

量的值,则在PRINT过程中加入where语句如下:

Where x>50;

如果条件变为x、y两个变量的值都要大于50,则where语

句改为:

where x>50 and y>50;

SAS语言中常用的逻辑表达符号有and(和)、or(或)、xor(异或)、ne(不等)等。

o By语句如果你需要分组处理数据,例如要按性别分组输出统计结果,你有两种选择,一是用不同的where语句将同一个程序步反复写几遍;另一种显

然更酷的方法就是采用by语句。如上例我们想按不同的y值输出x值,则

加入by语句如下:

By y;

使用BY语句要求数据集已经按BY语句中指定的变量排序。如果没有排序,则程序无法正确运行。可以用SORT过程来排序,语法结构如下:

PROC SORT DATA=数据集名;

BY 变量名列;

RUN;

§3.4 结构化语句简介

每一种结构化语言编写的程序都由顺序、分支、循环三种结构构成, SAS语言也不例外。

在这里简要介绍一下分支和循环语句的语法。这些语句均可直接在数据步和程序步中使用,

适当地使用它们可以大大简化我们的工作。

3.4.1 分支(条件)语句

【语法格式】

语法格式如下:

IF 条件 THEN

程序块;

ELSE

程序块;

可见其语法和FOXBASE语言十分相似,只是前面多了THEN,结尾没有ENDIF,可以将两者相

比较来理解。其中程序块如果只有一句,则可直接写出,否则应以DO开头,以END结束。

【应用实例】

例3.1 在产生数据集temp的同时为其增加变量class,当x>50时class=1,否则class=2。

解:程序如下:

data temp; 数据步开始,定义要建立的数据集为WORK库的TEMP input x y@@; 要输入的变量为X和Y,并且采用数据连续读入方式 if x>50 then class=1; 建立新变量CLASS,如果X>50,则CLASS=1

else class=2; 否则,CLASS=2

cards; 数据块开始

34 56 78 90 35 67 89 10 23 65 77 45 数据块

; 数据块结束

proc print; 列表输出数据集中的数据,检查有无错误

run; 程序结束,开始运行以上程序

以上程序在书写时采用了缩进格式,使程序的结构更清楚。当然大家可以左对齐写完

所有的语句,但这样书写的程序在较长时难以阅读。

为什么可以这样写?在这里有必要解释一下数据步的执行过程,input语句按变量顺序

将数据读入内存缓冲区,直至每一个变量都有值相对应。然后数据步继续向下执行,从而其

它语句可以修改内存缓冲区,如修改值、增加变量等,在执行到数据步结束后,程序又回到input语句处继续执行,直到数据读完为止。现在再看看这个程序,大家可以理解它了吧!

3.4.2 循环语句

【语法格式】

语法格式如下:

DO 起始条件 TO 终止条件;

程序块;

END;

该语句主要用于建立数据集。

【应用实例】

例3.2 在产生数据集temp的同时为其增加变量class,取值依次为1、2。

解:程序如下:

Data temp; 数据步开始,定义要建立的数据集为WORK库的TEMP do class = 1 to 2; 循环开始,循环控制变量为CLASS,取值从1到2

input x y@@; 要输入的变量为X和Y,并且采用数据连续读入方式 output; 用OUTPUT语句将循环控制变量写入数据集中

end; 循环结束

cards; 数据块开始

34 56 78 90 35 67 89 10 23 65 77 45 数据块

; 数据块结束

run; 程序结束,开始运行以上程序

注意在数据步中,我们不需要用语句改变循环变量的大小,系统会自动改变。

现在,SAS语言的基本知识算是介绍完了。在理论上,你现在可以坐在计算机前,独立编写

程序以做出你的统计作业或者是向SAS公司发射核导弹。但为了使你能尽可能地少走弯路

(我指的是做统计作业而不是后者),在以后的各章中我们将重点介绍一些常用的程序步,

并且在必要的时候介绍一些较为深入的内容。Are you ready? Let’s go!

第四章统计图

统计图是统计描述的重要工具,它可以直观的反映出事物间的数量关系。因此,许多统计软

件均提供了强大的统计做图功能。SAS的许多程序步,如Univariate过程等,也附有相应

的绘图功能,这些我们拟在相关章节中讲述。本章将向大家介绍两个专门用于绘图的程序

步――GCHART过程和GPLOT过程。前者用于绘制各种常用的统计图,而后者则用于绘制散

点图。

在早期的DOS版本中,SAS只提供低分辨率图形(即用键盘字符模拟输出的图形)。而在W INDOWS时代,美观漂亮也成为了软件最重要的性能指标之一,因此SAS公司推出了高分辨

率图形。虽然比起EXCEL等软件来,它的高分辨率图形仍然不那么令人满意,但至少已经跟

上了时代的潮流。

高分辨率图形在专门的GRAPH视窗中输出,而低分辨率图形在OUTPUT视窗中一同输出。只

要将绘图过程名中的字母G去掉,做出的就是低分辨率图形,你可以比较一下两种图形的“天

壤之别”。

§4.1 GCHART过程

Gchart过程可以绘制水平/竖直条图(直方图)、立体直方图、饼图和星状图。我们可以用

这些图来了解单个变量的分布或者多个变量之间的关系。

4.1.1 语法格式

PROC GCHART [ DATA=<数据集名> [选项] ] ; 指定要分析的数据集名及一些选项HBAR <变量名列> / [选项] ; 绘出条形图

VBAR <变量名列> / [选项]; 绘出水平条形图

BLOCK <变量名列> / [选项]; 绘出三维直方图

PIE <变量名列> / [选项]; 绘出饼图

STAR <变量名列> / [选项]; 绘出星状图

AXISn [选项]; 控制坐标轴的形状和颜色

BY <变量名列>; 按该变量取值分层绘制,要求数据集已

按该变量排序

方括号中的为可选项,如果不写,系统会以默认值代替或者忽略该功能;而尖括号中的为必

选项,表示如果写了该语句,则必须提供尖括号中的信息,否则可能出错。如[ DATA= <数

据集名> ],表示你可以不写这一项,此时系统默认处理的是最新建立的数据集;而如果写

了DATA=这一项,你就必须指定一个数据集名,不然SAS跟你没完。

4.1.2 语法说明

事实上,绘图程序步中的选项极为繁杂,如果合理地使用这些选项可以做出非常漂亮的统计

图来。但这些选项也给大家的学习带来很大的不便,因此在这里我们只简要介绍几个常用的

绘图语句中的选项。

【绘图语句选项】

?MISSING 指定绘图时要将变量的缺失值也包括在内。

?TYPE=做图类型关键字指定要做图的类型,即图中条块代表的含义:缺省值是频数(FREQ);如果指定了选择项SUMVAR,则缺省值为总和(SUM)。可选的关键字有:

?FREQ 要求按指定变量的频数做图。

?PERCENT 要求按在横轴刻度表示范围内出现的频数占总数的百分比做图。

?CFREQ 按累计频数做图。

?CPERCENT 按累计百分比做图。

?SUM 只能与SUMVAR选项同时使用,要求图中的每一条代表:变量在横轴表示的取值范围内时,SUMVAR指定变量的总和。

?MEAN 只能与SUMVAR选项同时使用,要求图中的每一条代表:变量在横轴表示的取值范围内时,SUMVAR指定变量的均数。

?SUMVAR=求和变量指定使用TYPE=SUM或MEAN时,用于求总和、均值的变量。

?LEVAL=n 如果绘图变量是连续变量,用该选项产生有N个组段的图形。

?GROUP=分组变量要求产生以分组变量的值分组的并排图。

?SUBGROUP=亚组变量要求每个图形内部再按亚组变量的值分块。

?CAXIS=颜色指定坐标轴的颜色。

?CTEXT=颜色指定坐标轴文本的颜色。

4.1.3 应用实例

例4.1 绘制《卫生统计学》第三版习题1.1的直方图,数据存在c:\user\wt1_1.dat中。

解:程序如下:

libname a 'c:\user'; 指定c:\user文件夹为数据库a

data a.wt1_1; 数据步开始,指定要建立的数据集为a库的wt1_1 infile 'c:\user\wt1_1.dat'; 采用外部文件读入方式,文件名为c:\user\WT1_1.dat input x @@; 输入的变量为x,采用连续输入的格式

proc gchart data=a.wt1_1; 调用绘图程序步gchart

vbar x / levels=10; 绘出直方图,用于绘图的变量为x,分为10组

run; 开始运行以上程序

事实上ASSIST视窗的输出图形是彩色的,和我们用程序做出的有些区别,这是因为ASSIST

视窗自动提交了一些绘图环境语句,对输出图形作了修饰的缘故。

实际上libname语句只需要运行一次就可以了,但在开始的几道例题里我们都写上了这一

句,让大家逐步养成启动SAS后就运行这一句的习惯。请将C:\USER文件夹指定为A库,

以后我们实习的数据集均放在该库中。

§4.2 GPLOT过程

GPLOT过程用于绘出散点图。图中的横、纵坐标分别代表两个变量。

4.2.1 语法格式

PROC GPLOT [ DATA=<数据集名> [选项] ] ;

指定绘图变量和选项

PLOT <纵坐标变量*横坐标变量[=分层变量名]...> /

[选项];

在原图基础上重叠绘制第二幅散点图PLOT2 <纵坐标变量*横坐标变量[=分层变量名]...> /

[选项];

SYMBOLn [选项] 定义符号、添加趋势线、定义点和线的

颜色

BY <变量名列>; 按该变量取值分层绘制,要求数据集已

按该变量排序

实际上,SYMBOL语句中定义的选项为系统环境控制选项,这意味着一次定义,终生使用。

除非重新定义,否则以后的输出图形都将会是第一个图形的“孪生兄弟”。

在这里SYMBOL后面紧跟了一个n,表示任意自然数。因为PLOT语句可以在同一坐标系内重

叠绘制许多层图,而这个数字就表示SYMBOL语句是控制的哪一层图。

4.2.2 语法说明

【GPLOT过程的选项】

?UNIFORM 要求用BY语句分组打印的散点图的坐标刻度相同,便于比较。

?VTOH=数值指定纵横坐标的比例。

【PLOT语句说明】

?分层变量

表示所做的散点图按指定变量的取值分层,默认按不同颜色来区分。

?语句选项

?OVERLAY 同一语句做的图重叠在同一个坐标系中显示。

?HAXIS=数值定义横坐标的刻度。

?VAXIS=数值定义纵坐标的刻度。

?CAXIS=颜色定义坐标轴的颜色。

?CTEXT=颜色定义坐标轴文本的颜色。

【SYMBOL语句选项】

?VALUE=符号可用的符号及相应名称有:+ PLUS ★ STAR ■ SQUARE ◆ DIAMON

D ▲ TRIANGLE

?I=连线方式① JOIN 用直线连接。

② SPLINE 用光滑的曲线连接。

1.NEEDLE 向横坐标画垂线。

2.RL 添加回归直线。

?WIDTH=宽度定义数据点和连线的宽度。

?COLOR=颜色定义数据点和连线的颜色。

4.2.3 应用实例

例4.2 10名20岁男青年身高(cm)与前臂长(cm)如下,请绘出散点图(卫统p236 5.2题)。

身高 170 173 160 155 173 168 178 183 180 165

前臂长 45 42 44 41 47 50 47 46 49 43

解:程序如下(注意程序中对输出图形作了些修饰)。

Libname a ’c:\user’; 指定c:\user文件夹为数据库a

data a.wt5_2; 数据步开始,指定要建立的数据集为a库的wt5_ 2

input x y @@; 输入的变量为x和y,采用连续输入的格式cards; 数据块开始

170 45 173 42 160 44 155 41 173 41 数据块

188 50 178 47 183 46 180 49 165 43 数据块

; 数据块结束

proc gplot data=a.wt5_2; 调用绘图程序步gplot

plot y*x/ ctext=blue; 绘出散点图,用于绘图的变量为x,y,坐标轴文本颜色为蓝色

symbol value=star color=pink width=2; 定义散点标记为粉红色星号,大小为2 run; 开始运行以上程序

绘制高分辨率统计图非常耗费系统资源,因此SAS在执行作图语句时实际上是将这些语句存入程序缓冲区,当用户打开GRAPH视窗看结果时才正式执行,从而绘出所需的统计图。如果用户没有看所绘制的图形,则绘图语句就一直留在缓冲区内,此时用户再执行任何程序,程序语句就全部在缓冲区内排队,等待绘图语句执行完毕,因此就无法得到相应的输出结果,这是同学们在上机时常犯的一个错误。

适当地使用统计图可以帮助我们更加深入的了解数据的分布规律。这里的例子只是绘图语句的简单用法,而绘图语句的复杂用法将结合例题在以后的各章中逐步介绍。

第五章定量资料的统计描述和t、u检验

从本章开始,我们将正式开始使用SAS解决我们的统计问题。从前面的几章可知,SAS的主要功能是由不同的程序步来体现的。因此在以后的各章中,我们将对每种问题重点介绍一些常用的程序步,以及它们的输出结果的解释。

对于定量资料的统计描述和简单推断,SAS提供了三个强有力的程序步,它们是:

?UNIVARIATE过程提供单个变量的详细描述和对其分布类型的检验。

?MEANS过程提供单个或多个变量的简单描述,对于多个变量,它的输出格式紧凑,便于阅读。

?TTEST过程对变量进行t/u检验。

§5.1 引例

例5.1 文本文件“C:\USER\WTLI1_1.DAT”中已存入某市110名7岁男子童的身高资料(cm),请计算均数、标准差s、变异系数CV(卫统第三版p6例2.1)。

解:该题应首先用数据步建立一个数据集,然后调用UNIVARIATE过程或MEANS过程来求出所需要的统计量。具体的程序如下:

① 设定数据库环境:

LIBNAME A 'C:\USER';

② 数据步,建立数据集:

DATA A.WTLI1_1;

INFILE 'C:\USER\WTLI1_1.DAT';

INPUT X @@;

RUN;

③ UNIVARIATE或MEANS过程,求出所需要的统计量:

PROC UNIVARIATE DATA=A.WTLI1_1; PROC MEANS DATA=A.WTLI1_1

N MEAN STD CV ;

VAR X; VAR X;

RUN; RUN;

例5.2 某医生测得18例慢支炎患者与16例健康人的尿17酮类固醇排出量 (mg/dl)分别为

X 1和X

2

,问两者均数是否不同(医统第二版P19例2.17)?

解:这是成组设计的两样本均数比较的t检验,程序应首先建立数据集,然后调用TTEST 过程进行检验,在检验的同时也可以得到两个样本的简单描述。

① 设定数据库环境:

LIBNAME A 'C:\USER';

② 数据步,建立数据集,这里采用直接输入数据的方法:

DATA A.YTLI2_17;

INPUT GROUP VALUE @@;

CARDS;

1 3.14 1 5.83 1 7.35 1 4.6

2 1 4.05 1 5.08 1 4.98 1 4.22 1 4.35 1 2.35

1 2.89 1 2.16 1 5.55 1 5.94 1 4.4 1 5.35 1 3.8 1 4.12

2 4.12 2 7.89 2 3.24 2 6.36 2 3.48 2 6.74 2 4.67 2 7.38 2 4.95 2 4.08

2 5.34 2 4.27 2 6.54 2 4.62 2 5.92 2 5.18

;

RUN;

③ TTEST过程,进行两样本的t检验。

PROC TTEST DATA=A.YTLI2_17;

VAR VALUE;

CLASS GROUP;

RUN;

§5.2 UNIVARIATE过程

Univariate过程对数值变量给出比较详细的变量分布的描述,其中包括:

?变量的极端值。

?常用的百分位数,包括四分位数和中位数。

?用几个散点图描绘变量的分布。

?频数表。

?确定数据为正态分布的检验。

5.2.1 语法格式

Univariate过程的语法格式如下:

SAS统计分析教程方法总结

对定量结果进行差异性分析 1.单因素设计一元定量资料差异性分析 1.1.单因素设计一元定量资料t检验与符号秩和检验 T检验前提条件:定量资料满足独立性和正态分布,若不满足则进行单因素设计一元定量资料符号秩和检验。 1.2.配对设计一元定量资料t检验与符号秩和检验 配对设计:整个资料涉及一个试验因素的两个水平,并且在这两个水平作用下获得的相同指标是成对出现的,每一对中的两个数据来自于同一个个体或条件相近的两个个体。 1.3.成组设计一元定量资料t检验 成组设计定义: 设试验因素A有A1,A2个水平,将全部n(n最好是偶数)个受试对象随机地均分成2组,分别接受A1,A2,2种处理。再设每种处理下观测的定量指标数为k,当k=1时,属于一元分析的问题;当k≥2时,属于多元分析的问题。 在成组设计中,因2组受试对象之间未按重要的非处理因素进行两两配对,无法消除个体差异对观测结果的影响,因此,其试验效率低于配对设计。 T检验分析前提条件:

独立性、正态性和方差齐性。 1.4.成组设计一元定量资料Wil coxon秩和检验 不符合参数检验的前提条件,故选用非参数检验法,即秩和检验。1.5.单因素k(k>=3)水平设计定量资料一元方差分析 方差分析是用来研究一个控制变量的不同水平是否对观测变量产生了显著影响。这里,由于仅研究单个因素对观测变量的影响,因此称为单因素方差分析。 方差分析的假定条件为: (1)各处理条件下的样本是随机的。 (2)各处理条件下的样本是相互独立的,否则可能出现无法解析的输出结果。 (3)各处理条件下的样本分别来自正态分布总体,否则使用非参数分析。(4)各处理条件下的样本方差相同,即具有齐效性。 1.6.单因素k(k>=3)水平设计定量资料一元协方差分析 协方差分析(Analysis of Covariance)是将回归分析与方差分析结合起来使用的一种分析方法。在这种分析中,先将定量的影响因素(即难以控制的因素)看作自变量,或称为协变量(Covariate),建立因变量随自变量变化的回归方程,这样就可以利用回归方程把因变量的变化中受不易控制的定量因素的影响扣除掉,从而,能够较合理地比较定性的影响因素处在不同水平下,经过回归分析手段修正以后的因变量的样本均数之间的差别是否有统计学意义,这就是协方差分析解决问题的基本计算原理。

SAS入门教程

第一章SAS系统概况 SAS(Statistic Analysis System)系统是世界领先的信息系统,它由最初的用于统计分析经不断发展和完善而成为大型集成应用软件系统;具有完备的数据存取、管理、分析和显示功能。在数据处理和统计分析领域,SAS系统被誉为国际上的标准软件系统。 SAS系统是一个模块化的集成软件系统。SAS系统提供的二十多个模块(产品)可完成各方面的实际问题,功能非常齐全,用户根据需要可灵活的选择使用。 ●Base SAS Base SAS软件是SAS系统的核心。主要功能是数据管理和数据加工处理,并有报表生成和描述统计的功能。Base SAS软件可以单独使用,也可以同其他软件产品一起组成一个用户化的SAS系统。 ●SAS/AF 这是一个应用开发工具。利用SAS/AF的屏幕设计能力及SCL语言的处理能力可快速开发各种功能强大的应用系统。SAS/AF采用先进的OOP(面向对象编程)的技术,是用户可方便快速的实现各类具有图形用户界面(GUI)的应用系统。 ●SAS/EIS 该软件是SAS系统种采用OOP(面向对象编程)技术的又一个开发工具。该产品也称为行政信息系统或每个人的信息系统。利用该软件可以创建多维数据库(MDDB),并能生成多维报表和图形。 ●SAS/INTRNET ●SAS/ACCESS 该软件是对目前许多流行数据库的接口组成的接口集,它提供的与外部数据库的接口是透明和动态的。 第二章Base SAS软件 第一节SAS编程基础 SAS语言的编程规则与其它过程语言基本相同。 SAS语句 一个SAS语句是有SAS关键词、SAS名字、特殊字符和运算符组成的字符串,并以分号(;)结尾。 注释语句的形式为:/*注释内容*/ 或*注释内容。 二、SAS程序 一序列SAS语句组成一个SAS程序。SAS程序中的语句可分为两类步骤:DA TA步和

sas基础教程(实用版)

在SAS系统中提供了大量的菜单操作,不过它灵活与强大的功能更体现在编程上,本书的实验全部是以程序完成的,所以这里对SAS的菜单操作系统不作介绍,想了解相关内容的读者可以参考其它相关SAS书籍。 在SAS程序中,对数据的分析处理可划分为两大步骤: (1)将数据读入SAS系统建立的SAS数据集,称为数据步(DATA); (2)调用SAS的模块处理和分析数据集中的数据,称为过程步(PROC)。 每一数据步都是以DATA语句开始,以RUN语句结束。而每一过程步则都是以PROC语句开始,以RUN语句结束。当有多个数据步或过程步时,由于后一个DATA或PROC语句可以起到前一步的RUN语句的作用,两步中间的RUN语句也就可以省略。但是最后一个的后面必须有RUN语句,否则不能运行。 SAS还规定,每个语句的后面都要用符号“;”作为这个语句结束的标志。 在编辑SAS程式时,一个语句可以写成多行,多个语句也可以写成一行,可以从一行的开头写起,也可以从一行的任一位置写起。每一行输入完成后,用ENTER键可以使光标移到下一行的开头处,和我们在Windows下进行Word文档编辑相似。 例如:data zhouhm; input name $ sex$ math Chinese; cards; 王家宝男82 98 李育萍女89 106 张春发男86 90 王刚男98 109 刘颍女80 110 彭亮男92 105 ; proc print data = zhouhm; proc means data = zhouhm mean; var math Chinese; run; 绪2.1 data数据步简介

相关主题
文本预览
相关文档 最新文档