|
第1节 SAS软件简介
SAS是Statistical Analysis System(统计分析系统)的缩写, 美国于1966年开始研制SAS,并且一直在不断更新版本。本书所使用的是PC/SAS 6.04版。
SAS软件是模块式结构,最常用的3个模块分别是SAS/BASE(基础)、SAS/STAT(统计)和SAS/GRAPH(图形), 还有SAS/ETS(预测)、SAS/IML(矩阵运算)和SAS/QC(质量控制)等约20个模块。这些模块可单独使用、也可互相配合起来使用。
本书将利用前3个模块作为实现统计计算和绘图的工具,讲述统计理论、统计软件及其结合应用的方法和技巧,以期达到简单明了、实用方便、相得益彰之效果。
第2节 应用SAS的捷径
每个SAS模块都由多个可执行的文件组成,它们被称为SAS过程(SAS PROCEDURE), 用户在调用SAS过程仅具体问题之前,必须用SAS语言编写一段程序, 通过它建立起用户与SAS系统之间的联系,我们称这段程序为SAS引导程序,简称为SAS程序(SAS PROGRAM)。应用SAS的关键就是要编写出符合各种情况的SAS程序。实现这一目的的前提条件是用户对SAS语言有较详细的了解,这对新用户来说,困难颇大。本书为广大用户提供了一条应用SAS的捷径,即“了解几个基本概念、掌握几组重要命令、调用并略加修改书中已编写好的各种SAS程序”。 许多人的实践结果证明:走这条捷径,使SAS软件的应用化繁为简、实用方便、省时省力、事半功倍。
第3节 使用SAS必需了解的几个基本概念
1. SAS程序的结构
最简单的SAS程序由一个SAS数据步(SAS DATA STEP)和一个SAS过程步(SAS PROCEDURESTEP)两部分组成。数据步以DATA语句开头, 其作用是建立SAS数据集(SAS DATA SET)。具体地说,就是建立起变量与数据之间的联系,使数据能方便地被SAS过程所利用;过程步以PROC语句开头,其作用是激活SAS过程。通常, 一个SAS程序中可包含多个SAS数据步, 也可包含多个SAS过程步。每一个SAS语句用一个分号结束,一行中可写多个SAS语句。
下面就如何实现多元线性回归分析为例,展示SAS程序的结构。
MREG1.PRG(外部文件名) MREG2.PRG(外部文件名)
数据步的第1种书写形式: 数据步的第2种书写形式:
DATA abc; DATA abc;
INPUT x1-x4 y; INFILE '盘名:文件名';
CARDS; INPUT x1-x4 y;
7 26 6 60 78.5 用这种形式书写数据步的
1 29 15 52 74.3 前提是: 将左边的13行5列数
11 56 8 20 104.3 据事先用文件名存入软盘(或
11 31 8 47 87.6 硬盘)上, 然后, 用INFILE语
7 52 6 33 95.9 句调用。如: 软盘插入A驱动
11 55 9 22 109.2 器中, 文件名为w.dat, 则
3 71 17 6 102.7 INFILE语句的具体写法是:
1 31 22 44 72.5 INFILE 'a:w.dat';
2 54 18 22 93.1 这种形式的优点是数据
21 47 4 26 115.9 步简炼, 数据可反复被调用。
1 40 23 34 83.8 下面是调用reg过程的过程步:
11 66 9 12 113.3 PROC REG;
10 68 8 12 109.4 MODEL y=x1-x4;
; RUN;
过程步与右边相同。
[说明] MREG1.PRG和MREG2.PRG都是SAS程序的外部文件名,由用户定义, 仅在存文件、调文件时有用,运行SAS时不应将它写出;
DATA是数据步开头的标志, 其后的abc(如果在程序中不引用此名,也可省略不写)为即将创建的SAS数据集名,由用户定义,最多可含8个字符(注意:数据集名通常不含“.”);
INPUT语句定义了5个变量名,每执行一次,读取全部数据中的一行,依次赋给变量x1-x4和y;
CARDS语句标志着其后为数据;如果数据中含分号,需将CARDS改成CARDS4,并用4个连续的分号“;;;;”作为数据步的结束标志;
仅有“;”的这一行是一空语句行,标志着数据步的结束;
PROC是过程步开头的标志,其后的REG为实现多元回归分析的过程名;
MODEL语句要求建立以y为因变量、x1-x4 为自变量的多元线性回归方程;
RUN语句将通知SAS系统执行它前面的每一个SAS语句。
2. SAS程序的运行方式
设SAS软件已被正确地安装在硬盘C上,子目录名为SAS;又设可完成某项任务的一个SAS程序为W.PRG,事先存在软盘上,将盘插入驱动器A中,则常用的运行方法有:
(1)非交互方式
C>cd sas(回车) C:\SAS>sas a:w.prg(回车)
稍等片刻,运行情况记录自动存在C\SAS\W.LOG中,如果SAS程序运行正常, 则运行结果自动存在C\SAS\W.LST中。运行结束后,可按如下方式操作:
C:\SAS>dir w.*(回车)
如果W.LOG和W.LST2个文件都存在,可用用户熟悉的办法对W.LST文件进行编辑、输出结果;如果只有W.LOG文件,应该查看该文件,了解SAS程序出错的原因,修改后再重新运行。
(2)交互地显示管理方式(简称SAS DMS)
C>cd sas(回车) C:\SAS>sas(回车)
进入SAS DMS后的状态是屏幕上出现了3个基本窗口,从上到下依次为OUTPUT(输出窗口)、LOG(记录窗口)和PROGRAM EDITOR(缩写为PGM, 程序编辑窗口)。此后的一切操作几乎都是在窗口内完成,SAS系统共设置了17个窗口,其它14个窗口称为特定的窗口。如:HELP(帮助窗口)、KEYS(键窗口)等。每一个窗口的入口处写着“COMMAND===>”,该行称为命令行,即发送SAS命令的地方。发命令之前,应将光标移到该行“>”号之后并且至少留一空格,然后,键入某个SAS命令,回车后生效。
SAS程序可直接从PGM窗口有行号的区域内逐行通过键盘输入(注意: 各行号后必须留1个空格,否则,输不进去!);也可从PGM窗口的命令行上用INCLUDE(缩写为INC)命令将事先存在软盘(或硬盘)上的SAS程序调入PGM窗口。当此窗口内有了SAS程序后, 只需按一下F10功能键就可运行SAS。运行情况记录立即显示在LOG窗口内,如果SAS程序有错误, 则用红色字体给出错误信息,并停止执行。一旦有了运行结果,立即显示在OUTPUT窗口内。
值得提醒的是:显示在OUTPUT窗口内的内容不适合直接送到打印机上去,因为各页均有标题,一个标题下的内容无论多么少,都将占一页,浪费打印纸。最好把它移到PGM窗口, 经过编辑后再输出。具体移动方法后面另作介绍。
(3)填空方式
一旦进入了SAS DMS状态后,可先在PGM窗口输入SAS程序的数据步,并以RUN语句结束。当按F10键后,就建立了一个临时的SAS数据集。将光标移到PGM窗口的命令行上, 键入MENU后回车,便进入了“SAS过程菜单系统”窗口,在窗口的“select option ===>”行上键入过程名,回车后显示关于该过程的一张表,按要求填完这张表,按F10键就自动生成了过程步,同时发送给SAS系统去执行。如果所填的项目符合要求,其计算结果就显示在OUTPUT窗口内;反之,可在LOG窗口内看到红色的出错信息。也可在数据步语句之后使用DM语句直接进入MENU窗口,并调用某个过程,其语句的写法是M 'menu; 过程名'; 。
3. 上述3种SAS运行方式的比较
第1种方式比第2种方式节省机器内存, 当某些SAS程序用第2种方式运行出现内存不够现象时,改用第1种方式往往有效;第2种方式十分直观,发现和修改错误都非常方便; 第3种方式很难保证每个空格都能填写正确,往往需反复填写几遍才能成功,仅当要写的过程步语句和选择项都很多时,采取这种方式产生过程步才会觉得比较省力。
4. 怎样向SAS系统寻求帮助
一旦进入了SAS DMS状态,除了正在运行SAS程序的那段时间外,可随时按F1键显示有关帮助信息,也可随时按F2键了解SAS为用户定义了哪些功能键。这两个键提供的信息相当于简明的SAS使用梳。
(1)慢速提取帮助信息
如果光标在3个基本窗口内时,按F1键(或在某窗口的命令行上键入HELP并回车)进入HELP窗口,显示屏上出现SAS/BASE中的全部过程名、其他SAS模块名以及其他有关的信息。然后可在HELP窗口的选择行上键入需进一步了解的内容(即过程名、模块名、特定内容的编号)并回车,将显示该内容的详细解释信息,还可一层层地往下查询,直到无可奉告时为止。
如果光标是在某个特定的窗口内时,按F1键,仅显示关于如何使用该窗口的有关信息。
采取这种逐项提取帮助信息的方式后,仍需逐级退出, 最后回到3个基本窗口。退出的方法是在HELP窗口的命令行上逐次使用“CANCEL(简写成CAN)”命令并回车。
(2)快速提取帮助信息
如果用户已经知道需查寻的信息所在的确切位置,当光标在3个基本窗口内时, 用下面的方法可使查询工作一步到位。在窗口的命令行上键入命令并回车,即可。如:
命 令 查 询 内 容
━━━━━━━━━━━━ ━━━━━━━━━━━━━━━
HELP BASE SAS/BASE中的全部过程名
HELP STAT SAS/STAT中的全部过程名
HELP GRAPH SAS/GRAPH中的全部过程名
HELP FREQ FREQ过程的解释信息和使用方法
HELP ANOVA ANOVA过程的解释信息和使用方法
HELP 21 SAS数据步语句
HELP 22 SAS数据书写格式和解释信息
HELP 23 SAS函数和解释信息
HELP 24 SAS全程语句
HELP 25 SAS过程步语句
HELP 31 显示管理帮助系统(SAS DMS)菜单
HELP 31 1(~6)之一 SAS DMS中6组命令表之一的信息
HELP 32(~48)之一 SAS系统中17个窗口之一的功能
━━━━━━━━━━━━ ━━━━━━━━━━━━━━━
查询结束后,只需在HELP窗口的命令行上使用一次“CAN”命令,就可快速恢复3个基本窗口。
(3)直接利用键窗口了解有关功能键的信息
在SAS DMS状态下,按F2功能键,便进入了键窗口。此窗口的作用是显示SAS系统为用户定义的全部功能键(共100个,单一键12个,组合键88个)以及部分功能键的功能。如:F1 HELP,代表F1键的功能是进入帮助窗口。用户最常用的功能键及其功能如下:
F1 HELP (进入帮助窗口) F2 KEYS (进入功能键窗口)
F3 LOG (进入记录窗口) F4 OUTPUT (进入输出窗口)
F6 PGM (进入程序编辑窗口) F7 ZOOM (放大或缩小窗口面积)
F9 RECALL (招回运行过的SAS程序)
F10 ZOOM OFF; SUBMIT(当PGM窗口内有SAS程序时,先缩小已扩大的窗口的面积,然后,发送命令。
(4)巧用键窗口━━对功能键的功能进行修改或重新定义
键窗口左边的功能键(冠以单词KEY)不可修改或重新定义, 但其右边的功能描述(冠以单词DESCRIPTION)是可以修改或重新定义的。这里所说的“功能”包括两面的内容,其一,所有合法的SAS命令; 其二,文件中常用的字符串。其区别在于字符串前必须放1个字符“~”,如:
F5 NEXT(光标跳到下一个窗口),可修改成:F5 CLEAR(清屏);
SHF F6其功能待定,现将它定义为调用菜单窗口的功能键:SHF F6 MENU,也可将其定义为一个常用的字符串:SHF F6 ~I LIKE SAS.
值得注意的是: SAS命令的第1个字符或字符串前的“~”必须与DESCRIPTION中的D写在同一列上。
欲保留修改或重新定义的功能,可在键窗口的命令行上发命令END或SAVE。
END 使修改后的功能键设置集合存盘,并移走键窗口,恢复3个基本窗口;
SAVE [文件名] 将修改后的内容用其后的文件名存盘,不移走窗口。也就是说, 可用不同的文件名去存多套功能键的设置集合,需要哪一套,就调用哪一套;
COPY [文件名] 调用由SAVE命令存入的功能键设置集合;
欲取消键窗口内修改的内容,保留原先的功能键设置集合,其命令为:CANCEL(或CAN)。
第4节 使用SAS必须掌握的几组重要命令
SAS命令很多,这里仅给出使用SAS必须掌握的几组重要的命令,详细内容请从本书附录中查找。命令后中括号里的内容为可选项,使用时中括号不应写出。
1. 显示管理全程命令(可在任一窗口的命令行上使用,回车后生效)
(1)窗口管理命令(可用HELP 31 2命令显示)
BYE(或ENDSAS) 彻底退出SAS DMS,回到SAS子目录状态;
END 保留特定窗口内修改过的内容并退出该窗口;
CANCEL 取消特定窗口内修改过的内容并退出该窗口;
X 保留窗口内信息,临时退出SAS DMS,回到DOS状态,可执行各种DOS命令;
EXIT 在使用X命令后的DOS状态下,快速返回SAS DMS。
(2)翻卷命令(可用HELP 31 4命令显示)
TOP(到顶) BOTTOM(或BOT)(到底) RIGHT MAX(右移最大量)
N (使从上到下的第N行内容成为命令行下的第1行)
(3)标记、截取和连接命令(可用HELP 31 6命令显示)
①标记命令
MARK(标记若干行); MARK CHAR(标记字符串);
MARK BLOCK(标记一矩形区域); UNMARK(取消标记)。
前3个标记命令的操作方法:先在命令行上键入命令,再把光标移至欲标记内容之首,按回车键;再在欲标记内容之尾,重复操作1次。若利用相应的功能键,则可分别将光标移至欲标记内容之首、尾各按1次功能键即可。UNMARK命令只需执行一次即可。
②截取命令
STORE [BUFFER=文件名] ; CUT [BUFFER=文件名]。
把标记后的内容直接存入缓冲区或用给定的文件名存入缓冲区。如果省略中括号里的内容,则后一次存入的内容就替代了前一次存入的内容。
STORE与CUT的区别是:用STORE时,标记后的内容仍保留在原处;用CUT时,标记后的内容从原处被切除,CUT不能在OUTPUT窗口上使用。
③连接命令
PASTE [BUFFER=文件名]
把用STORE或CUT命令存入缓冲区的内容调到光标所在的窗口里来。操作方法:先在命令行上输入命令,光标下移到有行号的编辑区域内,再按回车键。
2. 文本编辑命令之一(可用HELP 31 6命令显示)
本组命令在命令行上使用,回车后生效,其中最常用的命令有:
AUTOWRAP ON 使一行中超过136个字符部分自动移到下行;否则,将被删除;
CLEAR 清屏;
FILE 'PRN:' 把窗口内的文件送到打印机上去;
FILE '盘名:文件名' 文件存入指定的盘;
INCLUDE '盘名:文件名' 把指定的盘上某文件调入窗口。
3. 文本编辑命令之二(可用HELP 31 6 34和HELP 31 6 35命令显示)
本组命令只在PGM窗口内行号上使用,其中一部分可单独使用, 另一部分需与操作定位命令配合起来使用。如果一个完整的命令需通过2行或3行上发送命令才能完成, 则中间过程都要靠移动光标键来实现,最后按一次回车键使之生效。
(1)单行命令
①只在一行上使用的一般命令(回车后生效)
CL 把当前行上的字符由大写改成小写;
CU 把当前行上的字符由小写改成大写;
D[N] 删除自当前行起的N行,D或D1都表示只删除当前行,其他命令中N的用法与此相似;
I[N] 在当前行之后插入N个空行;
IB[N] 在当前行之前插入N个空行;
JC[N] 以第N列为中点, 使当前行内容置中;
JL[N] 自左至右的第N列为当前行的第1个字符的位置;
JR[N] 自左至右的第N列为当前行的最后1个字符的位置;
R[N] 使当前行的内容在该行之后复制N行;
>[N] 使当前行内容右移N个字符;
<[N] 使当前行内容左移N个字符;
TF[N] 自当前行起, 使相邻的所有行中的每一行上保留N个字符( 含字符间的空格);
TS[N] 将当前行分裂成两行,并使这两行之间留出N个空行。操作方法是: 先键入命令, 光标右移至欲分裂处,再按回车键。
②只在一行上使用的特殊命令(回车后生效)
COLS 在当前行上显示1个水平标尺;
MASK 标记当前行的内容,在所需之处可用I、IB命令反复获得该行的内容;
TA[N] 在当前行上设置跳格标尺,其标志是每隔N个字符处有一个T字符;
D 在键入上述3个特殊命令的行号上,键入D命令,则可取消特殊命令。
(2)2行上使用的块命令(操作方法:第2次键入命令后再按回车键)
功能:使键入命令的两行及其中间的所有行(简称为“文件块”)上的内容作同样的操作。
CCL 使文件块的字符由大写改成小写;
CCU 使文件块的字符由小写改成大写;
DD 删除文件块的全部内容;
JJC[N] 以第N列为中点, 使文件块的内容置中;
JJL[N] 自左至右的第N列为文件块的第1个字符的位置;
JJR[N] 自左至右的第N列为文件块的最后1个字符的位置;
RR[N] 使文件块的内容在该行之后复制N次;
>>[N] 使文件块的内容右移N个字符;
<<[N] 使文件块的内容左移N个字符。
(3)操作定位命令
A 即AFTER之意,操作的结果将出现在键入A的那一行之后;
B 即BEFORE之意,操作的结果将出现在键入B的那一行之前;
O 即OVERLAP之意,操作的结果将重叠于键入O的那一行之上。
(4)与操作定位命令配合使用的命令(最后一步按回车键)
①只在一行上使用的单行命令
C[N] 把自当前行起的N行内容拷贝到由A、B命令指定的位置上去;
M[N] 把自当前行起的N行内容移到由操作定位命令指定位置上去。
②在2行上使用的块命令
CC[N] 把文件块的内容拷贝到由A、B命令指定的位置上去;
MM[N] 把文件块的内容移到由操作定位命令指定的位置上去。
第5节 实际运行SAS的步骤
本节的目的是通过用SAS仅一个具体问题,展示运行SAS的一般步骤,读者可举一反三、
如法炮制。设SAS软件安装在硬盘C上,其子目录名为SAS。
第1步 开机,其先后顺序为“打印机、显示器、主机”,此时,机器所处的状态是: C>;
第2步 在“C>”状态下,进入SAS DMS状态,其方法是(小写字母由用户输入,大写也可): C>cd sas(回车); 此时的状态是:“C:\SAS>”; C:\SAS>sas(回车)
第3步 此时,机器已进入SAS DMS状态,屏幕上出现了3个基本窗口,设本章第3节中的SAS程序MREG1.PRG和MREG2.PRG已存在软盘上,现将这张盘插入A驱动器内,并将光标移到PGM窗口的命令行上,键入如下的命令:inc 'a:mreg1.prg'(回车), 此时,已将名为MREG1.PRG的SAS程序调入了PGM窗口;
第4步 根据用户的具体资料修改这段现成的SAS程序,假定用户的资料中含有8个自变量x1-x8、1个因变量y,共50行(每行9个数据),称为50个观测(observations),于是,修改方法如下:
将MREG1.PRG程序中的第2句“INPUT x1-x4 y;”修改成“INPUT x1-x8 y;”, 将光标移到第4行的行号上键入DD,再将光标移到第16行的行号上键入DD并回车, 胀删除了程序中原有的数据;再将光标移到CARDS语句所在的行号上键入I51并回车,就在该行之后插入了51个空行,用户可将50个观测一一输入,其他内容可不修改;
也可在PGM窗口内先输入50行9列数据并用文件名存在盘上,此时,只需调用并修改MREG2.PRG程序中第2句的文件名以及将第3句中的x4改为x8即可;
第5步 按F10键,便开始运行SAS程序;
第6步 如果程序中因分号使用不当或忘写等错误,当程序自动停止执行时, 按F3键进入LOG窗口,细查原因后,按F6键进入PGM窗口,再按F9键招回刚运行过的那段SAS程序进行修改, 然后,从第5步开始重新操作;
第7步 如果有了运行结果,按F4键进入OUTPUT窗口。最好用下面两种方法之一将结果调到PGM窗口进行编辑后再输出:
1. 在OUTPUT窗口的命令行上2次使用MARK命令,对输出结果进行标记, 再用STORE命令把标记后的内容存入缓冲区,按F6键进入PGM窗口,在此窗口的命令行上用PASTE命令调出刚存入缓冲区的内容;
2. 在OUTPUT窗口的命令行上使用命令: FILE '盘名:文件名'(回车),胀把输出结果存到软盘或硬盘上去了,按F6键进入PGM窗口, 在此窗口的命令行上使用命令: INC '盘名:文件名'(回车),这样就把输出结果调入了PGM窗口;
第8步 在PGM窗口编辑后的内容可直接送到打印机上去, 命令是: FILE 'PRN回车);也可存到盘上去, 命令是: FILE '盘名:文件名'(回车); 如果还要仅其他问题,可重复操作上述第3~8步;
第9步 关机,其先后顺序为“主机、显示器、打印机”。 |
|