SAS统计(网) 下载本文

血 型 O A B AB M 431 388 495 137 N 490 410 587 179 MN 合计 902 1823 800 1598 950 2032 325 641 合 计 1451 1666 2977 6094 解:程序如下:

data.yt2_11; do a=1 to 4; do b=1 to 3; input count @@; output; end; end; cards;

431 490 902 388 ... ; proc freq;

tables a * b/chisq; weight count; run;

例6.3 用甲乙两种培养基培养结核杆菌45份,问两种培养基何者为优?(医学统计学第一版P.310 1.14题)

乙 培 + 养基 - 甲培养基 + 12 4 - 16 13 29 合计 28 17 45 合计 16 解:程序如下(结果给出c2及其P值):

33

data a.yt1_14; input r c num @@; cards;

1 1 12 1 2 16 2 1 4 2 2 13 ; proc freq; tables r*c/agree; weight num; run;

注:该方法在ASSIST视窗中无法实现,在低版本的SAS中也无法实现。

第七章 方差分析和协方差分析

方差分析和协方差分析在SAS系统中由SAS/STAT模块来完成,其中我们常用的有ANOVA过程和GLM过程。前者运算速度较快,但功能较为有限;后者运算速度较慢,但功能强大,我们做协方差分析时就要用到GLM过程。本章将首先介绍方差分析所用数据集的建立技巧,然后重点介绍这两个程序步。

其实,这里的速度快慢只是相对而言,SAS的处理速度是首屈一指的。举个例子,这个暑假我做了一个有6600条记录的,7因素的,交叉设计的方差分析(是不是已经有人喊头痛了?),我先是用SPSS FOR WIN95 7.5来做,运行了大约10分钟才出结果。我又换用SAS FOR WIN95 6.12来做,结果用了――2.47秒!

§7.1 方差分析数据集的建立技巧

7.1.1 方差分析的数据集格式

统计分析所用的数据格式和我们在分析整理资料时所用的格式是不同的。一般来说,数据集中应至少有一个结果变量,用于记录不同处理因素水平下观察值的大小;至少有一个处理因素变量,用于记录处理因素的类型及其水平数。以单因素方差分析为例,就应有一个结果变量和一个处理因素变量;而两因素的方差分析应有一个结果变量和两个处理因素变量。

例7.1 某职业病防治院对31名石棉矿工中的石棉肺患者、可疑患者及非患者进行了用力肺活量测定,请给出数据集的结构(卫统p44 例5.1)。

34

解:数据集中应有两个变量,x和group。x记录肺活量的大小;group取值为1、2或3,分别代表石棉肺患者、可疑患者及非患者。

例7.2 某厂医务室测定了10名氟作业工人工前、工中及工后4小时的尿氟浓度,请给出数据集的结构(卫统p46 例5.2)。

解:数据集中应有三个变量,x、group和worker。x记录尿氟浓度;group取值为1、2或3,分别代表工前、工中及工后;worker取值为1到10,分别代表10名工人。

7.1.2 方差分析数据集的建立技巧

可见方差分析的数据集其变量取值有一定的规律,因此可以利用循环语句和判断语句来简化输入。

例7.3 请建立例6.1的数据集。

解:我们可以一个一个的输入变量group的值,但这里给出一种更酷的建立方法。

libname a 'c:\%user'; data a.wtli5_1; group=1; if _n_>11 then if _n_>20 then group=3; else group=2; ; input value @@; cards; 1.8 1.4 1.5 2.1 ... ... 3.3 3.5 ; proc print; run; 此处的_n_为SAS系统变量,表明读入的数据为第几条记录,由于石棉肺患者只有11人,因此第12条记录只能是可疑患者的记录,同理,从第20条记录开始的只能是非患者的记录。这里利用判断语句来完成从_n_到group的转换。 例7.4 请建立例7.2的数据集。

解:此例中数据较有规律,各组的例数均相等,这可正是循环语句大显身手的时候。

libname a 'c:\%user'; data a.wtli5_2; do group=1 to 3; do worker=1 to 10; input value @@;

35

这里的SAS语句非常类似于Foxbase语句,两个循环分别控制了group和worker的取值,这在输入数据时是常见的一种技巧。 output; end; end; cards; 90.53 88.43 47.37 ... ... 105.27 58.95 ; proc print; run; 两个变量只是循环变量,因此要用output语句写入数据集中。 请注意x变量和处理因素变量的对应关系,不要改变数据块的次序,否则建立的数据集是错的。 §7.2 引 例

例7.5 请回答在例7.1中三组石棉矿工的用力肺活量有无差别?

解:由于是三组做比较,因此要用方差分析法。在建立数据集后可用ANOVA过程

或GLM过程进行分析,同时给出选项进行各组均数的两两比较(此处用SNK法),两过程的输出格式基本一致。对于单因素的方差分析,在比较之前一般要考虑方差齐性的问题。这里可以用GLM过程中的HOVTEST选项实现,实际上这也是在SAS中做方差齐性检验的唯一途径。 ① 设定数据库环境: LIBNAME A 'C:\\USER';

② 数据步,建立数据集(略):

③ ANOVA或GLM过程,进行方差分析并同时做两两比较(SNK法): PROC ANOVA DATA=A.WTLI5_1; CLASS GROUP;

MODEL VALUE=GROUP; MEAN GROUP /SNK; RUN;

PROC GLM DATA=A.WTLI5_1; CLASS GROUP;

MODEL VALUE=GROUP /SS1; MEAN GROUP /SNK HOVTEST; RUN;

这里的GLM过程中有两个选项,SS1要求只输出方差分析SS1模型的结果(默认输出SS1和SS3两种模型的结果),HOVTEST则要求进行方差齐性检验(该选项只能在SAS 6.12以上的版本中实现)。

§7.3 ANOVA过程

36