SAS常用统计分析教程(第2版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-14 17:14:18

点击下载

作者:胡良平

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

SAS常用统计分析教程(第2版)

SAS常用统计分析教程(第2版)试读:

作者简介

胡良平 1955年出生,教授,博士生导师,曾任军事医学科学院研究生部医学统计学教研室主任和生物医学统计学咨询中心主任,现任国际一般系统论研究会中国分会概率统计系统专业理事会常务理事,第九届中国现场统计研究会理事,中国生物医学统计学会副会长,《中华医学杂志》等10余种杂志编委,北京大学口腔医学院客座教授,国家食品药品监督管理局评审专家;主编统计学专著42部,参编统计学专著10部,总字数超过了1.5亿字;发表第一作者学术论文220余篇,发表合作论文130余篇,获军队科技成果和省部级科技成果多项;参加并完成三项国家标准的撰写工作;参加两项国家科技重大专项课题研究工作;在从事统计学工作的近30年中,为几千名研究生、医学科研人员、临床医生和杂志编辑讲授生物医学统计学,在全国各地作统计学学术报告100余场,举办数十期全国统计学培训班,培养多名统计学专业硕士和博士研究生;近几年来,参加国家级新药和医疗器械项目评审数十项、参加100多项全军重大重点课题的统计学检查工作;归纳并提炼出有利于透过现象看本质的“八性”和“八思维”的统计学思想;独创了逆向统计学教学法和三型理论。擅长科研课题的科研设计、复杂科研资料的统计分析与SAS实现、各种层次的统计学教学培训和咨询工作。

内容简介

本书内容丰富且新颖, 适用面宽且可操作性强。涉及SAS软件基础和五种高级编程技术、 统计设计中关键技术的SAS实现、 定量与定性资料差异性和预测性分析。这些内容高质量、 高效率地解决了实验设计、 统计表达与描述、 各种常用统计分析、 现代回归分析、 SAS高级编程技术和SAS实现及结果解释等人们迫切需要解决却又十分棘手的问题。

本书第1、 2篇共7章, 介绍了SAS软件应用入门、 SAS语言基础、 五种SAS高级编程技术, 介绍了用SAS实现实验设计的关键技术(包括样本含量与检验效能估计、 随机化和直接生成设计类型); 第3、 4篇共8章, 对各种单因素和多因素设计下定量与定性结果进行差异性分析; 第5、 6篇共16章, 对定量与定性结果提供了数十种预测性分析方法, 包括定量和定性原因变量的判别分析。还有一些配套的辅助资料(实例数据等), 放在华信教育资源网www.hxedu.com.cn上, 便于读者查询。

本书适合需要学习和运用实验设计、 统计表达与描述和统计分析及SAS实现的本科生、 研究生、 博士生、 科研和管理工作者、 临床医生和杂志编辑学习和使用。

编委会

主编 胡良平

审校 高辉

副主编 柳伟伟 周诗国 胡纯严 郭 晋 李长平 葛 毅

编委(以单位及姓氏笔画为序)

山西医科大学余红梅 张岩波 郭东星

中山医科大学王 霄 刘明华 张晋昕 张熙 杨业春 薛允莲

中日友好医院周诗国

天津医科大学李长平

北京大学医学部 曹波

军事医学科学院 王琪 刘一松 孙日扬 吕辰龙 柳伟伟

胡完 胡良平 胡纯严 郭辰仪 郭春雪

解放军卫生信息中心 葛毅

解放军95969部队 高辉

解放军第273医院 程瑞专

武汉大学 毛宗福 崔丹

武警后勤学院 张泽 武佳

济南军区疾控中心 李子建

首都医科大学刘惠刚 郭晋 陶丽新

PPD医药公司 毛玮

第2版前言

在第1版于2010年6月由电子工业出版社正式出版后的2~3年间,此书经受住了市场的考验,得到了广大读者的褒奖、支持和鼓励;大约在2013年下半年,因市场上脱销了此书,故出版社征求笔者意见后,重印了数千册。最近,笔者在主讲全国广义综合评价统计学培训班期间,听见部分学员说此书在全国各大网店上缺货了。然而,早在2014年年底,负责此书出版的编辑就预见到了可能出现脱销现象,并敦促笔者抓紧时间修订。因为SAS软件内容更新很快,第1版主要基于SAS 6.1.3版本,而现在,SAS 9.2和SAS 9.3版本较之前增添了许多新功能。另外,第1版出版后,在使用过程中也发现了个别不妥和疏漏之处,有必要对第1版中的差错之处进行纠正;同时,有必要结合SAS软件的特点和实际使用统计学的需求,对全书内容和布局进行必要的修改、补充和调整。

在第2版中,增加了两篇内容,即第1篇“SAS软件及相关知识介绍”(第1章保留第1版的内容,第2章“SAS语言基础介绍”和第3章“SAS高级编程技术介绍”是新增的)和第2篇“统计设计中关键技术的SAS实现”(第4章“统计设计核心内容介绍”是必须交代的概念,第5~7章是实验设计中可用SAS实现的三个关键技术,即样本含量和检验效能估计、随机化和生成实验设计类型)。为了避免内容上的重复,删除了第1版中的第46章和第47章。值得一提的是,在第2版的第3章中,介绍了5种SAS高级编程技术:SAS ODS、SAS宏、SAS/SQL、SAS数组和SAS/IML。这些内容极其有用,掌握它们,标志着SAS用户SAS软件水平比较高,使用SAS的技能比较强。

除了上述有大幅度调整的内容之外,在第2版中,还对第1版中其他章节做了一些必要的修改和增减。例如,第2版的第8章,在第1版的第2章基础上增加了三节(特别是第8.5节,新增了实用价值很高的内容,即“成组设计一元定量资料三种特殊的比较——优效性、非劣效性和等效性t检验”)、修改了一节;第2版的第10章第10.11节,在第1版的第4章第4.11节的基础上补充了“具有一个重复测量因素的两因素设计的实例及SAS实现”,因为这是实际工作者最常使用的一种重复测量的设计类型;第2版的第13章,在第1版的第7章基础上增加了第15节,即“成组设计一元定性资料三种特殊的比较——优效性、非劣效性和等效性t检验”,这又是一个实用价值很高的内容;第2版的第16章和第19~22章,是在第1版的第10章和第13~16章基础上做了较大篇幅的补充,使之进一步完善和实用;第2版的第23章和第24章是由第1版的第17章扩展而成的,使条理更加清楚,便于读者学习和使用。另有些内容放于后续出版的《SAS高级统计分析教程(第2版)》中。

为方便读者查阅,本书还提供配套的辅助资料,包括实例数据等,可登录华信教育资源网www.hxedu.com.cn免费注册下载。

本书中有大量的程序语句、输出结果和计算公式,对于其中的变量,为了方便读者阅读,避免歧义,不再区分正、斜体,而是统一采用正体,特此说明。

在第2版即将出版之际,笔者情不自禁地要提及:本室2013级和2014级硕士研究生刘一松、胡完和郭春雪,他们不仅帮助完成了新增的第2~7章内容,还对全书做了认真的校对;最后,请允许笔者感谢直接和间接为此书第1版和第2版付出过辛勤劳动的所有同志和朋友!

由于笔者水平有限,书中难免会出现这样或那样的不妥,甚至错误之处,恳请广大读者不吝赐教,以便再版时修正。为便于与读者沟通和交流,给出笔者邮箱地址和有关网址:lphu812@sina.com;www.statwd.com;www.huasitai.com。主编 胡良平于北京军事医学科学院生物医学统计学咨询中心2015年5月29日

第1版前言

众所周知,统计学内容非常丰富,学习和正确使用它的难度很大;SAS软件功能非常强大,适用面极宽,SAS语言又十分繁杂,学习和全面掌握其用法并非易事;显然,实际工作者要想在较短的时间内,学会用SAS软件方便快捷且正确地解决各种实验设计、统计表达与描述、常见和多元统计分析、现代回归分析、数据挖掘和基因表达谱分析等问题,几乎是天方夜谭,然而,本书却使其成为现实!

笔者有何灵丹妙药呢?“面向问题”的思维模式和写作手法是解决复杂问题并使其化繁为简、实用方便的“锦囊妙计”。本书各章针对拟解决的每个具体问题,首先给出“问题、数据和统计分析方法的选择”,接着,用编制好的SAS程序分析给定的资料,并给出程序修改指导、主要输出结果及其解释。本书正文内容共8篇47章。第1篇对定量结果进行差异性分析;第2篇对定性结果进行差异性分析;第3篇对定量结果进行预测性分析;第4篇对定性结果进行预测性分析;第5篇是多变量间相互与依赖关系分析;第6篇是变量或样品间亲疏关系或近似程度分析;第7篇是数据挖掘技术与基因表达谱分析简介;第8篇用编程法绘制统计图与实现实验设计。各章末尾均注明参编者详细名单。值得一提的是,本书中的所有计算基于SAS 9.2版本,少量SAS过程(特别是涉及SAS/Genetics模块)在SAS 9.2以前的环境下不能正常运行。

与本书配套光盘上的内容有:附录1是与SAS语言有关的内容简介,包括第48章SAS语句简介、第49章SAS过程简介、第50章SAS函数简介、第51章SAS宏简介、第52章SAS ODS简介、第53章SAS SQL简介、第54章SAS数组简介和第55章SAS/IML简介;附录2是四个非编程模块简介,包括第56章SAS/ASSIST模块用法简介、第57章SAS/ANALYST模块用法简介、第58章SAS/INSIGHT模块用法简介和第59章SAS/ADX模块用法简介;附录3是数据挖掘技术与基因表达谱分析,包括第60章数据挖掘的概念及常用统计分析技术、第61章基因表达谱的概念及数据分析技术和第62章生物信息学;附录4是各章实例和数据;附录5是各章SAS程序;附录6是各章SAS输出结果;附录7是各章计算原理和计算公式;附录8是各章参考文献;附录9是胡良平统计学专著与配套软件简介。

在本书即将出版之际,笔者真挚地感谢为本书做出过突出贡献的来自全国10多所高等院校的教授、副教授和青年学者,如山西医科大学张岩波、余红梅和郭东星教授,中山医科大学张晋昕教授,武汉大学毛宗福教授,哈尔滨医科大学李霞和张瑞杰教授,第三军医大学易东教授,首都医科大学郭秀花教授,北京大学医学部曹波副教授,北京邮电大学张晓航副教授等;还要感谢所有为本书付出过辛勤劳动的人们,他们的名字被写在本书的编委会名单中。特别是高辉、柳伟伟、周诗国、郭晋为本书的审阅工作付出了大量细致而又卓有成效的劳动,而本室2009级四名硕士研究生(鲍晓蕾、贾元杰、关雪、梦冰)也为本书的校对做出了很多贡献。正是由于他们的积极参与、不懈努力和真心奉献,才使这部历时4年的专著能够问世!

由于笔者水平有限,书中难免会出现这样或那样的不妥,甚至错误之处,恳请广大读者不吝赐教,以便再版时修正。主编 胡良平于北京军事医学科学院生物医学统计学咨询中心2010年1月14日第1篇SAS软件及相关知识介绍第1章SAS软件与SAS用法简介

由于SAS软件产品很多,不同产品用法不尽相同。本章仅围绕与统计学内容密切相关的方面,扼要介绍SAS软件及与使用SAS有关的基本概念和用法。本书中绝大部分内容都属于详细介绍如何用SAS软件实现各种统计分析及其结果解释,本章仅是这些详细内容的一个缩影。确切地说,本章重点是介绍全书中其他章节不做详细介绍的与统计学应用密切相关的一些“基本常识”和“小知识点”,为读者顺利学习其他各章做一点铺垫。1.1 SAS软件简介1.1.1 SAS软件结构

SAS软件采取模块式结构,每个模块可被称为一个SAS产品。有些SAS产品中仅有具体的SAS过程(即编译后的SAS程序),如SAS/STAT;有些SAS产品中不仅有SAS过程,还有其他内容,如SAS语言、SAS窗口、SAS宏、SAS SQL等,见SAS/BASE;有些SAS产品本身就是一个功能比较齐全的软件,可以完成一系列相关的功能,如SAS/ASSIST模块、SAS/ANALYST模块和SAS/INSIGHT模块等;还有些SAS产品是其他SAS产品的开发工具,如SAS/AF等。1.1.2 SAS界面简介

不同版本的SAS软件,其界面不尽相同。比较新的SAS软件(SAS 9.3)的主界面如图1-1所示。

由图1-1可知,在主界面上,顶部有两行,分别为“菜单栏”和“工具栏”,左边有一个“SAS资源管理器”窗口,与它重叠的一个窗口叫“结果”窗口;右边有两个窗口,上方的窗口叫“日志”窗口,下方的窗口叫“程序编辑器”窗口,通过顶部菜单条中的“窗口”选项,可以切换到其他窗口,如“输出”窗口。

可以说,基本的SAS窗口有“SAS资源管理器”、“结果”、“程序编辑”、“日志”和“输出”窗口,但另外还有30多个窗口可供用户处理打印和微调SAS会话之类的操作。这些窗口的名称和窗口命令的详细列表从略。若用户想获得此列表,可通过下面的方法实现:先选中主界面第2行工具栏最后一个选项(图标为一本书),即帮助(help)。然后按照“帮助(help)→SAS产品→Base SAS→SAS窗口引用→SAS窗口索引”的步骤显示全部SAS窗口列表。图1-1 进入SAS 9.3后的主界面1.1.3 SAS过程与SAS程序

SAS过程是SAS软件中经过编译后的程序,这些程序解决问题所依赖的理论和方法是被公认的,因此,可以做到标准化、程序化和系统化。然而,用户要解决的问题却是千变万化的,对于用户的数据是什么,存放在何处,都是事先无法预知的。用户在调用某个具体的SAS过程之前,必须将上述信息传递给SAS系统,这些信息必须依据SAS语言规则来组织,它们被称为SAS引导程序,简称为SAS程序。1.1.4 运行SAS软件的两种常用方式

在SAS系统中运行SAS软件通常有两种方式。第一种是非编程法(或称为菜单驱动法),即用户不需要编写SAS程序就可以直接调用SAS过程实现希望达到的目的。事实上,当用户通过菜单驱动系统选择某些项时,SAS系统内部就在进行自动编程(即自动产生SAS程序),当用户的选择工作结束时,SAS程序也就全部被产生出来,故也实现了用户的目的。但并非所有的任务都能通过此法来实现。第二种是编程法,即用户亲自在“程序编辑”窗口中写SAS程序(或直接调用别人事先写好的SAS程序)并提交给SAS系统执行。提交SAS程序的方法为按图1-1中上方第2行功能键倒数第4个图标(一个小人图像)。

本章仅介绍如何用编程法运行SAS软件。1.1.5 SAS程序结构

SAS程序通常由两部分组成:一部分用于提供待分析的数据,称为SAS数据步;另一部分调用SAS系统中已编译过的能处理某个具体问题的真正程序,称为SAS过程步。一段SAS程序可以有多个SAS数据步和多个SAS过程步,有时,也可以仅有其中的一种。若仅有SAS数据步,就需要利用SAS语言编写程序,以达到某个特定的研究目的;若仅有SAS过程步,必须事先提供可供调用的数据(称为SAS数据集)。先通过下面的一个简单实例,来直观了解这些抽象的概念。【例1-1】 两总体率差异性检验问题。从两个同类和规模相近的大工厂里随机地各抽取254个相同规格的零件,其中甲厂出现的次品数为5个;乙厂出现的次品数为10个。请问:甲、乙两工厂生产的这种零件的次品率之间的差别是否具有统计学意义?【分析与解答】 这是两样本率比较问题,更确切地说,是关于两个总体率是否相等的假设检验问题,通常称为四格表资料的统计分析。可通过在“SAS编程”窗口中输入下面的SAS程序来实现,设程序名为SASTJFX1_1.SAS。

程序说明与修改指导:(1)SAS数据步。从“DATA rate;”语句开始到第一个“RUN;”语句结束的这一段SAS程序被称为SAS数据步,其功能是创建SAS数据集,即为SAS系统提供待分析的数据所需要的SAS程序,包括与数据有直接联系的变量名。这里,变量a代表工厂类别,即代表两行的总名称,a=1代表第一行上的甲工厂、a=2代表第二行上的乙工厂;变量b代表产品检查结果,即代表两列的总名称,b=1代表次品、b=2代表合格品;f代表与特定工厂及特定检查结果对应的产品数,即四格表资料中每个格子上的频数,如249代表来自甲工厂的合格品。(2)SAS过程步。介于“ODS HTML;”与“ODS HTML CLOSE;”两语句(其作用是使SAS输出结果以网页格式呈现)之间的语句段被称为过程步,即从“PROC FREQ DATA=rate;”到最后的“RUN;”语句的这段SAS程序被称为SAS过程步,其功能是调用SAS软件中能达到用户要求的真正程序(即FREQ过程)并产生相应的输出结果。1.1.6 简单SAS程序中的SAS语句简介

全部SAS语句内容十分丰富,因篇幅所限,这里仅介绍SAS程序SASTJFX1_1.SAS中所涉及的几个SAS语句的大致含义。

每个SAS语句以分号(注意:必须是英文状态下的分号)结束,一行上可写多个SAS语句;不区分字母的大小写。上节这段SAS程序的数据步涉及8种SAS语句,现扼要介绍如下。(1)DATA语句,创建一个名为rate的临时SAS数据集(一旦退出SAS系统,它就消失了)。(2)DO语句,循环体的起始语句。

DO语句与END语句成对出现,构成一个循环体。在上节SAS程序中,第一个DO语句与第二个END语句构成一个外循环,第二个DO语句与第一个END语句构成一个内循环。循环体的功能是创建标识性变量,同时使循环体内部的语句被重复执行规定的次数。

两个DO语句中的a和b被称为循环变量,DO语句中TO前面的数被称为循环变量将取的最小值(或起始值),TO后面的数被称为循环变量将取的最大值(或终止值)。这段SAS程序中外循环变量执行两次,内循环变量先后各执行两次,故对循环体内的两个语句而言,总共被执行了4次。(3)INPUT语句,创建一个名为f的变量,通过它去读取CARDS语句和空语句(即独占一行的分号)之间的数据,该语句中的“@@”为指针控制符,当INPUT语句中变量的个数少于一行上数据个数时,必须加上这两个符号,以确保完整地读入全部数据。

若INPUT语句中包含字符型变量,例如,若数据中性别变量SEX的具体取值为SEX=MALE代表男性、SEX=FEMALE代表女性,则在INPUT语句中,变量SEX应写成“SEX $”。若数据中第1列为人的姓名,其中最长的姓名占18个字符,不仅要将NAME写成“NAME $”,还应在INPUT语句前加一个定义字符型变量长度的语句,即“LENGTH NAME $ 18.;”。(4)OUTPUT语句,即输出语句,将INPUT语句变量f读取的每一数值送到循环体外面去(即放入计算机缓冲区中),以免后读取的数据将先读取的数据覆盖掉。(5)END语句,循环体结束语句。(6)CARDS语句,标志着其后为数据。(7)空语句,以一个“;”独占一行的语句被称为空语句,标志着数据行的结束。千万不要将这个分号与最后一个数据写在同一行上。(8)RUN语句,SAS数据步中的该语句标志着SAS数据步的结束。此语句可以不写,但写上显得完整。

上节这段SAS程序的过程步涉及4种SAS语句,现扼要介绍如下。(1)PROC语句,它是SAS过程步开始的标志,其后跟随着一个具体的SAS过程名,本例中为FREQ,它是用于分析定性资料的一个SAS过程,其后写“DATA=rate”,它是一个选择项,意味着待分析的SAS数据集名为rate。若在此之前程序中只有一个数据集,可以不加此选择项。(2)WEIGHT语句,指明SAS数据集中哪个变量代表列联表资料中各格上的频数,本例为变量f。(3)TABLES语句,指明SAS数据集中哪个定性变量为行变量(本例为a)、哪个为列变量(本例为b),“/”代表其后为选择项,2CHISQ选项要求FREQ过程对SAS数据集中的数据进行χ检验。(4)RUN语句,SAS过程步中的该语句标志着SAS过程步的结束,此语句不可省略。

初学者只需将自己的四格表资料中的4个数正确地替换掉此段程序中的4个数,将SAS程序提交给SAS系统执行(按SAS窗口上方第二行菜单条倒数第4个按钮,即小人像)即可。

何为正确替换?就本例而言,来自一个工厂的两个数据必须写在同一行(或列)上,而同一种检查结果必须写在同一列(或行)上。还应注意:检查结果必须按“次品与合格品”频数来表达,不能是“次品数与被检查总数”。1.1.7 SAS语言简介

1.SAS语言概述

在编写像SASTJFX1_1.SAS那样的SAS程序时,所涉及的全部内容可概括为SAS语言。以笔者之见,SAS语言由基本SAS语言(如SAS文件、基本SAS语句、常用SAS函数、SAS数组和SAS过程等)和高级SAS语言(如宏、SAS SQL、SAS ODS、SAS/IML等)两部分组成。这些内容十分丰富,需要大量篇幅才能对它们做一粗略的介绍。详细内容请查阅SAS说明书或从SAS软件的帮助窗口中查询,下同,不再赘述。

2.SAS函数概述

SAS中提供的常用SAS函数近500个,如求-12.3的绝对值,其对应的SAS语句为:“Y=ABS(-12.3);”,也可这样写:“X=-12.3;Y=ABS(X);”;再比如,求49的平方根,其对应的SAS语句为:“Y=SQRT(49);”,也可这样写:“X=49;Y=SQRT(X);”。有些函数使用起来就没有这么简单了,因为那些函数中可能带有多个参数,需要搞清楚这些参数的含义,才能正确调用那些函数,获得用户需要的结果。

3.SAS过程概述

SAS软件中有30多个模块,每个模块中一般都有几十个SAS过程。这些SAS过程都能完成些什么任务,如何正确调用这些SAS过程,也不是轻而易举能交代清楚的。像SASTJFX1_1.SAS中所调用的SAS过程名为“FREQ”,总共写了4个SAS语句即可完成,其实,仅这一个SAS过程的全部语句和选择项所涉及的内容就相当多,不花上大约一周时间,可能无法全部掌握它。1.1.8 SAS数据集简介

1.SAS数据集的概念

无论是采用非编程法还是编程法运行SAS,首先都必须创建SAS数据集。直接在SAS编辑窗口录入原始数据,将其存储在某个外部设备上,只能称其为一个外部数据文件,不能称其为SAS数据集。何为SAS数据集呢?数据只有经过SAS系统加工后并按特定方式存储才能被称为SAS数据集,它将变量名及其取值(即具体数据)有机地结合在一起。

2.SAS数据集的种类

SAS数据集分为两类:一类被称为临时SAS数据集(如程序SASTJFX1_1.SAS中的数据集rate),它被存储在SAS/WORK库(即文件夹)中,一旦退出SAS系统,它就消失了;另一类被称为永久SAS数据集,即使退出SAS系统,它仍被保留。这种数据集必须被保存在非SAS/WORK库中,可以是SAS系统默认的某个库,也可以是用户自己创建的某个库(即文件夹)。

3.创建SAS数据集的方法

创建临时SAS数据集很简单,只需要像程序SASTJFX1_1.SAS那样去做就可以了。下面介绍一种创建永久SAS数据集的方法。【例1-2】 创建永久SAS数据集的方法。假定在D盘上有一个文件夹名为SASTJFX,试将程序SASTJFX1_1.SAS中的数据步改造成能创建永久SAS数据集,并将永久数据集存储在D盘SASTJFX文件夹中。【分析与解答】 所需要的SAS数据步如下,设程序名为SASTJFX1_2.SAS。

程序说明:LIBNAME语句是创建文件关联名的重要语句,其后引号中的内容为路径(包括盘符和文件夹名),table是用户自己取的关联名(一般不要超过8个字符),它就代表其后所写的路径。在DATA语句中,写“table.rate”,就意味着要创建一个名为rate的永久SAS数据集,它被存储在D盘SASTJFX文件夹中,存储后的实际数据集名为:rate.sas7bdat。

4.SAS数据集名的种类

通常,SAS数据集名有两类:一类被称为“一词名”,另一类被称为“两词名”。如上所述,临时SAS数据集为一词名(如rate),而永久SAS数据集为两词名(如table.rate)。在“一词名”中又可细分为以下三种。(1)用户自己取的一个词(如rate)。(2)直接将DATA语句写成“DATA;”的形式,用户未给数据集取名,SAS系统会自动给数据集取名,当执行一次SAS数据步后,系统将所创建的SAS数据集取名为DATA1,再运行一次,取名为DATA2……(3)使用SAS系统保留的特殊数据集名,如_DATA_、_NULL_和_LAST_。可以写成“DATA_DATA_;”,与写成“DATA;”是等价的,将给各次创建的数据集依次命名为DATA1,DATA2,…;若写成“DATA_NULL_;”则表明SAS系统将执行数据步,可用“PUT”等SAS语句输出中间结果,但观测值并不被写入SAS数据集_NULL_,这样可以节省计算机资源;用“DATA_LAST_;”时,表明在此之前(指自此次进入SAS系统以来)无论创建了多少个SAS数据集,只调用最后被创建的那个SAS数据集。1.1.9 如何利用SAS帮助窗口

与SAS语言、SAS过程和SAS用法对应的内容非常丰富,谁也记不全那么多内容。怎么办?只要用户知道一些基本的线索,就可以通过SAS软件提供的丰富帮助功能来查询。通过单击SAS窗口界面上菜单栏第一行或第二行最后一个按钮,就可进入SAS帮助窗口,也可在SAS窗口界面左上角的命令盒内发送命令,如HELP FREQ,回车后,就可直接查询有关SAS中FREQ过程的全部信息。1.2 SAS用法简介1.2.1 初学者学习SAS的快捷方式

上节中,在介绍SAS程序结构和常用SAS语句时已顺便介绍了如何用编程法使用SAS。由此可见,使用SAS并不是一件非常困难的事。难就难在SAS语言(包括SAS语句、SAS函数、SAS过程、SAS高级编程技术)内容很多,需要花很多时间去学习和实践。

笔者给初学者提供一种学习SAS快速入门的方法,即调用他人编制好的SAS程序,只要解决了“对号入座”问题(即每个程序是干什么的),用自己的数据替换掉已有的SAS程序中的数据,将程序发送给SAS系统去执行,就可获得自己所需要的计算结果。每次结合他人的SAS程序和程序语句的讲解,一次学一点,不需用多长时间,自己就慢慢掌握了很多常用的SAS语言,也就是说,边学边解决实际问题,不仅不会望而生畏,而且见效很快。

当数据少时,直接将数据写在程序中即可,但是当数据量很大时,这样做就不够方便了,尤其是遇到第三方格式数据,SAS是不能直接读取的。如何用SAS进行实验设计、进行资料表达等内容,虽然很简单,但却是必须了解的内容,下面就这些基本内容做一扼要介绍。1.2.2 实际运行SAS

什么叫实际运行SAS?若拟采用非编程法运行SAS,只需根据SAS说明书中所交代的步骤去“点菜单”就能获得所需要的结果,这是第一种实际运行SAS的方法。第二种实际运行SAS的方法:在SAS程序编辑器中输入一段正确的SAS程序,如将本章第1.1节介绍的SAS程序发送给SAS系统执行,就称为实际运行SAS,会产生如下的输出结果:

这是对输入的原始数据的详细描述,每个格内第一行为观察的频数;第二行为百分比,即以每个格上的频数为分子,以总频数为分母计算得到的相对数;第三行为行百分比;第四行为列百分比。a*b 表的统计量2

这是用四种方法分析四格表资料所得到的结果。第一种为一般χ222检验,χ=1.7174,P=0.1900;第二种为似然比χ检验,χ=1.7497,P=0.1859;其他从略。

最后三行为度量列联表中行变量与列变量间关联性强弱的系数,其绝对值越接近于1,表明关联越密切。因未对其进行假设检验,故无太大参考价值。

以上是采用Fisher精确法分析四格表资料所得到的结果。2

统计和专业结论:因χ=1.7174,P=0.1900,说明两个工厂该产品的次品率之间的差别无统计学意义。虽然乙厂的次品数是甲厂次品数的2倍,但2个次品率(即P=5/254=1.97%与P=10/254=3.94%)甲乙之间的差别无统计学意义。说明2个工厂此种零件的次品率接近相等,即质量水平相当。1.2.3 从实验设计角度谈SAS用法

与实验设计有关的内容可大致分为三类:其一是进行随机化(SAS中有PLAN过程等);其二是估计样本含量和检验效能(SAS中有POWER过程和GLMPOWER过程等);其三是给出实验设计方案(具体地说,就是与特定设计类型对应的可用于安排实验的设计表格,SAS中有多个过程可用于此目的)。以上内容都可以通过非编程法和编程法来实现,具体做法参见本书有关章节。1.2.4 从资料录入角度谈SAS用法

1.按数据库格式录入统计资料

人们收集的科研资料往往错综复杂,但绝大部分统计资料都可表达成如表1-1所示的形式,它常被称为“数据库格式”的复合型统计资料。这种呈现资料的方式把每个变量在每个个体身上的具体取值都清楚地展示出来了,可以说是比较准确的原始资料。【特例】 如何用数据库格式呈现多因素多指标资料。有人对103例冠心病患者(G=1)和100例正常对照者(G=2)进行了多项指标的观测,资料见表1-1。请问:如何在SAS系统中录入这些资料,以便于采用SAS软件对数据进行各种统计表达与描述或进行各种统计分析?表1-1 冠心病人与正常人多项指标的观测结果

若这些数据是写在纸上的,则只能在SAS软件的编辑窗口内一行一行地输入数据。每行代表一位受试者的全部信息(在SAS中,称其为一个观测),通常,同一行上的数据之间用空格符隔开;每一列代表一个变量在不同受试者身上的具体取值。变量的含义很广,它可以代表第1列的序号,可以代表第2列的组别,…,可以代表最后一列的合并用药情况。变量代表的内容可以是辅助信息,可以是分组标志或影响因素,可以是定量或定性的观测结果。

①若在SAS编辑窗口内输入的仅仅是数据(包括字符型数据),将其以文本格式存入外部媒介(硬盘、优盘或软盘)上,就被称为“数据文件”。这种格式的数据文件可以在SAS编辑窗口中编写SAS程序实现调用,调用的关键SAS语句是INFILE语句和INPUT语句。

例如,在SAS程序编辑窗口中输入例1-1的数据,形式如下:

1 1 5

1 2 249

2 1 10

2 2 244

说明:第一列代表工厂编号,“1”代表甲厂、“2”代表乙厂;第二列代表产品检查结果,“1”代表次品、“2”代表正品;第三列代表各条件下的样品数。按下面的方法可将此数据存储在D盘SASTJFX文件夹内,形成数据文件,假定数据文件名为PRODUCT.DAT:

在SAS程序编辑窗口左上角:文件(FILE)→Save As(另存为)→在弹出的“另存为”窗口的左上角寻找并确定路径:D/SASTJFX→在此窗口下方倒数第二行的文件名命令盒内输入数据文件名:PRODUCT→在此窗口倒数第一行的文件类型命令盒中选择“.DAT”作为文件的扩展名→单击“保存(或“确定”)”按钮。【例1-3】 如何将文本格式的数据读入SAS编程窗口。如何将数据文件读入SAS编程窗口,进行四格表资料的各种统计分析呢?在SASTJFX1_1.SAS程序中,只需将数据步修改成如下形式,而不需改动过程步。【分析与解答】 所需的SAS数据步如下,设程序名为SASTJFX1_3.SAS。

将这段SAS程序发送给SAS系统执行,可达到同样的效果。这种使用SAS的方法适合数据量很大的场合。

②若在SAS编辑窗口内输入数据,第一行输入了变量名,从第二行开始是变量的具体取值,也将其存成数据文件,这是错误的数据文件,不能用前述的方法被SAS系统直接调用,只能在日后给用户提个醒,每列数据的变量名是什么。若变量名写得比较科学,其含义一看便知,则对理解这些数据能起到“备忘录”的作用,否则,没有任何价值!

③若从SAS窗口通过“工具→表编辑器”方式进入表编辑器窗口,在此窗口内直接输入数据,窗口第一行带有变量名(用户可修改变量名),然后,将数据存入外部设备或计算机缓存区,就成了能被SAS系统直接调用的SAS数据集了。存入SAS系统自动创建的逻辑库WORK中的数据集被称为临时SAS数据集,存入其他位置的SAS数据集被称为永久SAS数据集。

2.按实验设计类型录入统计资料

人们收集完数据后,有时,习惯将它们分类整理成一张统计表,统计表的分组标志通常是定性变量,而结果变量通常是定量的。这样的数据,当属于单因素设计定量资料时,常需进行t检验、单因素设计定量资料的方差分析或秩和检验;当属于某种多因素设计定量资料时,常需进行相应设计定量资料的方差分析。请看下面的例子。【例1-4】 如何使用多个DO-END循环语句读取多因素析因设计一元定量数据。某实验同时涉及A、B、C三个地位平等的实验因素,A分为2个水平、B分为3个水平、C分为4个水平,观测指标为OD值,受试对象为样品,不同实验条件下均独立地重复做了2个样品,资料见表1-2。请在SAS编辑窗口中输入此表中的主要变量和相应的数据,以便能进行相应设计定量资料的方差分析。表1-2 3个实验因素作用下OD值的测定结果【分析与解答】 如果采取上例的方法输入数据,需要在每个定量数据前输入4个变量的水平代码。例如第一个数据0.39,应当输入如下信息:1 1 1 1 0.39,这4个1分别代表因素A、B、C和重复实验次序都取1水平;同理,第二个数据0.41,应当输入如下信息:1 1 1 2 0.41,…;最后一个数据0.37,应当输入如下信息:2 3 4 2 0.37。这4个数分别代表因素A取2水平、因素B取3水平、因素C取4水平,而重复实验次序为第2次。显然,这样做太麻烦了,而且,很容易出错。简便的做法是,用SAS语言中的DO-END循环语句来自动产生因素A、B、C和重复实验次序的水平,其数据步如下,设SAS程序名为SASTJFX1_4.SAS。

程序说明:最外层的DO-END循环控制表中横向上水平变化最慢的变量(因素A),第二层DO-END循环控制表中横向上水平变化较快的变量(因素B),这两个变量已将全部6行打上A与B的水平标记,即前3行A均标记为1、后3行A均标记为2;而B的标记从上到下分别为1、2、3、1、2、3。每行有8个数据,先按因素C分为4组,其标记分别为1、2、3、4,每组内再按次序(cixu)分为标记1、2。其效果是所形成的SAS数据集中的排列顺序与前面用“笨方法”产生的结果一致,即(因篇幅太大,中间部分省略了):

3.按列联表类型录入统计资料

与前面的定量资料类似,人们在表达多因素影响下的定性资料时,习惯上将数据整理成列联表的形式,特别是高维列联表资料,很少用“数据库”的形式呈现资料,见下面的例子。【例1-5】 如何使用多个DO-END循环语句读取多因素设计一元定性数据。某临床医生收集到如表1-3所示的资料,请在SAS编辑窗口中输入此表中的主要变量和相应的数据,以便能进行相应设计定性资料的统计分析。表1-3 甲、乙两种治疗方法对不同病程和不同病情某病患者的治疗效果注:这个例子是假设的。【分析与解答】 与前例相同,输入数据的方法也有两种。第一种是在每个频数前需要提供4个变量的标记,它们分别是治疗方法(treatment)、病程(time)、病情(degree)、疗效(effect)。这是很麻烦的事!用DO-END循环语句就可方便地实现上述目标,其SAS数据步如下,设SAS程序名为SASTJFX1_5.SAS。

程序说明:最外层的DO-END循环控制表中横向上水平变化最慢的变量(治疗方法treatment),第二层DO-END循环控制表中横向上水平变化较快的变量(病程time),第三层DO-END循环控制表中横向上水平变化最快的变量(病情degree)。这三个变量已将全部8行打上treatment(治疗方法)、time(病程)、degree(病情)的水平标记,即前4行treatment均标记为JIA(甲),后4行treatment均标记为YI(乙);time的标记从上到下分别为short(短)、short(短)、long(长)、long(长)、short(短)、short(短)、long(长)、long(长);而degree的标记从上到下依次是light(轻)、weight(重)交替出现;每行上的4列是effect(疗效)的水平标记,依次是zhiyu(治愈)、xianxiao(显效)、haozhuan(好转)、wuxiao(无效),INPUT语句中的number读取各行上的频数。形成的SAS数据集的样式与前例相似,此处从略。1.2.5 从不同格式数据转换角度谈SAS用法

1.由非统计软件创建的数据文件与SAS数据集之间的互相转换

若待分析的数据已采用某些第三方非统计软件(如Excel软件等)创建了不同格式的数据文件,其中有些可用SAS系统提供的导入数据接口方便地转换为SAS数据集(利用导出数据接口可以实现相反的操作)。请看下面的例子。【例1-6】 如何将一个Excel数据文件转变成SAS数据集。设有一个用Excel软件创建的数据文件zhanghongleidata1.xls,该文件中有两列数据,第一列变量名为A,第二列变量为B,A、B的具体取值分别是计算机导航辅助方法与CT方法测定每一位骨病患者置入颈椎椎弓根螺钉的相对角度的数据。共有140对数据,假定它们测自140位患者,试将其转换为SAS数据集。【分析与解答】 假定用Excel软件创建的数据文件zhanghongleidata1.xls存放在D:\SASTJFX内,则通过如下步骤,可将其转换为临时SAS数据集。

①进入SAS系统→文件→导入数据→在窗口右边弹出一个含有命令盒的窗口。

在命令盒中显示可导入的数据文件类型为:97、2000或2002年版的Excel软件产生的数据文件,用户可通过此命令盒最右边的三角调整拟导入的数据文件的格式。

②单击窗口下边的“Next”按钮→弹出一个小窗口,要求通过浏览方式确定拟导入的Excel文件的路径和文件名→选中D:\SASTJFX\zhanghongleidata1.xls→单击“OK”按钮。

③系统询问要导入的Excel文件是表几(自动显示表1,即sheet1$,若不是表1,可重新选择)→单击“Next”按钮。

④弹出一个新窗口,有两个命令盒,上行为逻辑库名(自动显示临时库名WORK,也可改变),下行为拟创建的数据集名→输入dao_hang_and_CT_data→单击“Finish”按钮。

⑤在窗口左边逻辑库中WORK库内就有刚创建的SAS数据集。

⑥用鼠标左键双击此数据集,可显示此数据集的内容。

将Excel文件显示的界面与已转换后得到的SAS数据集做一个直观比较。

不难发现:变量名被SAS系统修改了,A、B分别被改为F1和F2;Excel文件中的第一行数据被SAS系统“吃掉了”!造成这种不良后果的主要原因是在将Excel文件转换成SAS数据集的最后一步未取消系统中一个隐含的“设置”,在上面导入数据的第二步之后,会弹出一个窗口。其内的命令盒内有“Sheet1$”。在“Sheet1$”之下有一个“Options”按钮,单击此按钮会弹出另一个窗口。

在此窗口上的第一行是处于被选中的状态,即使用Excel文件中的第一行作为SAS数据集中的变量名。若用户在Excel文件中第一行输入的是数据而不是变量名,则应将第一行中复选框内的“√”去掉。去掉后单击右边的“OK”按钮,接下来的操作步骤与上面的第④步到第⑥步相同,可获得正确的转换结果。

本例还可以通过在SAS编程窗口中运行下面的一段SAS程序,实现将Excel文件转成SAS数据集的目的。设程序名为SASTJFX1_6.SAS。

值得注意的是,若Excel文件中第一行不是变量名而是数据,则上面的程序倒数第二句应改为“GETNAMES=NO”;若要转换的数据在Excel文件的第三张表单中,则上面的程序倒数第三句应改为“SHEET="Sheet3$"”。若转换成功,则新产生的临时SAS数据集ZHANGHONGLEI存放在SAS/WORK库中,可通过SAS资源管理器找到此库,双击此库中的SAS数据集名,便可将其打开,也可在编程窗口中直接调用这个临时SAS数据集。

2.用SAS系统读入其他版本或分析软件创建的数据集

若待分析的数据已采用第三方统计软件(如SPSS、BMDP等统计软件包)创建了不同格式的数据集,则需要通过使用libname语句和在SAS中内置的转换程序(称为读取特定格式数据的库引擎)将特定的数据文件转换为SAS数据集。这种方式使用起来不很方便,下面介绍如何利用SPSS软件提供的文件存储功能将SPSS数据集转换成SAS数据集。

如果用户正在使用的计算机上正确地安装了SPSS软件,直接用鼠标左键双击SPSS数据文件进入SPSS系统并打开该文件,选择“另存为”,在弹出的存储文件的窗口内选择合适的“保存类型”并输入拟创建的SAS数据集名,确定后,就得到转换后的SAS数据集。1.2.6 从资料表达角度谈SAS用法

SAS中有些过程给出的结果并不太理想,如用FREQ过程生成定量资料的频数分布表,只要两个数据不完全相等,就形成两个分组标志,这样形成的频数分布表很长,显得过细,没有实用价值。实际上,可以在使用FREQ过程的基础上配合使用FORMAT过程,生成比较有实用价值的频数分布表(设程序名为SASTJFX1_6.SAS);还可按用户的需要去选定第一组的组段下限、组距、组数等要求,利用丰富的SAS语言编程,产生用户自己量身定制的频数分布表。1.2.7 从统计分析角度谈SAS用法

若用户需要进行的统计分析在SAS软件中已有相应的过程(如单因素2水平设计定量资料t检验,有TTEST过程;两因素析因设计定量资料一元方差分析,有ANOVA过程和GLM过程等;对列联表资料的分析,有FREQ过程和CATMOD过程等),此时,直接调用SAS过程实现统计分析就比较简单了。然而,对于某些计算问题,SAS中尚无现成的SAS过程,此时,可以利用SAS语言并按已知的计算公式或算法编写SAS程序,从而实现统计分析。

总之,要想利用SAS解决自己的各种问题,除了要会调用SAS中的全部过程外,还应该全面掌握SAS语言。运用SAS语言,可以编写出当前已有但SAS过程解决得不满意的问题或尚解决不了的一些问题。如果用户使用某种其他编程语言(如C语言、C++语言或Java语言),需要写大量的代码来设置环境、构造窗口等,而用SAS语言,只需把精力放在要解决的具体问题上,编程工作量就小多了。此时,用户不难体会到,SAS的用途的确是很广的。1.3 本章小结

本章用很短的篇幅介绍了SAS软件和SAS用法。显然,此举旨在起到抛砖引玉之目的。因为SAS软件内容十分丰富,用SAS能解决的问题更是不胜枚举。本章从SAS软件结构、SAS界面简介、SAS过程与SAS程序、运行SAS软件的两种常用方式、SAS程序结构、简单SAS程序中的SAS语句简介、SAS语言简介、SAS数据集简介和如何利用SAS帮助窗口这9个方面宏观地扼要介绍了SAS软件;接着,又从初学者学习SAS的快捷方式、实际运行SAS、从实验设计角度谈SAS用法、从资料录入角度谈SAS用法、从不同格式数据转换角度谈SAS用法、从资料表达角度谈SAS用法和从统计分析角度谈SAS用法这7个方面概述了SAS用法。(胡良平 李子建 刘惠刚)第2章SAS语言基础介绍

由第1章内容可知,运行SAS的方法很多,通常分为两大类:其一,非编程法或称为菜单驱动法;其二,编程法。SAS软件包已经有很多现成的程序,为何还要用户编程呢?事实上,SAS软件包中被编译后的程序被称为“SAS过程”,而用户编写的程序是为了向SAS系统提供数据和任务请求的,被称为SAS引导程序,简称SAS程序。本章将介绍编写SAS程序所需要的SAS语言基础。2.1 SAS数据步中常用SAS语句

SAS程序(SAS PROGRAM)是SAS用户运用SAS语言编写的一段程序,其目的是为了将用户的实验数据与指标(即变量)名称联系在一起,并告诉SAS系统调用特定的SAS过程完成某项任务。SAS程序通常可分为两部分,分别被称为SAS数据步(DATA STEP)和SAS过程步(PROC STEP)。请看下面的一个具体例子。【例2-1】 表2-1中是一段SAS程序,通过这段程序可初步了解SAS程序的结构和书写格式。设程序名为SASTJFX2_1.sas。表2-1 8名中学生的身高体重资料代码

数据步包括要求SAS创建一个或几个新的SAS数据集的语句和对创建数据集所必须进行的运算操作语句。每个DATA步以DATA语句开头,可以包含任意多个SAS程序语句。编写报表、文件管理、信息检索等都在DATA步中予以实现。2.1.1 数据获取语句

数据获取通常使用input语句。【例2-2】 用input语句以简单方式读取数据流中的数据。设程序名为SASTJFX2_2.sas。

上面的程序中,input语句描述输入数据记录值的形式,给相应的变量赋值。$在name之后,说明name是字符型变量,而不是数值型变量;而weight和height都是数值型变量。

输出结果:【例2-3】 如何用input语句以列方式读取数据。设程序名为SASTJFX2_3.sas。

在input语句中,列数跟在变量名之后,指示输入数据记录中的变量值从哪些列中读取,并将读取值赋予相应的变量。本例从数据文件的第1列读取变量id的值,从第3~7列读取字符型变量name的值,从第9~11列读取变量weight的值。

数据行或外部文件数据排列方式如下:

读取的数据样式如下:【例2-4】 如何用input语句以格式化方式读取数据。设程序名为SASTJFX2_4.sas。

在input语句中,变量名后跟随变量的输入格式,由输入格式给出变量值类型、变量值宽度,并将读取的值赋予相应的变量。本例以$char5.格式读取变量name的值,跳过2列后以comma6.格式读取变量height的值。

读取的数据样式如下:【例2-5】 如何用input语句以列表方式读取数据。设程序名为SASTJFX2_5.sas。

在input语句中,以简单方式列出变量名,SAS扫描输入数据值,这种方式可以读取排成一列或由空格等分隔符分隔的数据值。冒号“:”允许input语句使用用户指定的一个输入格式读取变量值。对于字符型变量值,这种方式输入指针从一个非空白列开始读取变量值,直到下一个空白列,或到变量定义的长度,或者到达数据行的末端。当分隔符是空格时,本例使用input语句对变量长度不一致的变量规定统一长度(13个字节)。【例2-6】 如何用input语句以命名方式读取数据。设程序名为SASTJFX2_6.sas。

在input语句中,变量名后跟随一个等号“=”,SAS读取变量名及等号之后的数据值,并将读取值赋予相应的变量。上面程序运行后,SAS读取数据行中“name=”后的值赋给变量name,读取“age=”后的值赋给变量age。

读取的数据样式如下:【例2-7】 如何用input语句以命名方式读取包含空格的字符型数据。设程序名为SASTJFX2_7.sas。

数据行中的“age=60 and up”是一个含有等号、空格的数据值,所以需要在其前后加两个空格,以区分其他数据值。

读取的数据样式为:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载