附 录 常用生物统计方法的SAS程序
一、SAS系统简介
SAS是“Statistical Analysis System”的缩写,是一个用来管理分析数据和编写报告的组合软件系统。其基本部分是SAS/BASE软件。1966年,美国North Carolina 州立大学开始开发SAS统计软件包,1976年该系统完成,同时成立SAS研究所。当初该系统只能运行于大型计算机系统,1985年出现了当今我们广泛使用的SAS微机版本。SAS系统具有统计分析方法丰富、信息储存简单、语言编程能力强、能对数据连续处理、使用简单等特点。SAS是一个出色的统计分析系统,它汇集了大量的统计分析方法,从简单的描述统计到复杂的多变量分析,编制了大量的使用简便的统计分析过程。
二、SAS系统运行的几个重要前提条件
(一)SAS系统运行时要同时打开的文件较多,因此在微型计算机的系统配置文件CONFIG.SYS中应指定FILES=50或以上;
(二)SAS系统软件有时间租期限制,因此只有机器时间(DATE)在软件有效期内才能运行。时间租期取决于SAS出售版本日期,即所谓的SAS诞生日(BIRTHDAY)。
(三)SAS系统应全部安装到硬盘的SAS子目录下,硬盘应至少有10M空间。
三、SAS系统的启动与关闭
(一)启动 如果SAS系统安装在C盘的子目录SAS下,在WINDOWS操作系统中,可以直接用鼠标双击桌面上SAS系统的快捷键图标,即进入SAS系统。
在DOS 操作系统中,则开机后先进入SAS子目录,再输入SAS并按回车键即进入SAS显示管理系统。
C>:cd sas( 或者C>:cd\sas(
C>:\sas\sas(
此时屏幕上出现三个窗口,它们依次是:OUTPUT(SAS结果输出窗口,在这里显示由SAS过程所输出的结果)、LOG(SAS日志窗口,随着SAS语句的执行,显示出SAS系统的信息和已执行的语句)和PGM(SAS程序编辑窗口,在此你能输入和编辑SAS语句,但应注意程序不要写在行号上)。
(二)退出SAS 在上述三个窗口的任一窗口的命令行上输入BYE或ENDSAS并按回车键即可退出SAS。
四、SAS程序结构、程序的输入、修改调试和运行
(一)程序结构 在SAS系统中任何一个完整的处理过程均可分为两大步——数据步和过程步来完成。
数据步——将不同来源的数据读入SAS系统建立起SAS数据集。每一个数据步均由DATA语句开始,以RUN语句结束。
过程步——调用SAS系统中已编号的各种过程来处理和分析数据集中的数据。每一个过程步均以PROC语句开始,RUN语句结束,并且每个语句后均以“;”结束。
(二)程序的输入、修改调试和运行 SAS程序只能在PGM窗口输入、修改,并写在PGM窗口预先设置好的行号区的右边。SAS程序语句可以使用大写或小写字母或混合使用来输入,每个语句中的单词或数据项间应以空格隔开。每行输入完后加上“;”,但在数据步中CARDS语句后面的数据行不能加“;”,必须等到数据输入完后提行单独加“;”。在键入过程中可移动光标对错误进行修改。
SAS语句书写格式相当自由,可在各行的任何位置开始语句的书写。一个语句可以连续写在几行中,一行中也可以同时写上几个语句,但每个语句后面必须用“;”隔开。
当一个程序输入完后,是否能运行和结果是否正确,只有将其发送到SAS系统中心去执行后,在LOG和OUTPUT窗口检查才能确定。发送程序的命令为F10功能键或SUBMIT。当程序发送到SAS系统后,PGM的程序语句全部自动清除,LOG窗口将逐步记下程序运行的过程和出现的错误信息(用红色提示错误)。如果过程步没有错误,运行完成后,通常会在OUTPUT窗口打印出结果;如果程序运行出错,则需要在PGM窗口用RECALL(或F9)命令调回已发送的程序进行修改。
五、常用生物统计方法的SAS程序下面结合本教材介绍几种常用生物统计分析方法的SAS程序,读者应注意,所提供的这些程序并不是一成不变的,根据分析的需要,每一种程序中各语句都有不同的选项,下面的程序只给出了一些最基本的语句。只要大家熟悉并掌握了SAS程序,就可以根据需要灵活应用。
(一)t检验
1、样本平均数与总体平均数的差异显著性检验(教材【例5.1】)
DATA A;
INPUT y@@;
Y=y-114;
CARDS;
116 115 113 112 114 117 115 116 114 113;
PROC MEANS N MEAN STDERR T PRT;
RUN;
程序说明:样本平均数与总体平均数的差异显著性检验可调用MEANS过程。DATA语句产生临时数据集A,表明数据步的开始;INPUT语句指明读取变量y,@@表示读入一条观测值后不换行,连续读入数据,使用@@符号可在一个物理行中输入多条观测值,减少数据输入行;CARDS语句表明以下为数据行,数据行下的“;”表示数据行结束;PROC MEANS 语句指明调用MEANS过程对数据集A进行分析,输出样本含量N、平均数MEAN、平均数的标准误STDERR、学生氏T值和t值概率PRT;RUN语句表示过程步结束,开始运行过程步。
2、配对试验资料的t检验(教材【例5.5】)
DATA B;
INPUT ID x1 x2;
d=x1-x2;
CARDS;
1 37.8 37.9 2 38.2 39.0 3 38.0 38.9 4 37.6 38.4
5 37.9 37.9 6 38.1 39.0 7 38.2 39.5 8 37.5 38.6
9 38.5 38.8 10 37.9 39.0;
PROC MEANS MEAN STDERR T PRT;
VAR d;
RUN;
程序说明:配对试验资料的t检验可调用MEANS 过程。
3、非配对试验资料的t检验(教材【例5.3】)
DATA C;
INPUT breed y@@;
CARDS;
1 1.20 2 2.00 1 1.32 2 1.85 1 1.10 2 1.60 1 1.28 2 1.78
1 1.35 2 1.96 1 1.08 2 1.88 1 1.18 2 1.82 1 1.25 2 1.70
1 1.30 2 1.68 1 1.12 2 1.92 1 1.19 2 1.80 1 1.05;
PROC TTEST;
CLASS breed;
VAR y;
RUN;
程序说明:非配对试验资料的t检验需调用TTEST过程。INPUT语句读入处理变量breed(品种)和试验结果y(增重);CLASS语句定义分类变量,TTEST过程要求分类变量只能有两个水平,此处为1(长白猪)和2(蓝塘猪)。
( 二)方差分析 对于一般的方差分析(平衡资料,即各处理重复数相等)可用ANOVA过程;对于非平衡资料(各处理重复数不等)的方差分析可用GLM过程。下面分别ANOVA过程和GLM过程。
1、ANOVA过程的程序格式
PROC ANOVA 选项;
CLASS 变量;
MODEL 依变量=效应/选项;
MEANS 效应/选项;
程序说明:PROC ANOVA 语句中的“选项”——DATA=输入数据集,OUTSTAT=输出数据集,用于存储方差分析结果;CLASS语句指明分类变量,此语句一定要设定,并且应出现在MODEL语句之前;MODEL语句定义分析所用的线性数学模型;MEANS语句计算各处理效应的平均数,“选项”用于设定多重比较方法——常用的有LSD法、DUNCAN(Duncan新复极差法)、TUKEY(Tukey固定极差检验法)、DUNNETT和DUNNETU(Dunnett氏最小显著差数两尾和一尾检验法),显著水平的确定采用如ALPHA=0.01(表示将显著水平设定为0.01),缺省为0.05。
上述语句中,关键语句在于定义线性数学模型。同一试验资料,根据模型不同而异。常用的模型定义语句有:MODEL y=a(单因素试验资料的方差分析)、MODEL y=a b(两因素试验资料无互作模型)、MODEL y=a b c(三因素主效模型)、MODEL y=a b a*b(两因素试验资料有互作模型,也可写成y=a|b)、MODEL y=a b(a)(两因素试验资料嵌套模型,用于系统分组资料)、MODEL y1 y2=a b(两元两因素主效模型)。
结果输出包括分类变量信息表、方差分析表和多重比较表等。
2、GLM过程的程序格式
PROC ANOVA 选项;
CLASS 变量;
MODEL 依变量=效应/选项;
MEANS 效应/选项;
RANDOM 效应/选项;
CONTRAST,对比说明”效应 对比向量;
OUTPUT OUT=输出数据集 PREDICTED| P=变量名 RESIDUAL|R=变量名;
程序说明:PROC GLM 语句设定分析数据集和输出数据集;;CLASS语句指明分类变量,此语句一定要设定,并且应出现在MODEL语句之前;MODEL语句定义分析所用的线性数学模型和结果输出项;MEANS语句计算平均数,并可选用多种多重比较方法;RANDOM语句指定模型中的随机效应,“选项”——Q给出期望均方中主效应的所有二次型;CONTRAST语句用于对比检验;OUTPUT语句产生输出数据集,P=定义y预测值变量名,R=定义误差变量名。
模型定义仍是GLM过程使用的关键(同上)。通过设定模型(MODEL),即可对不同的试验设计资料进行分析。当处理效应为固定效应时,通过MEANS语句计算平均数,进行多重比较,当处理效应为随机效应时,可利用RANDOM语句或VARCOMP过程估计方差分量。
(三)线性回归分析
1、一元线性回归分析(教材【例8.1】)
DATA G;
INPUT x y@@;
CARDS;
80 2350 86 2400 98 2720 90 2500 120 3150 102 2680
95 2630 83 2400 113 3080 105 2920 110 2960 100 2860;
PROC REG CORR;
MODEL y=x / CLM CLI;
RUN;
程序说明:一元线性回归分析可调用REG 过程。PROC 语句选项CORR,要求输出简单相关系数;MODEL 语句指明输出CLM——y总体平均数的置信区间和CLI——单个y值的置信区间。
2、多元线性回归分析(教材第九章习题的第9题)
DATA H;
INPUT number x1 x2 x3 y@@;
CARDS;
1 23.73 5.49 1.21 15.02 2 22.34 4.32 1.35 12.62 3 28.84 5.04 1.92 14.86
4 27.67 4.72 1.49 13.98 5 20.83 5.35 1.56 15.91 6 22.27 4.27 1.50 12.47
7 27.57 5.25 1.85 15.80 8 28.01 4.62 1.51 14.32 9 24.79 4.42 1.46 13.76
10 28.96 5.30 1.66 15.18 11 25.77 4.87 1.64 14.20 12 23.17 5.80 1.90 17.07
13 28.57 5.22 1.66 15.40 14 23.52 5.18 1.98 15.94 15 21.86 4.86 1.59 14.33
16 28.95 5.18 1.37 15.11 17 24.53 4.88 1.39 13.81 18 27.65 5.02 1.66 15.58
19 27.29 5.55 1.70 15.85 20 29.07 5.26 1.82 15.28 21 32.47 5.18 1.75 16.40
22 29.65 5.08 1.70 15.02 23 22.11 4.90 1.81 15.73 24 22.43 4.65 1.82 14.75
25 20.44 5.10 1.55 14.37;
PROC REG DATA=H OUTEST=EST;
MODEL y=x1 x2 x3;
RUN;
程序说明:多元线性回归分析同样可调用REG 过程。假设该数据资料被已经被建立在A:H.DAT标准文件中,则前面的数据步可以简化,从而直接调用A:盘上的数据,具体程序为:
DATA H;INFILE ’A:H.DAT’;
INPUT number x1 x2 x3 y;
PROC REG DATA=H OUTEST=EST;
MODEL y=x1 x2 x3;
RUN;
(四)协方差分析 (教材【例10.1】)
DATA K;
INPUT t $ x y@@;
CARDS;
ck 1.50 12.40 ck 1.85 12.00 ck 1.35 10.80 ck 1.45 10.00 ck 1.40 11.00
ck 1.45 11.80 ck 1.50 12.50 ck 1.55 13.40 ck 1.40 11.20 ck 1.50 11.60
ck 1.60 12.60 ck 1.70 12.50
1 1.35 10.20 1 1.20 9.40 1 1.45 12.20 1 1.20 10.30 1 1.40 11.30
1 1.30 11.40 1 1.15 12.80 1 1.30 10.90 1 1.35 11.60 1 1.15 8.50
1 1.35 12.20 1 1.20 9.30
2 1.15 10.00 2 1.10 10.60 2 1.10 10.40 2 1.05 9.20 2 1.40 13.00
2 1.45 13.50 2 1.30 13.00 2 1.70 14.80 2 1.40 12.30 2 1.45 13.20
2 1.25 12.00 2 1.30 12.80
3 1.20 12.40 3 1.00 9.80 3 1.15 11.60 3 1.10 10.60 3 1.00 9.20
3 1.45 13.90 3 1.35 12.80 3 1.15 9.30 3 1.10 9.60 3 1.20 12.40
3 1.05 11.20 3 1.10 11.00;
PROC GLM;
CLASS t;
MODEL y=t x / SOLUTION;
MEANS t / DUNCAN;
LSMEANS t / STDERR PDIFF TDIFF;
RUN;
程序说明:协方差分析可调用GLM过程。CLASS语句指明了分类变量为t(这里代表处理,其中ck表示对照组,1、2、3分别代表配方1、配方2、配方3),且必须在MODEL语句之前。MODEL语句定义协方差分析的数学模型。选项SOLUTION给出参数的估计值;MEANS语句中,多重比较选用DUNCAN法(SSR法);LSMEANS语句计算效应的最小二乘估计的平均数(LSM);STDERR给出LSM的标准误;TDIFF,FDIFF要求显示检验H0:LSM(i)=LSM(j)的t值和概率值。
同前面一样,假设该数据资料被已经被建立在A:K.DAT标准文件中,则前面的数据步也可以简化。