
第1章 SAS初阶
§1.1 初识SAS
1.1.1 启动
用如下方法可以进入SAS系统的窗口运行环境:
在Win95或NT环境中,从开始菜单的程序文件夹中找到SAS系统文件夹,从中启动SAS系统。或者生成SAS.EXE的快捷方式(把SAS.EXE用鼠标右键拖到桌面),双击SAS.EXE启动。
在Windows 3.xx环境中找到SAS系统程序组中的SAS图标双击启动。
1.1.2 SAS AWS(SAS应用工作空间)
图 1 SAS AWS
启动后,出现如图 1的SAS运行界面,术语称为"SAS工作空间(SAS Application WorkSpace)"。它象其它Windows应用程序一样,在一个主窗口内,包含若干个子窗口,并有菜单条、工具栏、状态栏等。
SAS有三个最重要的子窗口:程序窗口(PROGRAM EDITOR)、运行记录窗口(LOG)、输出窗口(OUTPUT)。
程序窗口的使用类似于Windows中的记事本程序,可以在其中编辑文本文件,主要是编辑SAS程序。程序可以直接在窗口中键入,插入新行用回车,插入点光标(闪动的竖线)可以用光标键(上下左右箭头、Home、End)移动或用鼠标单击到某一处。按住Shift再按光标键可以加亮显示一块文
本,然后用复制、剪切、粘贴命令(Edit菜单中的Cut、Copy、Paste,或工具栏图标)可以复制或移动加亮显示的文本。这些编辑操作具体请参考Windows的有关文档。
运行记录窗口记录程序的运行情况,运行是成功还是出错,运行所用时间,如果出错,错在什么地方。运行记录窗口中以红色显示的是错误信息。
输出窗口显示SAS程序的文本型输出(图形输出单独有一个GRAPHICS窗口)。输出分页显示。
要把光标移动到某一窗口,可以用主菜单中的Window菜单选择要显示的窗口。用功能键F5可以切换到程序窗口,F6可以到运行记录窗口,F7可以到输出窗口。
SAS主窗口标题栏下是主菜单。SAS菜单是动态的,其内容随上下文而不同,即光标在不同窗口其菜单也不同。其中,File(文件)菜单主要是有关SAS文件调入、保存及打印的功能。Edit(编辑)菜单用于窗口的编辑(如清空、复制、剪切、粘贴、查找、替换)。Locals(局部)菜单与当
前正在进行的操作有关,如果你正在程序窗口中编辑程序,则Locals菜单有提交运行、调回修改等项,如果在运行记录窗口或输出窗口则Locals菜单项根本不出现。Globals菜单内容比较复杂,它可以打开被关闭的程序窗口、运行记录窗口、输出窗口、图形窗口,可以进入SAS提供的各个独
立模块。主菜单下是一个命令条和工具栏菜单。命令条主要是用于与SAS较早版本的兼容性,可以在这里键入SAS的显示管理命令。工具栏图标提供了常见任务的快捷方式,比如保存、打印、帮助等等。鼠标光标在某一工具栏图标上停留几秒可以显示一个说明。工具栏图标的解释如下:
Submit - 提交编辑窗口中的程序
New - 清空编辑窗口
Open - 打开文件到编辑窗口。用户指定一个文件调入到编辑窗口内。这个文件从此与编辑窗口相关联,以后的存盘操作将自动存入这个文件。
Save - 存盘,保存编辑窗口内容,注意如果此窗口已经与一个文件相联系的话此功能将覆盖文件的原有内容而不提示。
Print - 打印当前窗口内容
Print preview -打印预览。
Cut - 剪切选定文本。
Copy - 复制选定文本。
Paste - 粘贴。注意这些操作是对Windows剪贴板进行的,可以用来与其它Windows应用程序交换文本、数据等。剪切或复制到剪贴板的内容可以被其它应用程序粘贴,其它应用程序放到剪贴板的内容也可以粘贴到SAS的编辑窗口中。
Undo - 撤销刚才的编辑操作。
DOS prompt - 临时进入DOS。
Browse - 打开WWW浏览器并进入SAS公司的主页www.sas.com。
Directories - 进入Directory(目录)窗口,可以浏览各SAS目录的内容,可以浏览目录中的数据集、SAS目录的内容。
SAS/ASSIST - 启动SAS的菜单驱动界面SAS/ASSIST。
Help - 启动Windows的帮助系统进入SAS的帮助。
1.1.3 简单运行样例
假设我们有一个班学生的数学成绩和语文成绩,数学满分为100,语文满分为120,希望计算学生的平均分数(按百分制)并按此排名,可以在程序窗口输入此程序:
title '95级1班学生成绩排名';
data c9501;
input name $ 1-10 sex $ math chinese;
avg = math*0.5 + chinese/120*100*0.5;
cards;
李明 男 92 98
张红艺 女 89 106
王思明 男 86 90
张聪 男 98 109
刘颍 女 80 110
;
run;
proc print;run;
proc sort data=c9501;
by descending avg;
run;
proc print;run;
实际上,输入这样包含中文的程序最好办法不是在SAS程序窗口直接输入,因为SAS目前对中文输入的处理还不够完善,好的办法是打开一个其它的编辑程序如Windows中的记事本(在Win95中用开始菜单中的"程序 | 附件 |
记事本"启动),在记事本中复制输入的程序,然后到SAS系统程序窗口中使用粘贴命令(用Edit菜单的Paste或工具栏上的粘贴图标),把程序复制到SAS中。也可以在记事本中把编好的程序存盘,然后在SAS程序窗口用File菜单的Open命令打开保存好的程序文件。
要运行此程序,只要用鼠标单击工具栏的提交图标 ,或用Locals菜单的Submit命令。运行后,运行记录窗口出现如下内容:
50 title '95级1班学生成绩排名';
51 data c9501;
52 input name $ 1-10 sex $ math chinese;
53 avg = math*0.5 + chinese/120*100*0.5;
54 cards;
NOTE: The data set WORK.C9501 has 5 observations and 5 variables.
NOTE: The DATA statement used 0.11 seconds.
60 ;
61 run;
62 proc print;run;
NOTE: The PROCEDURE PRINT used 0.0 seconds.
63 proc sort data=c9501;
64 by descending avg;
65 run;
NOTE: The data set WORK.C9501 has 5 observations and 5 variables.
NOTE: The PROCEDURE SORT used 0.05 seconds.
66 proc print;run;
NOTE: The PROCEDURE PRINT used 0.0 seconds.
其中记录了每段程序的运行情况、所用时间、生成数据保存情况。如果有错误还会用红色指示错误。比如,最后的proc print后面的分号如果丢失,记录窗口显示如下错误:
67 proc printrun;
--------
181
ERROR 181-322: Procedure name misspelled.
错误说明为过程名错拼,但实际上是丢了分号导致print和run连成了一个词。在程序窗口用"Locals | Recall text"菜单或按F4功能键可以调回程序修改。正确运行后输出窗口出现如下结果:
95级1班学生成绩排名 3
OBS NAME SEX MATH CHINESE AVG
1 李明 男 92 98 86.8333
2 张红艺 女 89 106 88.6667
3 王变量作,而是对两个离散变量来作。比如,先把SASUSER.CLASS中变量AGE的量测水平由Int改为Nom,然后取消所有变量的选定,启动"Box Plot/Mosai Plot",选SEX为Y变量,选AGE为X变量,作图如图
16。这种图的好处是直观显示了两个变量每种取值组合的观测个数和比例。单击或双击其中一个方块可以迅速选中一个分组,比如双击年龄为11性别为女(F)的方块可以看到这一组的学生。
1.3.4 数据探索――二维
SAS/INSIGHT可以作曲线图、散点图、散点图矩阵,可以在散点图中刷亮观测。
图 17 曲线图选择变量的对话框
图 18 CO和WIND的曲线图
曲线图有一个取值由小到大的X变量,有一个或几个Y变量,以X变量为横坐标对Y变量画曲线。为了演示曲线图,打开SASUSER.AIR数据集(用"File |
Open"菜单)。这个数据集是德国某城市一周的每小时记录的空气污染情况。变量DATETIME是记录的日期时间,为特殊SAS格式数据,变量DAY为星期几,HOUR为几点钟,CO、O3、SO2、NO、DUST分别为一氧化碳、臭氧、二氧化硫、一氧化氮、粉尘的浓度,WIND为风速。要画一氧化碳的曲线图
,可以在未选任何变量的情况下用"Analyse | Line Plot",弹出变量对话框(图
17),选DATETIME为X变量,CO为Y变量,可以画出CO的时间序列曲线图。单击曲线上某一个点可以显示其观测序号,双击可以检查观测。如果想单击曲线上点时不显示观测序号而显示记录时间是几点,可以在曲线图窗口中选主菜单的"Edit | Window |
Renew",可以再弹出变量窗口,选HOUR并按Label钮把时间指定为标签变量。这时在作的CO的曲线图上单击一个点显示的就是记录时间了。可以看出CO的高峰一般在早晨8点和晚上17点-21点。用图形菜单(右键或单击向右三角)中的Observations可以画出各个数据点的符号。
可以在图上同时画出多条曲线。比如,想考察风速对污染的影响,在图形窗口中再用主菜单的"Edit | Window | Renew",把WIND也作为Y变量,画出的图就有两条不同颜色的曲线,单击外面的CO变量符号和WIND变量符号可以加重显示对应的曲线以区分这两条曲线。见图
18。图中被选的点是风速的最高值,时间是11点。注意在一条曲线中被选在另一条曲线中也被选。从此图可以看出风速对污染有较明显的影响,风大时污染较轻。
图 19 体重对身高的散点图
散点图也有一个X变量和一个Y变量,但不要求X变量有从小到大的次序,画图不用连线而是用散点画出每一对X、Y坐标。比如对SASUSER.CLASS,我们希望通过画图了解身高和体重的关系。在数据窗口中先选定体重(Y轴变量)再附加选定身高(X轴变量),启动菜单"Analyze | Scatter
Plot",就可以生成以体重为纵轴以身高为横轴的散点图(见图 19)。从图可以看出体重与身高有明显的线性相关关系。
为了解哪一个点代表哪一个学生,单击一个点可以显示其观测序号,双击可以检查观测。为了在单击时可以显示学生名字而不是观测序号,需要把NAME指定为标签变量。这可以在生成散点图时先不在数据窗口选X、Y变量而是直接启动"Analyze | Scatter
Plot"菜单,弹出变量对话框,在其中选X、Y变量并把NAME指定为Label变量。这时,单击散点图中最左下角的那个点可以显示名字Sandy,单击最右上角的那个点可以显示Philip。选多个点可以用附加选中的办法(Shift或Ctrl单击)。
图 20 年龄、身高、体重的散点图矩阵
为了在散点图中选定多个点,SAS/INSIGHT还提供了一种称为"刷亮(Brushing)"的操作。在图中拖动鼠标光标可以拖出一个小长方形,在这个长方形中的点都被选中,称它为刷子。选中的点在、Curves菜单被开放。在Tables菜单中可以选加一些统计表,比如Frequency
Table是频数表,为每一观测值的频数、累计频数、百分比,C.I. for Mean可以计算均值的各种置信度的置信区间,Location Tests用于检验均值为某常数值(一般是0)的假设,可以用t检验、符号检验、符号秩检验,Gini's Mean
Difference是变量分布分散程度的一种稳健估计,计算公式为 ,对正态分布其期望值为 。Trimmed Mean, (1/2)N计算去掉最大(1/2)N个和最小(1/2)N个值后的平均值,(1/2)N可以指定为1,2,3或自定值,这是变量中心位置的一种稳健估计,但估计量本身不再服从正态分布。Trimmed
Mean, (1/2)Percent指定去掉最大、最小的百分之多少再计算均值。Winsorized Mean是把最大的(1/2)N个替换成由大到小第(1/2)N+1号值,把最小的(1/2)N个替换成由小到大第(1/2)N+1个值,然后计算的均值,它也是一种稳健的均值估计。
图 28 GPA分数的QQ图
图 29 身高的QQ图
图 30 GPA分布直方图
图 31 左偏、右偏、轻尾、重尾的QQ图
在Graphs菜单中已选了直方图、盒形图,还可以作QQ图,即分位数-分位数图。图
29为身高的正态QQ图,其中画出了班上19个学生的19个点,每个点的纵坐标为变量值,而横坐标为该值的累计百分比频数对应的标准正态分位数。比如,身高最低的一个为51.3,其累计百分比频数(即51.3的经验分布函数值)为5.3%,即身高小于51.3的占5.3%,而标准正态分布的0.053分
位数为-1.84570,所以此点的横坐标即-1.84570。如果身高服从正态分布,QQ图的散点应大致在一条直线附近变动。QQ图的各种不同形状能够反映出变量分布的偏斜情况和重、轻尾情况。在QQ图中也可以选观测、刷亮等。画出QQ图后选主菜单中的"Curves | QQ Ref
Line"可以为图中散点画一条拟和直线。
图 29的身高的QQ图显示身高基本服从正态分布。如果我们SASUSER.GPA中GPA分数的QQ图(图
28),就可以看到GPA的分布呈现左偏的情况。这是因为,在QQ图的左下端,GPA散点的走向比正态(图中直线)偏下,说明GPA分布的左尾比正态长;在QQ图的右上端,GPA散点的走向比正态偏右下,说明GPA分布的右尾比正态短,即分布左偏。作为验证,可以看一看图 30的直方图。
图 32 参数密度估计设定
图 31给出了与正态相比左偏、右偏、轻尾、重尾的分布的QQ图的典型模式。
除了可以作正态分布QQ图外,还可以作对数正态、指数分布、威布尔分布的QQ图。对数正态要指定参数Sigma,威布尔分布要指定形状参数C。
图 33 叠加了正态密度估计的直方图
SAS/INSIGHT为研究一维变量分布除画直方图外还提供了两类分布密度估计:参数估计和非参数估计。参数估计可以拟和正态、对数正态、指数、威布尔分布密度。非参数估计使用核估计。
比如,为了估计身高的正态密度并把密度曲线叠加在直方图上,选"Curves | Parametric Density",弹出对话框图 32,指定正态分布且方法为用样本估计分布密度参数。按OK后作出的图见图 33。
图 34 分布密度估计的参数表(部分)
为了作身高密度的核估计图,选"Curves | Kernel Density",弹出一个对话框,可以选三种核函数:正态核、三角核、二次函数核,可以自动拟和最优的密度估计(方法为AMISE)或者自己指定平滑参数C。见图 33。
图 35 经验分布函数及95%置信限
作了密度曲线图后在图形下面将出现显示密度估计主要参数的表格,见图
34。单击其中的曲线标志可以加亮显示图中的曲线。对参数密度估计,给出了估计的参数,比如正态的均值、方差;对核估计,给出了核函数类型,及平滑参数值。有些参数旁边有一个滑块,可以手工选择参数的值。比如拖动核估计中的平滑参数,此参数变小时估计的曲线变粗糙,变大时
曲线变光滑。
在"Curves"菜单中还提供了对样本经验分布函数的估计。选"Curves | Empirical CDF"即绘制样本经验分布函数。选"Curves | CDF Confidence Band"并选一个置信限可以在经验分布函数两边画分布函数的置信限,见图 35。
用经验分布函数估计分布函数相当于用直方图估计分布密度。分布函数也可以用参数分布函数(如正态分布)来估计。选"Curves | Parametric CDF"并选分布类型可以画出估计的分布函数。图 35中的光滑曲线即用正态分布估计身高的分布函数。
图 36 分布的检验
SAS/INSIGHT还可以进行分布检验,可以检验数据是否来自某一类分布(参数未知),或检验数据是否来自某一特定分布(参数已知)。选"Analyze | Test for Distribution",并选择是检验正态、对数正态、指数、威布尔分布中哪一个,选正态后,得到图
36的结果。它给出了分布类型、估计的分布均值、标准差,及Kolmogorov D统计量的值,并给出了检验H0:样本来自正态分布的检验p值(Prob > D)为>.15,说明检验结果不显著,不能否定正态假设。
图 37 检验是否标准正态分布
如果要检验数据是否来自某一特定分布,选"Curves | Test for a Specific Distribution",并指定分布类型、分布参数,可以计算检验的Kolmogorov D统计量及相应p值。图 37是检验身高是否标准正态分布的结果,可以看出p值为0.0001高度显著,应该否定数据来自标准正态的假设。
说明:在SAS中,统计假设检验的结果一般用检验的p值给出。这与我们习惯的做法稍有不同,以单正态总体的均值检验为例。假设我们要检验SASUSER.CLASS中学生的身高是否均值为零(这当然不可能,我们为简单起见用这种假设),设总体服从 ,要检验的零假设为
,水平0.05,统计量使用t统计量
,一般我们用的假设检验方法定否定域为W={|t|>C},其中C为n-1自由度t分布的双侧0.05分位数(Pr{|t|>C}=0.05),当用样本算出的t统计量的值(如t=A)落入否定域时(|A|>C)否定零假设。在SAS中不需要这样指定否定域,它可以先用样本计算出t统计量的值(A),如果这个A绝对值
很大就否定零假设,t统计量绝对值值是不是很大可以用这样一个p=Pr{|t|>|A|}来衡量,p是一个0到1之间的数值,显然|A|越大,p越小。p<0.05与|A|>C是等价的。所以,如果p小于0.05,就否定零假设,称检验结果是显著的。否则不否定零假设。对SASUSER.CLASS中HEIGHT变量,在其分布
窗口中选菜单"Tables | Location Tests"并从弹出的对换框中选中t检验,要检验的均值为0,得到的结果见图 38。计算得到的t统计量值为A=52.9971,p值为Pr{|t|>52.9971}小于等于0.0001。因p值小于0.05所以结果是否定零假设,结论是身高均值不为零。
SAS/INSIGHT还提供了曲线拟和、回归、logistic回归、Poisson回归、相关分析、主成分分析等高等统计功能,我们在后面再陆续介绍。
图 38 身高均值为0的t检验结果
练习
1. 启动SAS,认识界面。用F5、F6、F7切换三个窗口。
2. 输入1.1.3的例子。在运行记录窗口查看有无错误。有错时回到程序窗口用F4调回程序修改。
3. 打开Libraries窗口查看各数据库的内容列表。
4. 启动SAS/INSIGHT,打开SASUSER.GPA数据集。作各变量的直方图,查看其分布情况并简答。把GPA数据集按性别排序,同性别内按GPA分数由大到小排序。
5. 用数据窗口输入C9501数据集。
6. 研究GPA分数的分布。说明极端值情况。在纸上画出GPA的盒形图,并说明如何解释。通过直方图、盒形图、各统计量、分布检验结果简述GPA分布的特点。
7. 给男女生观测指定不同颜色。画GPA对HSM的散点图。画各数值型变量的散点图矩阵。画HSM、HSS、HSE的三维散点图。简述各变量间的直观的相互关系。