文库发布:sas82教程_第1页
文库发布:sas82教程_第2页
文库发布:sas82教程_第3页
文库发布:sas82教程_第4页
文库发布:sas82教程_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章

SAS编程操作预备知识

作者:薛富波

一、SAS系统简介SAS是一个庞大的系统,它目前的版本可以在多种操作系统中运行。当前在国内被广泛使用的最新版本是8.2版,功能很强大,我深有体会。据说9.0版已在国外面世,已经有一些有关它的抢先报道在网络上广为流传,说它如何如何美妙,令人不禁充满期待。SAS8.2的完整版本包含以下数十个模块。BASE,GRAPH,ETS,FSP,AF,OR,IML,SHARE,QC,STAT,INSIGHT,ANALYST,ASSIST,CONNECT,CPE,LAB,EIS,WAREHOUSE,PCFileFormats,GIS,SPECTRAVIEW,SHARE*NET,R/3,OnlineTutor:SASProgramming,MDDBServer,ITServiceVisionClient,IntrNetComputeServices,EnterpriseReporter,MDDBServercommonproducts,EnterpriseMiner,AppDevStudio,IntegrationTechnologies等。所谓模块,我的理解是将功能相近的程序、代码等集中起来组成相对独立的部分,就称之为模块,类似于办公软件系统office中包含的word、excel、access等。各模块具有相对独立的功能范围,我们常用的模块有base,graph,stat,insight,assist,analyst模块等,分别执行基本数据处理、绘图、统计分析、数据探索、可视化数据处理等功能。其余模块我用得很少,知道得也很少,所以也就不多说了。SAS系统的长处,体现于它的编程操作功能的无比强大。SAS一直以来也是注重于其编程语言的发展,对于可视化方式的菜单操作投入较少,其较早的版本仅有很少的菜单操作功能,使用起来也是非常的别扭。这很可能就是在windows人机交互式操作系统占统治地位的今天,SAS较少被人问津的原因之一。到了最新的几个版本,SAS也对可视化操作方法投入了一定的关注。从8.0版以后,出现了几个功能强大的可视化操作的模块,如insight模块和analyst模块等,其菜单操作的方便程度以及人机界面的亲和性绝不亚于SPSS等著名的可视化统计分析软件。然而要想完全发挥SAS系统强大的功能,充分利用其提供的丰富资源,掌握SAS的编程操作是必要的,也只有这样才能体现出SAS在各个方面的杰出才能。二、SAS系统基本操作及基本概念哪位要是连软件的安装和打开都要我啰嗦的话,我劝您还是买一套洪恩的《开天辟地》好好热热身先。SAS8.2的界面中间是三个并排(或层叠)的窗口,那个叫做ProgramEditor的窗口(窗口标签为Editor)就是用来输入SAS语句的,编程操作的所有内容都是在该窗口内完成的,各位还是要跟它先多熟悉一下。(一)数据集(dataset)和库

统计学的操作都是针对数据的,SAS中容纳数据的文件称为数据集,数据集又包含在不同的库(暂且理解为数据库吧)中。SAS中的库分为永久性和临时性两种。顾名思义,存在于永久库中的数据集是永久存在的(只要你不去删除它),临时库中的数据集则在你退出SAS后自动被删除。至于SAS中库的概念,最简单的理解就是一个目录,一个存放数据集的目录。

数据集的结构完全等同于我们一般所理解的数据表,由字段和记录所构成,在统计学中我们习惯将字段称为变量,在后面的内容中字段和变量我们就理解为同一种东西吧!建立数据集的方法很多,编程操作中有专门的数据读入方法来建立数据集,但需要将数据现场录入,费时费力。如果数据量大,我劝各位还是先以其它方法将数据集建好,否则程序语句的绝大部分会浪费在数据的输入上。Whatare其它方法?各位是不是去参考一下别的书籍或资料。要不您是不是可以等一等,我准备若干年后出一本SAS操作大全。(二)SAS程序概述和其它计算机语言一样,SAS语言(称为SCL语言,SASComponentLanguage)也有其专有的词汇(即关键字)和语法。关键字、名字、特殊字符和运算符等按照语法规则排列组成SAS语句,而执行完整功能的若干个SAS语句就构成了SAS程序。

SAS程序包括多个步骤和一些控制语句,一般情况下均包括数据步和过程步,一个或多个、数据步或过程步,它们之间任何形式的组合均可成为一段SAS程序,只要能完成一个完整的功能。通常情况下SAS程序还包括一些全程语句,用以控制贯穿整个SAS程序的某些选项、变量或程序运行的环境。SAS程序的语句一般以关键字开始,以一个分号结束,一条语句可占多行(SAS每看到一个分号,就将其以前、上一个分号以后的所有东东当作一条语句来处理,而不管他们处在多少个不同的行中)。SAS语句对字母的大小写不敏感,你可以根据个人习惯决定字母的大写或小写。1.库名(库标记)的定义为了保存宝贵的数据和方便操作起见,我习惯于指定自己的库名及其路径(目录),因为SAS系统中已有的永久库(SASUSER)无论库名还是其对应的路径都太过繁琐,使用太不方便。程序中用到的数据,都可以永久的保存于该路径下,保证以后可以重复使用。指定库名的语句为全程语句,其格式如下:

Libname库名‘路径’;

例如我们指定的库名为“a”,路径为:“e:\data\”,SAS语句如下:

libnamea‘e:\data\’;

2.数据步SAS的数据步以data语句开始,用于创建和处理数据集。Data语句以关键字“data”开始,格式如下:data数据集名;例如:dataa.case;将创建在库a中名为case的SAS数据集,语句执行后你可在与库a对应的目录下看到刚刚建立的数据集文件case。Data语句所指定的数据集,一般都是以“库名.数据集名”的格式出现的,也可以单独的“数据集名”出现,此时的数据集系统默认为是临时库中的数据集,退出系统后将会被删除。data语句有两个重要的功能,标志数据步的开始和命名将要创建的SAS数据集。除data语句外,数据步一般情况下还包括infile语句、input语句以及datalines语句等。在不同的数据输入方式下对于它们的使用方式也不一样。SAS程序有两种常见的数据输入方式,即从外部文件读入和直接输入两种方式。(1)外部文件读入方式数据若已经包含在某个外部文件(文本文件或数据文件)中,可用此方法输入数据到数据集文件中。在以上介绍的data语句后,写入以下语句:infile‘外部文件的所在位置及名称’选项;input变量名1变量名2…变量名n;infile语句用于从外部文件读入数据,必须出现在input语句之前。它的功能是指定一个包含原始数据的外部文件。input语句用于向系统表明如何读入每一条数据记录。它的主要功能有:读入由语句指定的数据列,为相应的数据域定义变量名,确定变量的读入模式。例如:

libnamea‘e:\data\’;dataa.student;infile‘e:\data\student.txt’;inputnameheightweight;

以上程序将目录“e:\data\”下的文本文件“student.txt”中的数据输入数据集student中,该数据集存放于目录“e:\data\”下。(2)直接输入方式

数据量较少或操作者意志力坚强的情况下采用此种输入方式,在data语句之后写入如下语句:

input变量名1变量名2…变量名n;datalines;(在以前的版本下为cards,新版本下两者可通用)…………(数据行)…………(数据行)

…………(数据行)

;

datalines语句用于直接输入数据,标志着数据块的开始。注意:这里的数据行中数据之间以空格分隔,当然也可以其它东东如逗号等来分隔,这里大家先以空格来分隔好了。因为不同的分隔方式下input语句要采取相应的控制选项,这些我们以后再讨论,这里我们还是省省力气吧。另外数据行输完后不能像其它语句那样直接在后面加上分号,而要另起一行输入分号,这样SAS才认为这是在输入原始数据而不是在搞别的什么。例如:

libnamea‘e:\data\’;dataa.student;inputname$heightweight;(name后面的$符号表示变量name为字符型变量)

datalines;

Linda17151

Mary16850

Selinna16949

;

以上程序将直接建立数据集文件student,该数据集文件存放于目录“e:\data\”下。3.过程步

SAS程序的过程步表示一个处理过程,如排序、T检验、方差分析等等。过程步以关键字proc开始,后面紧跟着过程名,用以区分不同的程序步,并以关键字run结束。一般的格式如下:proc过程名选项列表;……(其它语句);……(其它语句);run;SAS程序中涉及的过程多达数百种,实现统计功能时常用的过程也有数十种之多,现将最为常用的过程名称及其所能实现的功能列入下表(表1.1),以便各位提前热热身。表1.1

常用的过程名称及其功能过程名功能Sort将指定的数据集按指定变量排序Print将数据集中的数据列表输出tabulate将数据按照指定的分类变量以表格的形式分类汇总Means对指定的数值变量进行简单的统计描述Freq对指定的分类变量进行简单的统计描述Ttest对指定的变量做t检验Anova对指定的变量做方差分析npar1way对指定的变量做非参数检验Reg对指定的变量做回归分析Corr对指定的变量做相关分析Discrim对指定的变量做判别分析Cluster对指定的变量做聚类分析Chart绘出低分辨率的统计图4.几个常用的重要过程在进入一般统计学功能实现的内容之前,有关数据预处理和执行重要公共功能的过程大家有必要预先掌握,这里选出几个常用的和重要的过程进行讨论。(1)对SAS文件进行操作的datasets过程datasets过程是对数据文件进行管理操作的工具,利用它我们可以实现以下功能:将SAS文件从一个库中拷入另一个库中;对SAS文件进行重命名;修复损坏的SAS文件;删除SAS文件;列出某一SAS库中所有的SAS文件;列出一个SAS数据集的属性,如最后修改时间、数据是否压缩、数据是否索引等;对SAS文件进行设置密码的操作;向SAS数据集添加记录;对SAS数据集的属性以及数据集内变量的属性进行修改;创建或删除SAS数据集的索引;创建并管理SAS数据集的核查文件;创建或删除SAS数据集的完整性规则。datasets过程的一般格式如下:procdatasets<选项列表>;

age当前文件名相关文件名列表</选项列表>;

appendbase=数据集名<data=数据集名其它选项>;

audit文件名<(操作密码)>;initiate;<其它代码;>

change旧文件名1=新文件名1<…旧文件名n=新文件名n><选项列表>;

contents<data=数据集名><其它选项>;

copyout=库标记<其它选项>;

exclude文件名<其它选项>;(该语句只能在copy语句后出现,不能和select语句同时出现)

select文件名<其它选项>;(该语句只能在copy语句后出现,不能和exclude语句同时出现)

delete文件名<其它选项>;

exchange文件名1=交换文件名1<…文件名n=交换文件名n><选项列表>;

modify文件名<选项列表>;

<modify语句之从属语句>;

repair文件名<选项列表>;

save文件名<选项列表>;run;是不是太繁琐了,我都有些不耐烦了。不过我还是得写,已经写了嘛!不忍心浪费掉,最起码可以用来充充数,扩大一下篇幅。至于各位,嫌烦的可以略过此部分,想用的时候再来温习也不迟。下面我就不厌其烦地向各位介绍一下各选项及各条语句的含义和用法。procdatasets语句后各选项的含义及用法见下表(表1.2)。表1.2

procdatasets语句后各选项的含义及用法选项含义及用法alter=转换保护密码SAS文件设置有转换操作密码时用以验证操作的合法性,密码正确时代码才会被执行details/nodetails控制有关SAS文件的详细信息显示与否,前者为显示,后者不显示,默认值为后者force此选项具有两个功能:(1)在过程步的语句存在错误时仍然强制程序的执行;(2)在append语句中,两个数据集的变量不完全相同时仍然强制append语句的执行。gennum=控制对衍生数据集的处理方式,等号后可为all,hist,revert或某一整数kill此选项表示删除待处理的库中的所有文件,应慎用library=库标记用以指定所要处理的库memtype=成员类型指定处理所针对的库成员类型(文件类型),默认值为all(所有类型)nolist在日志文件中禁止对所处理文件目录的显示nowarn在语句中指定的文件不存在等情况下,禁止显示出错信息,强制程序继续执行pw=操作密码SAS文件设置操作密码时验证操作的合法性(包括读、写保护以及转换保护的文件)read=读保护密码SAS文件设置读保护密码时验证操作的合法性age语句用于批量地重命名文件,按照当前文件和相关文件的排列顺序,依次将后一个文件名重命名给前一个文件,结果是最后一个文件被删除,当前文件名被废弃。对此语句我所了解的就这么多,而且还是通过试验得出的结论,但总感觉还是理解的不对,哪位若有高见还请不吝赐教。append语句执行向数据集添加记录的功能,选项“base=数据集名”用以指定要添加记录的数据集,“data=数据集名”则指定所要添加的记录所在的数据集,此选项若省略则默认为当前数据集(最近一次操作的数据集)。audit语句用于对文件的核查,生成核查文件并对其进行管理;change语句以新文件名替换旧文件名;contents语句用于显示指定数据集或当前数据集的各种属性;copy语句用于将当前库中相应的文件拷贝到指定的库中,选项“out=库标记”用来指定文件要拷贝到的目标库;delete语句用于删除指定的文件;exchange语句的功能是将等号前后两个文件的文件名进行互换;modify语句用于修改文件各方面的属性;repair语句用于对指定的文件(受到过某种损坏)进行修复,使其恢复到可以使用的状态;save语句的功能是将其指定的文件保留,当前库中的其他所有文件则被删除。(2)对数据文件中记录进行排序的sort过程sort过程的功能是对指定数据集中的记录按照指定的变量进行排序。由于诸多过程有对数据集记录进行排序的需要,比如过程步中存在by语句(用以将数据文件分割为若干部分)的情况下,就需要按照by语句后的变量对数据先行排序,所以sort过程非常有用,而且非常常用。sort过程的一般格式如下:procsort选项列表;

by<descending>变量名1<变量名2…变量名n>;run;procsort语句后各选项含义及其用法见下表(表1.3)。表1.3

procsort语句后各选项含义及其用法选项含义及用法data=数据集名用以指定sort过程所要处理的数据集,若省略则默认为最近建立或处理的数据集datecopy此选项指定在不改变文件创建日期和修改日期的条件下对文件进行排序操作out=数据集名将排序后文件以指定的文件名存储,原文件不进行任何修改,若无此选项则将原文件覆盖sortseq=排序依据指定对字符型变量排序时依据的标准reverse/equals/noequals指定输出数据中的排序方式,三者分别表示将字符变量的次序翻转显示,在排序变量的各水平内部次序保持不变,在排序变量的各水平内部允许次序的改变nodupkey/noduprecs指定重复变量的消除方式,前者表示除去排序变量值重复的记录,后者表示除去所有变量值重复的记录sortsize=用以指定可用最大内存的大小,等号后为表示内存大小的数值及单位,比如10mforce用以强制执行重复排序(对已建立索引的文件排序)过程tagsort指定在临时文件中仅存储排序变量和记录编号,以减少对磁盘空间的使用by语句即用以指定排序所要依据的变量,变量可为数值型也可为字符型,其后可指定多个变量,sort过程在按照靠前的变量进行排序的情况下再按照靠后的变量进行排序。by语句中每个变量前可用descending/ascending选项来指定按照其排序的方式(降序或升序),默认状态为升序。(3)将数据文件输出显示的print过程print过程的功能是将SAS数据集的记录以一定的方式显示到输出设备(显示屏),可以显示其全部的变量或部分变量。利用此过程,你可以创建从简单列表到可进行数据汇总的各种报告的各种不同的表单。print过程的一般格式如下:procprint选项列表;

by<descending>变量名1<变量名2…变量名n其他选项>;

pageby变量名;

sumby变量名;

id变量名;

sum变量名;

var变量名;run;procprint语句后可跟的选项含义及其用法见下表(表1.4)表1.4

procprint语句后选项含义及其用法选项含义及用法contents=文本用以指定html内容文件中指向输出的链接的标识文本,等号后可为任何文本data=数据集名指定所要处理的数据集,等号后为数据集文件名double指定在相邻的记录间插入一空行n=字符串在报告的末尾或by变量各水平分组的末尾显示显示记录的数目,并以等号后的字符串对其进行标识noobs禁止记录编号在报告中的显示obs=列标题用以指定记录编号所在列的列标题round对未进行格式化的数值变量进行四舍五入,统一格式化为带两位小数的十进制数值rows=page规定页面格式,目前’page’是此选项唯一可用的值,表示在每一页中只显示一条记录的一行变量值,即一行中显示尽可能多的记录数width=列宽度指定列的宽度,可取的值有’full’,’minimum’,’uniform’,’uniformby’等,heading=方向取值可为v(vertical)或h(horizontal),表示列标题显示的方向(横向或纵向)label指定以变量标识作为相应的列标题,否则以变量名作为列标题split=字符首先此选项指定以变量标识作为列标题,以指定的字符作为列标题换行的标志style=类型元素指定报告中特定位置所要应用的类型元素(涉及很多内容,详细内容略)by语句在所有过程中的用法都相同,即将数据集分割为若干小数据集分别进行处理。pageby语句用来控制换页时变量的显示方式,对于其后所指定的变量,相同的值不会显示在不同的页中,该变量某一值的记录在一页的剩余部分显示不下时,则从该值的第一条记录开始换行显示。sumby语句的作用和pageby语句相似,只不过是将换页的动作换为求和,对指定变量的每一值计算var变量的总计值。id语句的作用是用指定的变量值代替记录编号对每一条记录进行标识。sum语句用于指定报告中要进行求和操作的变量,var语句用于指定要在报告中显示的变量。以上过程作用较为普遍,使用频率较高,有必要预先了解,以便于后面所讨论内容的顺利进行。为节省篇幅,这里不进行实例演示。内容过于枯燥,可能的错误也难免,还请各位多多包涵。SAS程序操作的大概情况就草草的这样介绍一下吧,说得太多的话我怕各位没有耐心看下去。更多的内容我想还是留在实际的例子中来介绍,这样大家可以好好的切身体会一下,然后就会印象深刻,实际运用起来也就得心应手了。在第二章中,我们要讨论统计描述的SAS编程实现方法,包括各种描述性统计指标的计算、频数表的编制、各种统计图的绘制等等,各位就请耐心等上几天吧。第二章

统计描述的SAS编程实现一、计量资料的统计描述计量资料统计描述的内容主要包括平均指标和变异指标的计算、资料分布形态(或特征)的图形表现等。(一)实现描述性统计功能的几个过程描述性统计指标的计算可以用四个不同的过程来实现,它们分别是means过程、summary过程、univariate过程以及tabulate过程。它们在功能范围和具体的操作方法上存在一定的差别,下面我们大概了解一下它们的异同点。相同点:他们均可计算出均数、标准差、方差、标准误、总和、加权值的总和、最大值、最小值、全距、校正的和未校正的离差平方和、变异系数、样本分布位置的t检验统计量、遗漏数据和有效数据个数等,均可应用by语句将样本分割为若干个更小的样本,以便分别进行分析。不同点:(1)means过程、summary过程、univariate过程可以计算样本的偏度(skewness)和峰度(kurtosis),而tabulate过程不计算这些统计量;(2)univariate过程可以计算出样本的众数(mode),其它三个过程不计算众数;(3)summary过程执行后不会自动给出分析的结果,须引用output语句和print过程来显示分析结果,而其它三个过程则会自动显示分析的结果;(4)univariate过程具有统计制图的功能,其它三个过程则没有;(5)tabulate过程不产生输出资料文件(存储各种输出数据的文件),其它三个均产生输出资料文件。以上是它们的主要异同点,其它更为具体的异同点需要在实际应用中去体会。掌握了各种过程的异同点,就可以根据具体需要选择最佳的过程进行工作。统计制图的过程均可以实现对样本分布特征的图形表示,一般情况下可以使用的有chart过程、plot过程、gchart过程和gplot过程。大家有没有发现前两个和后两个只有一个字母‘g’(代表graph)的差别,其实它们之间(只差一个字母g的过程之间)的统计描述功能是相同的,区别仅在于绘制出的图形的复杂和美观程度。chart过程和plot过程绘制的图形类似于我们用文本字符堆积起来的图形,只能概括地反映出资料分布的大体形状,实际上这两个过程绘制的图形并不能称之为图形,因为他根本就没有涉及一般意义上图形的任何一种元素(如颜色、分辨率等)。而gchart过程和gplot过程给出的是真正意义上的图形,可以用很多的语句和选项来控制图形的各方面的性质和特征。chart和gchart与plot和gplot的区别则体现在不同的作图功能,前两个过程可以绘制出的图形主要有条形图(包括横条和竖条)、圆图、环形图和星形图等,后两个过程通常用一个记录中的两个变量值表示点的坐标来绘制图形,如散点图和线图等。(二)描述性统计过程的一般格式1.means过程的一般格式procmeans选项列表;

by变量名称(分组变量);

class变量名称(分组变量);

freq变量名称(数值变量,用以表示相应记录出现的频数)

weight变量名称(数值变量,用以表示相应记录的权重系数)

var变量名称(待分析的数值变量);run;Procmeans语句后的选项主要用来指定所要计算的统计量,默认情况下,Means过程会给出频数、均数、标准差、最大值和最小值等,其余统计量的计算均需要在选项中指定。class语句所指定的分组变量用来进行分组,而by语句所指定的分组变量是用来将数据分为若干个更小的样本,以便SAS分别在各小样本内进行各自独立的处理。freq语句和weight语句分别引导代表记录出现频数和权重系数的数值变量。var语句引导所要进行分析的所有变量的列表,SAS将对var语句所引导的所有变量分别进行描述性统计分析。2.summary过程的一般格式procsummary选项列表;

by变量名称(分组变量);

class变量名称(分组变量);

freq变量名称(数值变量,用以表示相应记录出现的频数)

weight变量名称(数值变量,用以表示相应记录的权重系数)

output<out=数据集名><统计量关键字=自定义变量名>

var变量名称(待分析的数值变量);run;summary过程的格式和means过程可以说是完全相同的,各条语句和选项的含义也是相同的,包括在means过程中未列出的output语句也可以应用于means过程,只是此语句在summary过程应用较多(这样才能将分析结果显示出来),所以才将其列入一般格式中。output语句用来对分析结果输出为数据文件进行控制,其后的选项可有可无,若无则SAS按照默认方式进行。“out=数据集名”用来定义输出数据文件的文件名称,文件名的格式和数据步中数据文件名相同。“统计量关键字=自定义变量名”用来自定义输出数据文件中各种统计量的变量名称,前者是系统定义的(和proc语句后选项中的统计量关键字完全相同),必须正确无误,后者可自行定义。默认状态下输出统计量只有频数、均数、标准差、最大值和最小值,在默认状态不能满足需要时这一选项则是必需的。3.univariate过程的一般格式procunivariate选项列表;

by变量名称(分组变量);

class变量名称(分组变量);

freq变量名称(数值变量,用以表示相应记录出现的频数)

weight变量名称(数值变量,用以表示相应记录的权重系数)

histogram变量名称/选项列表

output<out=数据集名><统计量关键字=自定义变量名>

var变量名称(待分析的数值变量);run;univariate过程和以上两个过程的格式非常相似,相同的语句和选项其含义也相同,所不同的是某些统计量只能在univariate过程中计算(如众数),以及univariate过程中所具有的绘图功能。histogram语句即用来指示SAS对其后所指定的变量绘制直方图,其后的选项用来指示SAS添加不同类型的拟合图形(如正态分布的分布密度曲线)。4.tabulate过程的一般格式proctabulate选项列表;

by变量名称(分组变量);

class变量名称(分组变量);

freq变量名称(数值变量,用以表示相应记录出现的频数)

weight变量名称(数值变量,用以表示相应记录的权重系数)

table<<页变量表达式>,<行变量表达式>,<列变量表达式>></表格选项>

var变量名称(待分析的数值变量,统计量列入相应的表单元格);run;tabulate过程和上述几个过程的格式也基本相似,相同的语句和选项也代表相同的含义。最大的不同也是tabulate过程中最为重要的是table语句,他用来定义表格的具体格式以及表格中所要包括的统计量。5.gchart过程的一般格式procgchart选项列表;

图形关键词变量名称/选项列表run;此过程格式简单,复杂的地方在于图形关键字(每个图形关键字对应一种图形类型)所引导的语句,这里是控制图形类型及图形要素的地方,涉及到众多的关键字和选项。gchart过程可以使用的图形关键字及其所绘制的图形类型见下表(表2.1)。表2.1

gchart过程可以使用的图形关键字及其所绘制的图形类型图形关键字绘制的图形类型图形关键字绘制的图形类型block方块图pie圆图hbar水平的条形图pie3d三维圆图hbar3d水平的三维条形图donut环形图vbar竖立的条形图star星形图vbar3d竖立的三维条形图

图形关键字后的变量名用以指定进行图形描述时的分组变量,可以是数值型的(此时以各组的组中值为分组的标志),也可以是字符型的。其后的选项比较重要的有:(1)type=统计量关键字,表示以图形对变量(sumvar所指定的变量)的哪一种统计量进行描述,比如频数(freq)、均数(mean)、总计(sum)、频数百分比(pctn)等;(2)subgroup=变量名(分组变量),指定要进行分组(各组段内再分组)的变量;(3)sumvar=变量名(数值变量),指定要进行统计计算的变量,也就是“type=统计量关键字”选项中统计量的计算所依据的变量。其它的选项较少用到或系统默认值即可基本满足要求,这里还是少罗嗦,以后用到再说。6.gplot过程的一般格式procgplot选项列表;

bubble散点图表达式

bubble2散点图表达式

plot散点图表达式

plot2散点图表达式run;从gplot过程的一般格式中我们就可看出,此过程只能绘制两种类型的图形,bubble语句指示SAS绘制泡状散点图,plot语句指示SAS绘制点状散点图。bubble2语句和plot2语句指示SAS在同一区域内(bubble2和bubble在同一区域,plot2和plot在同一区域)绘制第二个图形,两者的横坐标相同(同一变量),纵坐标分别位于左右两侧(可以是同一变量,也可以是两个不同的变量)。散点图表达式的一般形式为:(1)bubble和bubble2语句:纵坐标变量名*横坐标变量名=泡尺寸变量名(变量值以泡的大小表示),三者均应为数值变量;(2)plot和plot2语句:纵坐标变量名*横坐标变量名<=n/分类变量名>,此处等号及其后的部分可以省略,此时SAS以默认的散点类型绘制散点图;若等号后为n(n为正整数,是散点类型的编号),SAS则以指定的编号对应的散点类型绘制散点图;若等号后为分类变量名(可为字符型或数值型,为数值型时作为离散型变量处理,每一个值将被当作一个类别),此变量的具体值(或与每个具体值对应的图形)将被作为散点用来绘制散点图。chart过程和plot过程的一般格式及各选项使用方法分别与gchart过程和gplot过程是基本相同的,不同之处仅在于后两者中涉及到有关三维和图形元素(颜色等)的语句和选项在前两者中是无效的。例如vbar3d语句在chart过程中无效,bubble语句在plot过程中无效。其余的语句和选项使用方法完全相同,所以在掌握了gchart过程和gplot过程后,chart过程和plot过程你会不学自通。(三)描述性统计关键字及其含义SAS中可计算的描述性统计量多达二十余种,大部分可在以上介绍的前四个过程中计算,个别统计量在某些过程中不能计算,大家需要注意,要不然系统显示错误信息时还不知道是怎么回事。我经常遇到这种情况,系统提示错误(此类提示信息显示在log窗口中)时总是摸不着头脑,费半天劲才能搞明白。没办法,摸着石头过河嘛!不过这样也并非一无是处,最起码可以积累很多使用经验。下表(表2.2)列出SAS中可以计算的所有描述性统计量关键字及其含义,供大家使用时参考。表2.2

SAS中可以计算的描述性统计量关键字及其含义关键字所代表的含义n有效数据记录数nmiss缺失数据记录数mean均数std标准差stderr标准误var方差median中位数mode众数cv变异系数max最大值min最小值range全距sum总计sumwgt加权值总计css校正的离均差平方和uss未校正的离均差平方和clm可信限(上下界值)lclm可信限下侧界值uclm可信限上侧界值skew(skewness)偏度kurt(kurtosis)峰度t分布位置假设检验之t统计量probt上述t统计量对应的概率值q1第一四分位数q3第三四分位数qrange四分位数间距p1第一百分位数p5第五百分位数p10第十百分位数p90第九十百分位数p95第九十五百分位数p99第九十九百分位数(四)应用实例演示1.大样本资料的统计描述对于大样本资料的描述性统计,医学统计学教材上一般要求采用编制频数表的方法进行各种指标的计算。在用软件进行工作时大可不必这么辛苦,尤其是在玩SAS时(据说这家伙在处理成百上千万的数据时都绝不在话下)。但要用直方图表现资料分布特征时,频数表的编制却是非常必要的。下面我们就用一个实例来演示大样本资料统计描述的SAS编程实现方法。例2-1

下表(表2.3)为长沙市某大学160名正常成年女子1999年体检资料中的血清甘油三酯的测量结果(mmol/L),请对其进行统计描述。表2.3

160名正常成年女子的血清甘油三酯(mmol/L)0.910.881.410.961.481.460.911.101.261.680.680.831.771.231.041.080.621.101.330.730.521.011.711.370.511.011.111.090.961.371.200.611.170.711.160.800.731.660.961.370.951.300.761.390.941.251.601.541.341.561.540.851.540.960.821.501.141.701.301.591.071.171.321.441.120.700.681.520.761.601.271.431.271.090.750.640.971.201.341.191.080.661.421.460.591.221.321.671.201.331.311.020.830.901.090.961.100.851.061.670.780.910.891.081.270.851.241.580.711.461.520.911.471.011.201.301.051.450.651.041.241.301.111.650.870.820.761.300.631.140.831.241.481.150.991.491.021.170.990.611.330.790.951.051.641.400.721.06按题目要求我们来计算该指标的均数、中位数、标准差和若干个重要的百分位数以及四分位数,并以直方图来表现此资料的分布特征。在用SAS进行处理前,我们最好先将数据转换成SAS数据集的格式,编程时直接引用就可以了。在这里我就将我一贯的做法展现给大家,欢迎各位参考,更希望大家积极尝试,找出更为便捷的方法。谁要有了更好的方法,给我也指点指点,大家共同提高嘛!吝啬鬼是成不了大事的。先将原始数据以Excel电子表格的形式录入,用SAS的import功能转换成SAS数据集文件,或以Analyst模块直接读入Excel文件,自动生成SAS数据集文件。噢,差点忘了,我还没给大家介绍这两部分的内容。而且这些内容也是说来话长,我们留待以后再说吧,大家知道有此方法就行了。感兴趣的可以自己去尝试,或以后掌握了这些内容后再来操练也行。更容易(不一定简便)的方法是将数据以纯文本(数据间以空格或逗号隔开,一个变量占一列或多列均可)的形式录入,在SAS程序中以“infile”语句来引用该文件。当然你要不怕麻烦,也可以将原始数据全部列在Data步的datalines(或cards)语句中。在这里我就不这么做了,我嫌麻烦,而且易出错。我们先来计算所要的描述性统计量。计量资料的描述性统计功能通常用Summary过程、Means过程和univariate过程来实现。tabulate过程也可以实现描述性统计功能,但它和以上三个过程来比就显得复杂了一些,其实tabulate过程的过人之处在于对含有较多分类变量的资料的汇总性分析,以后大家用到的时候会慢慢体会到这一点。这里我们分别以三个过程来完成对该例题的描述性统计分析,使各位能深刻体会这些过程的用法。好了,我们下面就开始操作。将上表中的数据以文本文件的形式录入,文件名为case2_1,存入目录“e:\data\”下。然后进入SAS操作环境,在ProgramEditor窗口中编写相应程序。(1)以means过程进行分析具体操作程序如下libnamea'e:\data\';dataa.case2_1;

infile'e:\data\data2_1.txt';

inputx@@;procmeansnmeanmedianp1p5p95p99q1q3maxmin;

varx;run;以上程序建立了一个永久性数据集,以后可重新利用。默认情况下,Means过程会给出频数、均数、标准差、最大值和最小值等,若默认情况满足需要,则ProcMeans后的所有选项(代表所要求计算的统计量)皆可省略,否则需一一写出,如以上程序。程序编写完成后,点击菜单Run>>Submit或直接点击快捷工具栏内的那个向右跑的小人,将程序提交给SAS执行。以上程序提交执行后的结果如下。

TheSASSystemTheMEANSProcedureAnalysisVariable:xNMeanMedian1stPctl5thPtcl95thPctl99thPctlLowerQuartileUpperQuartileMaximumMinimum1601.13118751.13000000.52000000.64500001.65000001.71000000.91000001.33000001.77000000.5100000

程序执行结果给出了所有指定的统计量,列表中各项目的含义不用我再啰嗦了吧!我想大家都能看得懂。很是简单吧!的确,我们在做一般的统计分析时编写的程序比较简单,SAS中相当部分的语句和选项是很少用到的,但要想充分利用SAS的强大功能,尽可能的掌握更多的内容是非常必要的。在这里我不想和那些没完没了的语句和选项过多地纠缠,等以后的例子中涉及到相应的内容时我们再来仔细研究。(2)以summary过程进行分析操作程序如下libnamea'e:\data\';dataa.case2_1;

infile'e:\data\data2_1.txt';

inputx@@;procsummary;

varx;

outputout=temp1mean=mmedian=mdp1=pt1p5=pt5p95=pt95p99=pt99q1=qt1q3=at3;run;procprintdata=temp1;run;大家要注意在summary过程中对output语句的使用,他将需要显示的统计量以自定义变量的形式存储在自命名的输出数据文件中(但还是不能自动在结果中显示)。最后使用print过程将输出数据文件显示出来。将程序提交执行,结果如下。TheSASSystemObs_TYPE__FREQ_mmdpt1pt5pt95pt99qt1qt3101601.131191.130.520.6451.651.710.911.33结果和means过程相同,只不过统计量名称变成了自定义的形式。(3)以univariate过程进行分析操作程序如下libnamea'e:\data\';dataa.case2_1;

infile'e:\data\data2_1.txt';

inputx@@;procunivariate;

varx;run;其实在实现描述性统计功能方面,univariate过程和means过程的操作程序差不太多,所不同的是默认状态下前者比后者给出的描述性统计量要完整的多,univariate过程在默认状态下(不列出任和选项)可以给出几乎全部的描述性统计量,并显示样本位置假设检验的t统计量及其对应的双侧概率值。执行以上程序,结果如下。

TheSASSystemTheUNIVARIATEProcedureVariable:xMomentsN160SumWeights160Mean1.1311875SumObservations180.99StdDeviation0.29478565Variance0.08689858Skewness0.03492255Kurtosis-0.7165457UncorrectedSS218.5505CorrectedSS13.8168744CoeffVariation26.05984StdErrorMean0.02330485

BasicStatisticalMeasuresLocationVariabilityMean1.131188StdDeviation0.29479Median1.130000Variance0.08690Mode1.200000Range1.26000

InterquartileRange0.42000

Tests

for

Location:

Mu0=0TestStatisticpValueStudent'stt48.53871Pr>|t|<.0001SignM80Pr>=|M|<.0001SignedRankS6440Pr>=|S|<.0001

Quantiles

(Definition

5)QuantileEstimate100%Max1.77099%1.71095%1.65090%1.54075%Q31.33050%Median1.13025%Q10.91010%0.7255%0.6451%0.5200%Min0.510

ExtremeObservationsLowestHighestValueObsValueObs0.51281.671030.52241.69100.59881.70610.611491.71260.61351.7716结果中的第一个表格给出描述样本分布特征的若干统计量,包括样本的偏度和峰度等。第二个表格给出的是样本的基础统计量值,即反映样本位置的三个位置参数(均数、中位数、众数)和反映样本变异程度的四个指标(标准差、方差、全距、四分位数间距)。第三个表格显示关于样本分布位置假设检验的结果,包括三种方法的检验结果,即t检验、符号检验以及符号秩和检验的分析结果。后两个表格分别显示的是若干个重要的分位数和最大及最小各五个样本极端值。感觉是不是有些太详细了,对于描述性统计分析的一般应用或多或少的有些婆婆妈妈的嫌疑。从以上的例子中各位应该已经体会出了各种过程的各自特点,实际应用中我们可以根据需要选用合适的过程。学习SAS跟学开车没什么两样,学会一般的应用并不难,然而要想成为高手却不是几年就能解决的事。下面我们进行第二项工作,绘制直方图。绘制直方图可用Chart或Gchart过程来完成。直方图的绘制需要先编制频数表,也就是先要将各观测值按照其大小归入相应的组中。完成这一部分的工作我们需要用到SAS程序的条件语句和赋值语句。和大多数计算机语句相同,SAS中的条件语句也是if…then…<else…>的格式,赋值语句是x=…的格式。在这里我们要建立一个新变量y,以表示不同的组,它的值就等于相应组的组中值。所有160个观测值中,最大的为1.77,最小的为0.51,我们以0.1为组距,将所有观测值归入13个组。以下是以直方图描述该资料分布的SAS程序。

libnamea'e:\data\';dataa.case2_1;

infile'e:\data\data2_1.txt';

inputx@@;

ifx<0.6theny=0.55;

ifx>=0.6andx<0.7theny=0.65;

ifx>=0.7andx<0.8theny=0.75;

ifx>=0.8andx<0.9theny=0.85;

ifx>=0.9andx<1.0theny=0.95;

ifx>=1.0andx<1.1theny=1.05;

ifx>=1.1andx<1.2theny=1.15;

ifx>=1.2andx<1.3theny=1.25;

ifx>=1.3andx<1.4theny=1.35;

ifx>=1.4andx<1.5theny=1.45;

ifx>=1.5andx<1.6theny=1.55;

ifx>=1.6andx<1.7theny=1.65;

ifx>=1.7thenY=1.75;procgchart;

vbary/type=freqlevels=13inside=freqspace=0width=6;run;

这里的数据步和上面我们计算描述性统计量时的基本相同,只是增加了建立新变量y的步骤(看起来是不是很烦琐,我最烦这一种操作步骤了,不过这是基础知识,非掌握不可)。大家在此深刻体会一下SAS中利用条件语句给变量赋值的方法。Gchart过程的功能非常强大,这里我们也就使用了它的全部功能的沧海一粟罢了。Gchart过程其实属于SAS的Graph模块,因此要运用此过程必须保证Graph模块的存在。Vbar语句表示我们要做的是竖立的条形图,其后跟的是作图所要依据的分类变量,这里我们以变量y来做直方图。斜杠后的内容是对所做条形图进行控制的选项,本段程序所涉及的各选项的含义和功能见下表(表2.4)。表2.4

各选项的含义和功能选项含义和功能type条图的类型,即用竖条的高度表示哪种统计量,可以是频数、百分比、均数、合计等levels分组的数目,如果变量为字符型则该选项无效。inside将相应的统计量显示在竖条的内部,可显示频数、百分比、均数、合计等space指定竖条之间的距离,以字符宽度为单位(本例设为零,因为我们做的是直方图)width指定竖条的宽度,以字符宽度为单位还有更多的选项如控制图形颜色、图形整体大小、图例的选项等,这里我们不一一介绍。大家先掌握到基本够用的程度就行了,用得多了自然会逐步提高。将以上程序提交执行,做出的图形如下(图2.1)。

图2.1怎么样,还凑合吧!你以后还会做出更漂亮的图形来,你就先暗自窃喜吧!各位是否还记得,univariate过程也具有绘制直方图的功能,程序中加入histogram语句就可以了,关于此内容我们留待以后再讨论吧。2.小样本资料的统计描述小样本资料的处理和大样本资料的处理是大同小异,主要的区别在于小样本资料无需进行频数表的编制。其实对于SAS来说,无论大样本还是小样本,SAS均是同等看待,同等处理,也就是说无论什么方法均可应用于大样本或小样本。我们在这里之所以要分开来讨论,主要是想贴近医学统计学的教学内容,以便大家能进行同步练习,掌握统计学涉及的一般计算过程的SAS编程实现方法。例2-2

1999年长沙市某大学100名正常女子总胆固醇(mmol/L)测定结果如下表(表2.5),请进行统计描述。表2.5

100名正常女子总胆固醇(mmol/L)3.183.783.413.753.553.005.263.603.504.253.583.984.175.083.264.482.702.753.573.875.504.803.514.065.712.783.984.524.535.133.323.074.614.503.705.354.834.284.955.033.023.783.633.902.503.234.834.733.954.125.593.913.843.913.504.784.334.203.522.983.275.254.844.262.584.063.884.343.863.9023.874.503.664.154.904.754.173.843.954.133.963.683.295.353.994.414.363.254.573.904.593.953.924.135.553.803.92和以上例子相同,先将数据以文本方式录入。此处将其录入“e:\data\case2_2.txt”,然后进行编程。此处各种描述性统计量的计算和例2-1的方法完全相同,大家可以自己练习一下。这里我给出处理后的结果,大家可以对照结果判断自己的处理是否正确。

TheSASSystemTheMEANSProcedureAnalysisVariable:xMeanMedianStdDev1stPctl5thPtcl95thPctl99thPctlLowerQuartileUpperQuartileMinimumMaximum4.05830003.95500000.71006342.54000002.88000005.35000005.65000003.59000004.52000002.50000005.7100000

下面介绍一种更为简便的直方图绘制方法,这种方法不必引入新的分组变量,应用一些选项直接对原变量进行操作,得出完全相同的结果。此处最小值为2.5,最大值为5.71,我们取组距为0.3,共分为11组,SAS程序如下。

libnamea'e:\data\';dataa.case2_2;

infile'e:\data\data2_2.txt';

inputx@@;procgchart;

vbarx/type=freqspace=0width=6midpoints=2.65to5.65by0.3;run;

这里的midpoints选项用来指定直方图中各组的组中值,可以是一系列数值的列表,各数值之间以空格分开,也可以是起始值和中止值加间隔数(本例即为此种形式),格式为“…to…by…”,还可以是两者相结合的形式。其它选项和例2-1中的相同。需要说明的是,levels选项在以midpoints选项指定了组中值的情况下是无效的,因为midpoints选项中已经包含了分组数目的信息。提交执行以上程序,结果如下图(图2.2)。

图2.2二、计数资料的统计描述计数资料的描述性统计量,最为主要的是相对数,即率、构成比、相对比等。统计图形表述方式有圆图和百分条图等。下面我们将例2-1的数据转换为计数资料的形式,用以展示计数资料统计描述的SAS编程实现方法。例2-3

我们假设甘油三酯水平高于1.5者为异常,将160名女子划分为正常和异常两组。分别计算正常组和异常组占总人数的构成比,并用圆图和百分条图展示其构成情况。此处我们引入一个变量g,用以表示样本的分组情况,正常组取值为0,异常组取值为1,采用如例2-1中的条件语句为变量g进行赋值。对于计数资料各组构成比或率等统计量的计算,我的经验是用Tabulate过程比较方便。Tabulate过程的主要功能是按照给定的分组变量制作各种形式的表格,这里我们也只是用到它的强大功能的一小部分。在做百分条图时,我们用制作水平条图的hbar语句,将变量g作为某个分组因素中的亚分组因素,所以还要引入一个分组变量i,但i的取值只有一个(因此处只有一个大组)。Pie语句是用来制作圆图的,它与hbar语句的格式均类似于前面例子中用到的vbar语句,仅在个别选项的使用上存在一些差异。这次我们将计算统计量和作图过程编入一个程序文件,一次完成两个步骤。SAS程序如下。libnamea'e:\data\';datatemp;

seta.case2_1;

i=1;

ifx<=1.5theng=0;

ifx>1.5theng=1;proctabulate;

classg;

tableg*(npctn<g>);run;procgchart;

pieg/type=freqdiscreteslice=arrowvalue=inside;

hbari/type=freqdiscretesubgroup=gwidth=8;run;procgchart;

hbari/type=freqdiscretesubgroup=gwidth=8;run;这次的data步不同于以前的例子,这次我们将数据定义为临时文件,然后使用set语句将永久数据集文件(例2-1所建立)中的记录导入当前文件。Set语句的功能就是将其后所跟数据集文件中的记录按照相应选项(set语句后可有相应的控制选项)的控制导入到data语句所指定的文件中。引入的分组变量i我们取唯一值1,直接使用赋值语句,g要根据不同的x值取0或1,使用条件语句对其赋值。此处还可以将两个条件语句简化为一个,即ifx<=1.5theng=0elseg=1;tabulate过程中table语句用来实现具体的表格绘制过程,其后是作为表格三个维度的分组变量,表示三个维度的变量间以逗号分隔,三个维度分别是页(page)、横轴(side)和纵轴(top)。三个维度不必全部指定,如果只指定一个维度(如本例),SAS将其当作纵轴处理;如果指定两个,SAS将其作为横轴和纵轴处理,前面的变量为横轴,后面的变量为纵轴;若指定三个维度,在最前的变量为页,中间的为横轴,最后的为纵轴。同一维度可以是一个变量,也可以是多个变量的排列组合,多个变量的排列组合形式如下:(1)并列:变量间以空格相间隔,如“ab”的表格形式如下:a1a2a3b1b2b3

(2)交叉:变量间以星号(*)相连接,如“a*b”的表格形式如下:a1a2a3b1b2b3b1b2b3b1b2b3

(3)混合形式:变量间以空格或星号分隔,必要时加圆括号,如“a*(bc)”的表格形式如下:a1a2b1b2c1c2b1b2c1c2另外,和变量一同在table语句中出现的还有一些表示特定统计量的SAS关键词,可以控制相应统计量在表格中的显示。Tabulate过程可以计算的统计量及其在table语句中的名称如下表(表2.6)。表2.6

Tabulate过程可以计算的统计量及其在table语句中的名称名称所代表的统计量n单元格频数nmiss单元格上有遗漏数据的记录个数mean均数min最小值max最大值sum合计std标准差range全距,即最大值与最小值之差uss未校正的总平方和pctn频数百分比,须指定相应的分母项pctsum某变量(数值型)合计占指定合计值的百分比css校正的总平方和tderr均数的标准误cv变异系数t用来检测均数是否为零的单侧t值prt上述t值的统计显著程度var方差sumwgt加权值的总和本例中语句tableg*(npctn<g>)表示以g为纵轴,并在g的各水平下显示其频数和所占的百分比,百分比的计算需指明计算所需的分母,是以尖括号内的分组变量各水平的相应合计为分母。Gchart过程中,pie语句后的选项discrete表示将变量g当作离散型变量来处理(否则将当作连续性变量计算其组中值),这样就等同于g为字符型变量的情况(若g为字符型则不需要此选项)。Silce选项用来指定对代表各组的扇形区域进行标识的方式,value是用来指定对各扇形区域标注统计量的位置,slice选项和value选项后所能跟的具体项目名称和含义是完全相同的,各项目名称及含义见下表(表2.7)。表2.7

各项目名称及含义arrowinsidenoneoutside标注在外部,以箭头连接标注在内部不标注标注在外部百分条图的制作是通过对变量i做水平条图实现的,将g看作各i分组中的下层分组变量。Subgroup选项用来在每个组的横条中按照其指定的下层分组变量再分组,各下层分组的相应部分用不同的颜色表示,这里我们指定下层分组变量为g。程序中有关制图的两个gchart过程可以简化为一个gchart过程的两个步骤,即procgchart;

pieg/type=freqdiscreteslice=arrowvalue=inside;

hbari/type=freqdiscretesubgroup=gwidth=8;run;将以上程序提交执行,结果如下。(1)各组频数及其结构百分比g01NPctN(%)NPctN(%)14188.131911.88(2)圆图(图2.3)图2.3

(3)百分条图(图2.4)图2.4好了,这一章的内容先讨论这些,因水平有限,错误与不足在所难免,还请各位多多指点,互相学习嘛!第三章将讨论两组资料均数比较的SAS编程实现,即t检验与u检验的编程操作方法,请各位耐心等待。非常欢迎各位的宝贵意见和建议,网站中有我的e-mail地址,大家可直接和我e-mail联系。第三章

两组资料均数比较的SAS编程实现一、均数差别比较的t检验1.样本均数和总体均数比较的t检验样本均数和总体均数差别的比较可以直接进行比较,也可以将其看成每个测量值和总体均数差值的均数和0的比较,均为单变量分析的形式,可用前面介绍的三个执行描述性统计分析功能的过程来完成。这里我们用univariate过程和means过程分别演示这种分析的SAS编程实现方法,summary过程的操作方法各位可以自己试着练习一下。以Means过程实现对单变量分布位置的t检验,只需在procmeans语句后添加t和probt(以前的版本为prt,SAS8.2中也可通用)两个选项,SAS即给出样本均数与0比较的t检验值和t分布曲线下该t值对应的双侧尾部面积。univariate过程在默认状态下即可给出单变量分布位置的t检验结果。例3-1

通过以往大规模调查,已知某地婴儿出生体重均数为3.30kg,今测得35名难产儿出生体重如下表(表3.1),请问该地难产儿出生体重与一般婴儿出生体重是否不同?表3.13.833.284.053.623.492.863.903.393.544.162.763.803.873.233.483.483.873.503.532.953.723.523.36和以前的方法相同,先将数据以文本方式录入,存入“e:\data\data3_1.txt”,然后编制程序完成分析过程。程序如下:

libnamea'e:\data\';

dataa.data3_1;

Infile'e:\data\data3_1.txt';

inputx@@;procunivariatemu0=3.30alpha=0.05;

varx;

histogramx/normalcbarline=greencfill=redbarwidth=8

midpoints=2.75to4.35by0.2;run;Procunivariate语句后选项mu0=3.30用来指定univariate过程对样本进行分布位置的假设检验时的位置参数,以便进行样本均数和指定值之间差别的假设检验;alpha=0.05用来指定进行各种总体参数的估计时可信区间的置信水平。这里我们顺便演示一下univariate过程绘制直方图的方法。histogram语句用来指示univariate过程对变量x绘制直方图,其后的normal选项指示在直方图上拟合并绘制出正态分布的密度曲线;cbarline=green选项用来指定条形的边框颜色,此处表示将条形的边框显示为绿色;cfill=red选项用来指定条形内部的填充色,此处设置为红色;这里的‘barwidth=’选项和gchart过程中vbar语句后的‘width=’选项含义完全相同,用来指定条形的宽度,此处设置为8个字符宽度;‘midpoints=’选项则和gchart过程中vbar语句后的‘midpoints=’选项在含义及使用方法上完全相同。提交以上程序,输出结果如下:

TheSASSystemTheUNIVARIATEProcedureVariable:xMomentsN35SumWeights35Mean3.49457143SumObservations122.31StdDeviation0.37759567Variance0.14257849Skewness0.34778371Kurtosis-0.3363107UncorrectedSS432.2687CorrectedSS4.84766857CoeffVariation10.8052067StdErrorMean0.06382532

BasicStatisticalMeasuresLocationVariabilityMean3.494571StdDeviation0.37760Median3.480000Variance0.14258Mode3.140000Range1.51000

InterquartileRange0.60000NOTE:Themodedisplayedisthesmallestof3modeswithacountof2.

Tests

for

Location:

Mu0=3.3TestStatisticpValueStudent'stt3.048499Pr>|t|0.0044SignM4.5Pr>=|M|0.1755SignedRankS166Pr>=|S|0.0048

Quantiles

(Definition

5)QuantileEstimate100%Max4.3099%4.3095%4.2490%4.0575%Q33.8050%Median3.4825%Q13.2010%3.115%2.861%2.790%Min2.79

ExtremeObservationsLowestHighestValueObsValueObs2.79143.9172.8664.0532.95324.16133.11184.2483.14194.3010

图3.1结果中第三个表格(标题为‘testforlocation’)是关于样本分布位置的假设检验,这是我们此处所要关心的。大家可以看到,除一般的t检验外,univariate过程还给出了非参数检验方法的检验结果(符号检验和符号秩和检验)。这里直方图的绘制效率很高(图3.1),简单的一条语句就绘制出如此标准而复杂的图形,比起前面所用的gchart过程要高效的多,而且它也可以用各种选项来控制图形的各种要素,图形的美观程度也会丝毫不差。此程序的输出结果中,还有关于样本拟合分布的情况,这里不再列出,以节省篇幅。Means过程也可用相似的方式实现对此类资料的t检验,但它不能像univariate过程那样随意设置位置参数,只能对样本均数和0的差别进行比较,因此必须先在数据步对数据作适当的处理,也就是先将数据转化为原始数值与某已知数值(总体均数)的差,在对此差值进行统计分析。以下是用means过程对例3-1进行分析的程序。libnamea'd:\data\';datatemp;

seta.data3_1;

d=x-3.30;procmeansmeanstderrtprobt;

vard;run;执行后结果如下:

TheSASSystemTheMEANSProcedureAnalysisVariable:dMeanStdErrort

ValuePr

>

|t|0.19457140.06382533.050.0044结果中从左至右分别为样本均数、均数标准误、t检验值和p值(该t值对应的双侧尾部面积)。大家可以看到,两种过程的分析结果是一致的,而means过程的分析结果更加简单明了,大家可以根据具体需要选用不同的处理过程。2.配对设计资料的t检验配对设计的t检验与样本均数和总体均数比较t检验的过程基本相同,也可用univariate过程、means过程或summary过程来完成。前者与后两者的不同之处仅在于样本分布位置的假设检验中位置参数的不同,这里的处理针对的是配对数据的差值,位置参数设置为0(用以检验配对数据差值的总体均数是否为零)。例3-2

为判断简便法和常规法测定尿铅含量的差别有无统计学意义,对12分人尿同时用两种方法进行测定,所的结果如下表(表3.2),请分析两种测定方法的测量结果是否不同?表3.2样品编号简便法测定结果常规法测定结果12.412.8022.903.0432.751.8842.233.4353.673.8164.494.0075.164.4485.455.4192.061.24101.641.83111.061.45120.770.92针对以上数据和分析要求,编制程序如下:libnamea'e:\data\';dataa.data3_2;

infile'e:\data\data3_2.txt';

inputx1x2;

d=x2-x1;procunivariatemu0=0alpha=0.05;

vard;run;其实这里mu0=0和alpha=0.05两个选项可以不必写出,因为在默认状态下这两个选项的取值就是如此。提交以上程序,输出结果如下:

TheSASSystemTheUNIVARIATEProcedureVariable:dMomentsN12SumWeights12Mean-0.0283333SumObservations-0.34StdDeviation0.60466119Variance0.36561515Skewness0.2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论