sas程序基本语法(SAS常用程序)

前言 写这个东西的目的是针对我们研究生在实验中所遇到的一些需要进行数理统计的事实而进行的也许我们能够看到许多论文中都有诸如单因素方差分析、多重比较、卡方检验、一元线性回归这样的结果一方面,我们佩服作者能够得到这样一个很好的实验结果,但是另一方面,如果我们有和作者数据相似的数据或者数据结构一样的数据,如何通过数理统计来达到相同或者相似的结论呢,今天小编就来聊一聊关于sas程序基本语法?接下来我们就一起去研究一下吧!

sas程序基本语法(SAS常用程序)

sas程序基本语法

前言

写这个东西的目的是针对我们研究生在实验中所遇到的一些需要进行数理统计的事实而进行的。也许我们能够看到许多论文中都有诸如单因素方差分析、多重比较、卡方检验、一元线性回归这样的结果。一方面,我们佩服作者能够得到这样一个很好的实验结果,但是另一方面,如果我们有和作者数据相似的数据或者数据结构一样的数据,如何通过数理统计来达到相同或者相似的结论呢。

也许我们在本科阶段以及接触过了数理统计的基础知识,这里我不想再重复这个过程。如果这个方面有所欠缺,建议你可以翻阅有关数理统计的相关书籍,《生物统计付实验设计》就是这样一本很好的教材。如果我们已经掌握了数理统计的基础知识,只是在实际运用中不知如何去运用软件或者现在还不知道用哪些软件。那么,我隆重推荐SAS软件,这个软件的好处在于,第一,它是国际上数理统计最为标准的软件,其他软件都是按照这个软件的原理的方法进行设计的。第二,SAS软件中的编程部分使得你可以随心所欲的编写你需要进行统计的统计量、统计过程以及最后的显示方式,SAS编程已经成为了一门专业的计算机语言,其语法灵活,简单易学。第三,SAS软件表现出对数量的强大的预处理功能,这是其他数理统计软件所欠缺的。第四,SAS软件可以从网站上容易的获取,其对系统的要求也不高,可以兼容许多计算机版本。第五,SAS软件的分析结果比较直观,基本上都有注释,只要你有一定的英语水平,看懂SAS分析结果应该不是一件困难的事情。

这里,我不再论述SAS软件系统的一些强大的可视化操作功能部分以及数据的预处理部分,这些部分可以通过SAS-GUIDE自己学到,我只是把一些我们能够经常用到的SAS程序给大家分享一下,同时也说明这些过程或者程序对数据进行了那些操作,将得到什么样的结果。希望大家在处理数据的时候能够对号入座,将自己的数据跟例题的数据进行比较,将自己所要统计的东西跟例题进行比较,我想这样最起码我们能够发挥自己的聪明才智,在对SAS系统不是很了解的情况下也可以使用其部分功能完成自己的工作。

大家在使用SAS软件分析数据时有任何问题可以联系本人(QQ:549875752,Tel:15105605836),此外由于本人水平有限,编写中难免有所错误和遗漏,欢迎各位同学和老师批评指正。

描述性统计MEANS过程

一、描述性统计:是描述一个整体(相同处理相同的情况)的平均数、方差、分布、峰态等总体情况的统计。

二、SAS中描述性统计的过程:

SAS中用于描述性统计的过程有很多,主要有MEANS、SUMMARY、UNIVARIATE三个过程,这里我们着重讲解MEANS过程。因MEANS过程除了可以用于描述性统计以外,还可以用于单个样本总体均数的t检验过程,且MEANS过程可以满足大部分用户的需要,所以单样本总体均数t检验过程不再赘述。

三、MEANS过程的可选项:

N:观察值个数

NMISS:缺失值个数

MEAN:平均数

STD:标准差

MIN:最小值

MAX:最大值

RANGE:极差=最大值-最小值

SUM:总和

VAR:方差

USS:平方和

CSS:矫正平方和

CV:变异系数

STDERR:标准误=标准差/变量个数

T:在H0:u=0时的t值

PRT或PRBOT:在H0:u=0时t大于t的概率

SKEWNESS:偏度

KURTOSIS:峰度

CLM:95%置信区间

LCLM:95%置信区间下限

UCLM:95%置信区间上限

MAXDEC:小数点后位数

四、一个MEANS过程统计程序:

data ;

Input x@@;

Cards;

1.2 1.5 1.7 2.1 2.5 2.1 1.7 2,1 1.5 1.1 1.5 2.1(此处为数据)

;

Proc means n sum mean var std stderr cv clm skewness range maxdec=3;

Run;

五、运行结果:

六:说明

本程序演示了如何用MEANS过程进行描述性统计。在data语句后直接输入变量x,后面两个@是指数据将按行输入。cards语句用于输入数据,输入完毕之后空一行加一个分号表示数据输入完毕,然后调用SAS的means过程,直接在后面写需要MENAS过程统计的选项就可以了。(SAS不区分大小写)

七:用MEANS过程统计单样本总体均数t检验

单样本总体均数t检验过程是指已知一个样本和一个已知平均数的总体,问题是如何判断样本是否来自于总体。例如根据以往经验某机器生产的螺母直径平均值为d=5.01cm,而某一次抽取了该机器生产的一批螺母,得到其直径数据如下,问该机器在这一次抽检中生产的螺母比以往是否有显著差异。

4.7 5.2 4.6 5.1 5.09 4.98 4.87 5.01 5.1 5.09

4.78 5.1 4.87 4.9 5.07 5.12 5.31 5.12 4.75 4.77

编写程序如下:

data;

Input x@@;

Y=x-5.01;

Cards;

4.7 5.2 4.6 5.1 5.09 4.98 4.87 5.01 5.1 5.09

4.78 5.1 4.87 4.9 5.07 5.12 5.31 5.12 4.75 4.77

;

Proc means n mean std t probt;

Var y;

Run;

运行结果:

说明:这里,因为MEANS过程只能统计总体均数为0时的t值和p值,所以我们构建了一个新的变量y(y=x-5.01),然后通过统计y在总体均数等于0情况下的t和p就可以得到x在总体均数等于5.01情况下的t和p。通过SAS运行结果,p值>0.05,表明差异不显著,即此次抽检的螺母比以往生产的没有显著差异,如果p<0.05则表明差异显著,样本不是来自于总体。

八、数据预处理:

有一些直接由机器读入的数据会因为机器信号的偏差出现某些不合理的波动,例如在测含氧量时,由于含氧量不可能是负值而一些十分接近0的数值有时会因机器波动而“由正变负”,显然这些负数我们是要在统计分析之前剔除的,此时可以用SAS中自带的数据预处理解决问题。例如数据如下:

15 21 31 16 21 35 37 12 16 19 21 23

22 27 19 28 23 37 28 39 39 27 35 33

36 17 22 27 29 27 30 31 35 37 33 28

16 27 28 32 37 36 38 29 31 37 32 31

27 27 15 18 27 18 27 21 21 32 37 39

要从这60个数据中剔除20以下的数据然后进行MEANS统计,可以编写程序如下:

data;

Input x@@;

If x<20 then delete;

Cards;

15 21 31 16 21 35 37 12 16 19 21 23

22 27 19 28 23 37 28 39 39 27 35 33

36 17 22 27 29 27 30 31 35 37 33 28

16 27 28 32 37 36 38 29 31 37 32 31

27 27 15 18 27 18 27 21 21 32 37 39

;

Proc means n mean std cv;

Run;

运行结果:

可以看到,符合条件的数据(大于等于20)只有49个,这些数的平均数为30.16。

两样本总体均数T检验

一、两样本总体均数T检验用于检验两个总体平均数是否有显著差异。是通过对两个总体进行抽样实验,根据样本的特征来判断这两个总体是否具有显著差异的一种方法。

二、两样本总体均数T检验过程分为总体方差齐次和总体方差不齐次两种情况。总体方差齐次是建立在假设两样本所在总体的方差相等的情况下进行的,而总体方差不齐次建立在两样本所在总体方差不等的情况下进行。

三、SAS的T检验过程可以将两种假设同时计算结果,并且通过方差分析来判断两样本方差的齐次情况。

四、一个T检验实例:

随机对20名中国人和25名法国人的身高进行了测定,数据如下,统计分析中国人身高和法国人身高是否有显著差异。

中国人身高(m):

1.72 1.68 1.81 1.73 1.75 1.77 1.82 1.85 1.9 1.73

1.75 1.70 1.69 1.65 1.50 1.72 1.76 1.82 1.8 1.79

法国人身高(m):

1.81 1.72 1.69 1.77 1.83 1.85 1.79 1.82 1.85 1.91

1.83 1.75 1.77 1.79 1.82 1.83 1.88 1.73 1.78 1.82

1.79 1.74 1.73 1.75 1.79

编写程序如下:

data;

input S$ n;

Do a=1 to n;

Input x@@;

Output;

End;

Cards;

CHN 20

1.72 1.68 1.81 1.73 1.75 1.77 1.82 1.85 1.9 1.73

1.75 1.70 1.69 1.65 1.50 1.72 1.76 1.82 1.8 1.79

FRN 25

1.81 1.72 1.69 1.77 1.83 1.85 1.79 1.82 1.85 1.91

1.83 1.75 1.77 1.79 1.82 1.83 1.88 1.73 1.78 1.82

1.79 1.74 1.73 1.75 1.79

;

Proc ttest;

Class s;

Var x;

Run;

运行结果:

说明:这里是两组数据之间的比较,前面输入S$代表属于一个S,这个S是一个字符变量(组名),后面的n表明每一组数据的个数。后面用到一个循环语句进行输入,即do……end语句,这里,对于酶一个组,循环数从1循环到n,然后输入每组的n个数据。因此,cards语句后面的数据输入方法是:先输入组名(CHN或者FRN),然后输入这一组数据个数(20或者25),然后输入此组数据。调用ttest过程对两组数据进行t检验,分组表示是以S分组,统计变量是x。结果表明,在Statistics表中列出了两组每一组的平均数、方差、以及方差的95%上下限,在T-Tests表中给出按照两种方法计算出的t值和p值。我们看到,无论是按照方差齐次(Equal)还是方差不齐次(Unequal),中国人的身高和法国人的身高之间都有显著的差异。而从Equality of Variances表中我们可以看到,这两组数据方差齐次的概率为p>F=0.0277,所以可以认为此两种数据方差不齐次。

五、其他方法输入数据:

1、在每一个数据之前都加上其所在的组,这个程序可以这样写:

data;

Input s$ x@@;

Cards;

CHN 1.72 CHN 1.68 CHN 1.81 CHN 1.73 CHN 1.75 CHN 1.77 CHN 1.82 CHN 1.85 CHN 1.9 CHN 1.73 CHN 1.75 CHN 1.70 CHN 1.69 CHN 1.65 CHN 1.50 CHN 1.72 CHN 1.76 CHN 1.82 CHN 1.8 CHN 1.79

FRN 1.81 FRN 1.72 FRN 1.69 FRN 1.77 FRN 1.83 FRN 1.85 FRN 1.79 FRN 1.82 FRN 1.85 FRN 1.91 FRN 1.83 FRN 1.75 FRN 1.77 FRN 1.79 FRN 1.82 FRN 1.83 FRN 1.88 FRN 1.73 FRN 1.78 FRN 1.82

FRN 1.79 FRN 1.74 FRN 1.73 FRN 1.75 FRN 1.79

;

Proc ttest;

Class s;

Var x;

Run;

2、如果每组数据个数相同,可以用两个循环来输入数据。例如,分别测得在辐照和正常情况下5只小树的体重,统计分析辐照对小鼠体重有无影响:

辐照组:21.5 20.5 23.1 23.2 21.9

正常组:19.3 19.7 18.7 18.5 21.7

程序如下:

data;

Do a=1 to 2;

Do i=1 to 5;

Input x@@;

Output;

End;

End;

Cards;

21.5 20.5 23.1 23.2 21.9

19.3 19.7 18.7 18.5 21.7

;

Proc ttest;

Class a;

Var x;

Run;

运行结果:

这里,1代表辐照组,2代表正常组,可以看到,辐照组和正常组小鼠体重差异显著。辐照对小鼠的体重有影响。

六、配对样本的t检验:

所谓配对样本是指同一个实验对象在处理前后有无显著差异。还以上面辐照的数据为例,假设现在是辐照前后每只小鼠的体重一一对应,这样就构成了一个配对样本。配对样本进行t检验时也是划归MEANS过程中总体均数等于0的t检验。可以写程序如下:

data;

Input x y;

D=x-y;

Cards;

21.5 19.3

20.5 19.7

23.1 18.7

23.3 18.5

21.9 21.7

;

Proc means n mean std t probt;

Var d;

Run;

可以看到,如果假设数据是配对样本,概率为0.0554,差异不显著。也就是说,同样一组数据,不同的实验方法和不同的假设条件时统计结果可能是不一样的!

单因素方差分析

一、单因素方差分析是考虑单一因素对实验是否有影响,即不同条件处理时有无显著差异。单因素方差分析适合于3组或者3组以上的数据进行比较。

二、单因素方差分析往往后续多重比较,方差分析只是分析出不同条件下是否有差异,至于不同条件的两两比较则需要通过多重比较来进行判断。

三、SAS系统中有专门进行单因素方差分析的过程ANOVA,对于之后的多重比较,则最多使用DUNCAN比较,除DUNCAN之外,还可以进行LSD比较以及T检验比较。

四、例如,给小白鼠饲喂3种饲料一个月,分别测得其体重为(g)如下,试比较这3种饲料对于小白鼠的体重有无显著差异。

1号饲料: 18.5 18.7 19.1 20.3 19.5 18.9 19.2 19.6 18.9 19.5

2号饲料: 21.3 23.2 19.9 20.8 21.1 22.7 19.9 21.3 23.1 22.7

3号饲料: 17.6 18.7 17.5 18.2 17.9 17.1 18.7 19.2 18.7 18.8

编写程序如下:

Data;

Do a=1 to 3; (总共3组,分别为1组、2组、3组)

Do i=1 to 10; (每组10个数据)

input x@@;

Output;

End;

End;

Cards;

18.5 18.7 19.1 20.3 19.5 18.9 19.2 19.6 18.9 19.5

21.3 23.2 19.9 20.8 21.1 22.7 19.9 21.3 23.1 22.7

17.6 18.7 17.5 18.2 17.9 17.1 18.7 19.2 18.7 18.8

;

Proc anova;

Class a;

Model x=a;

Means a;

Means a/duncan;

Means a/duncan alpha=0.01;

Run;

运行结果如下:

说明:本程序用了两个循环语句输入数据,大的循环语句用于输入组号,从1循环到3,内部循环用于输入每组的10个数据。然后在输入数据后调用anova过程,指定分组变量为a(class a;)然后指定统计模型中试验误差来源于a (model x=a;),然后以a为分组每组进行一个简单的描述性统计,即语句means a;最后进行duncan的多重比较。在进行duncan多重比较时,分组变量还是a,而比较的水平使用了两个,一个是默认的0.05,一个是我们指定的0.01。即语句 means a/duncan 后如果不加alpha,则表示用duncan多重比较,显著水平为0.05(即在5%的水平进行显著性比较),如果加上alpha=数字,则表示以数字作为显著水平,这里,我们使用了means a/duncan alpha=0.01。(在1%水平进行显著性比较)。结果有5页,第一页告诉我们SAS系统对a=1、2、3的3个组的数据进行了anova过程,攻击30个数据。第二页列出了方差分析的结果,从结果中我们可以看到,p>F=0.0001,说明组建差异显著。第3页则是对每一个组进行了简单的统计,包括数据个数、平均数和标准差。第4页和第5页是duncan多重比较的结果,其中第4页是在显著水平alpha=0.05情况下进行的,由于3个组所在的duncan group(邓肯分组)没有相同字母(三个组是a、b、c),所以3个组两两之间都是差异显著的。而第5页是在显著水平alpha=0.01情况下进行的,我们可以看到,第2组和第1、第3组之间没有相同字母,所以第2组和第1组、第3组之间差异极显著(达到0.01水平),而第1组和第3组之间有相同字母,所以第1组和第3组差异没有达到0.01显著水平。这里,我们可以看到,使用0.05水平时,第1组和第3组之间差异显著,而使用0.01水平时这两组之间没有显著差异,也就是说,我们有95%~99%的把握说这两组之间有区别的。注意,统计学只能从一定概率上做出某种判断,至于这种判断是否真正准确,还需要实验的进一步验证。

五、每组数据个数不同的单因素方差分析

如果每一组数据个数不相同,则可以采用输入每组个数后用内部小循环的方式输入数据,这种输入数据的方式有点类似于T检验时的输入方式。例如,分别测得3个细菌在培养10小时后的OD值,数据如下,试统计分析这3种细菌的生长有无显著差异。

细菌1:0.8 1.2 1.5 1.4 0.7

细菌2:1.6 1.9 2.1 1.6 1.8 1.9

细菌3:0.7 0.5 1.0 0.6 0.4 0.5 1.1 1.0

编写SAS程序如下:

data;

Do a=1 to 3;

Input n;

Do i=1 to n;

Input x@@;

Output;

End;

End;

Cards;

5

0.8 1.2 1.5 1.4 0.7

6

1.6 1.9 2.1 1.6 1.8 1.9

8

0.7 0.5 1.0 0.6 0.4 0.5 1.1 1.0

;

Proc anova;

Class a;

Model x=a;

Means a;

Means a/duncan;

Means a/duncan alpha=0.01;

Run;

运行结果:

这里结果与上述数据个数相等的程序相似,不再赘述。

双因素方差分析

一、双因素方差分析是统计两个变化因素是否对实验有影响,适合于每个因素有3个或者3个以上的不同水平的统计。

二、较之单因素方差分析,双因素方差分析可以剖析出两个因素各自对实验的作用,还可以剖析出两个因素的共同作用(交互作用)。所谓交互作用是指两个因素共同对实验数据所产生的影响。例如,在生产性能测试中,动物的品种和饲料是最重要的两个方面,但是,并不是最好的品种饲喂最好的饲料就能得到最好的结果。

三、SAS系统的glm过程专门来解决这一类需要剖析两个因素的交互作用的统计过程。运用glm过程时,也可以进行duncan多重比较。

四、例如,给3个品系的小鼠饲喂4种不同的饲料,分别测得在饲喂1周后体重增加(g)为:

品系 饲料1 饲料2 饲料3 饲料4

1 1.2 1.3 1.5 1.5 1.0 0.7 1.1 0.9 1.1 0.8 1.5 1.7 1.9 2.1 2.5 0.2 0.5 0.4 0.9 0.7

2 1.5 1.7 1.4 1.3 1.2 1.1 1.3 1.4 0.8 1.1 1.2 1.4 0.9 0.9 1.1 0.7 0.9 1.1 1.2 0.8

3 1.2 1.5 1.7 1.7 0.9 1.8 1.7 1.4 1.5 1.3 1.9 2.1 2.3 2.3 1.8 0.6 1.1 1.0 0.8 1.2

五、编写SAS程序如下:

Data;

Do a=1 to 3; (3个品系)

Do b=1 to 4; (4种饲料)

Do i=1 to 5; ( 每组5个数)

Input x@@;

Output;

End;

End;

End;

Cards;

1.2 1.3 1.5 1.5 1.0 0.7 1.1 0.9 1.1 0.8 1.5 1.7 1.9 2.1 2.5 0.2 0.5 0.4 0.9 0.7 1.5 1.7 1.4 1.3 1.2 1.1 1.3 1.4 0.8 1.1 1.2 1.4 0.9 0.9 1.1 0.7 0.9 1.1 1.2 0.8 1.2 1.5 1.7 1.7 0.9 1.8 1.7 1.4 1.5 1.3 1.9 2.1 2.3 2.3 1.8 0.6 1.1 1.0 0.8 1.2

Proc glm;

Class a b;

Model x=a b a*b;

Means a;

Means a/duncan;

Means b;

Means b/duncan;

Lsmeans a*b/stderr tdiff pdiff;

Run;

运行结果:

说明:上述几个结果中,有很多于单因素方差分析的结果类似,这里不再赘述,值得提出的是,glm过程算出了两个交互作用a(品系)和b(饲料)之间的交互作用即a*b的p值也是小于0.0001的,也就是说,这两个作用之间的交互作用也是差异显著的,不同的品种饲喂不同的饲料对于体重的增加差异显著。值得我们关注的是,在分别对a、b两个因素进行单因素方差分析之后,SAS系统给出了两个因素交互作用的统计表(Least Square Means for a*b)。在这个统计表中,先用一个表头分别说明表中编号为1~12的12组分别对应于a因素和b因素等于多少的组,然后是一个这12组之间的两两比较,比如第1组和第2组之间的比较,

从表中得出这两组平均数之差等于2.40,概率p等于0.02,也就是说这两组之间差异显著(p<0.05)。值得一题的是,由于1组和2组比较的结果应该同2组与1组比较的结果一致,所以,实际上这个表我们只需要看上半部分(上三角部分)或者下半部分(下三角部分)就可以说明情况了。

卡方检验和联表分析

一、卡方检验:当样本中的样品数量比较少的时候,我们不适合把整体看成一个正态分布。这个时候我们需要进行卡方检验。实际运用中,卡方检验主要有两个用途,一是检验某次实验数据是否满足某一理论上的比值,二是检验某两个观察因素之间有没有显著性的相关性。

二、SAS系统中没有自带这两个过程,我们需要通过自己写一些SAS代码来自行实现此两项的功能。

三、检验某一次实验数据是否满足某一理论比值,例如在孟德尔豌豆杂交实验中,得到F2代饱满的果实200株,而皱瘪的果实59株。我们知道,在一对相对性状遗传中,F2代显性和隐性性状比应该满足3:1,而实际实验中比值却不是标准的3:1。那么,实际中得到的这个比值是否由于实验误差造成了偏离。

四、编写SAS程序如下:

Data;

Input n1 n2;

N=n1 n2;

En1=n*3/4;

En2=n*1/4;

Chi=(n1-en1)*(n1-en1)/en1 (n2-en2)*(n2-en2)/en2;

P=1-probchi(chi,1);

Cards;

200 59

;

Proc print;

Run;

运行结果:

说明:用卡方检验是,卡方值chi等于每个观察数值减去理论数值的平方除以理论数值后的总和,这里,en1和en2代表理论上n1和n2 的值,而n1和n2则为实际上n1、n2的和,而后面的p代表差异显著的概率,等于1减去小于chi值的卡方概率。这里直接用print将运行结果输出,可以看到,p值等于0.409,差异不显著,即实际中得到的数值符合理论上的3:1比例。

五、检查两因素有无关联性,例如某次研究吸烟和肺癌之间的关系时,得到下列表格,试分析吸烟和肺癌之间有无关联。

吸烟 不吸烟

得肺癌 39 12

不得肺癌 18 28

编写SAS程序如下:

data;

Do a=1 to 2; (肺癌是否发生)

Do b=1 to 2; (是否吸烟)

Input x@@;

Output;

End;

End;

Cards;

39 12

18 28

;

Proc freq formchar(1,2,7)=’|- ’; (此行由于word中符号不兼容,需要在SAS中重写)

Table a*b/chisq expected;

Weight x;

Run;

运行结果:

说明:这里,SAS系统给出一张统计表,上表中的第二行数字是每个格子中的理论值。从下表中我们可以看到,似然卡方值Likelihood Ratio Chi-Square 为14.24,概率为Prob=0.0002,差异显著,说明吸烟和肺癌之间具有相关性。

六:这里我们给出一些通过编写SAS程序来完成T检验的实例。

1、某一次期末考试,1班同学有60人,其中32人在85分以上,优秀率为0.37。2班同学有65人,45人在85分以上,优秀率为0.69。试分析两班的优秀率是否有显著差异。

SAS编程如下:

Data;

Input n1 m1 n2 m2;

N=n1 n2;

M=m1 m2;

p1=n1/m1;

P2=n2/m2;

P=(n1 n2)/(m1 m2);

Sp=sqrt(p*(1-p)*(1/m1 1/m2));

T=abs(p1-p2)/sp;

Prob=2*(1-probt(t,m1 m2-2));

Cards;

32 60

45 65

;

Proc print;

Run;

运行结果:

说明:按照百分数T检验公式T=|p1-p2|/sp,其中sp=

,pt=(n1 n2)/(m1 m2)其中n1=32,m1=60,n2=45,m2=65。中统计结果可以看到,prob值为0.07,大于0.05,说明两个班级优秀率差异不显著。

2、某工厂对两台机器生产的螺母进行抽样,从第一台机器中抽取了100个样品,计算出其平均数为5.02cm,方差为0.12。从第二台机器中抽取了120个样品,计算出其平均数为4.97cm,方差为0.09。试分析两机器所生产的螺母是否有显著差异。

SAS编程如下:

Data;

Input n1 m1 s1 n2 m2 s2;

Ss=s1*s1*(n1-1) s2*s2*(n2-1);

St=sqrt(ss/(n1 n2-2));

T=abs(m1-m2)/st;

P=2*(1-probt(t,n1 n2-2));

Cards;

100 5.02 0.12 120 4.97 0.09

;

Proc print;

Run;

运行结果:

说明:根据T检验的公式可以方便地书写程序。由SAS结果可知,概率p为0.633,两机器生产的螺母没有显著差异。

线性回归和相关系数

一、线性回归问题是研究相关的两个变量之间的线性关系的问题,通过线性回归和相关分析,可以找出两个变量之间的相关性。

二、线性回归也是最简单的回归,对于多元回归和多项式回归问题,一般都划归到线性回归问题中进行。

三、对一元线性回归问题,SAS系统自带reg过程,对于相关系数问题,SAS系统自带corr过程,这两个过程可以对两个或者多个变量进行线性回归和相关分析。

四、例如,在某次体检中,学生身高(cm)和体重(kg)之间存在着一定的关系,如何通过统计分析将两者的关系找出。

身高(cm) 体重(Kg)

172 70

175 72

180 77

190 85

195 90

编写SAS程序如下:

data;

Input h w;

Cards;

172 70

175 72

180 77

190 85

195 90

;

Proc reg;

Model w=h;

Proc corr;

Run;

运行结果:

说明:这里,我们同时调用了reg和corr两个过程,SAS分别统计出两个结果。在REG表中,我们可以看到,相关系数R的平方等于0.9983,模型概率值<0.0001,说明身高和体重之间有着显著的线性相关性,在参数估计中,Intercept=-79.54,h=0.86812,回归方程为:w=0.86812h-79.54。在相关性分析中,我们看到,身高和体重之间的相关系数等于0.99914,达到显著水平,说明两个变量有着明显的线性相关性。

多元回归和多项式回归

一、多元回归是牵涉到几个自变量和一个因变量之间的关系的回归。多元回归中,有些自变量对于因变量的变化起到关键作用,而有些自变量却是可有可无,其变化对因变量的取值变化影响很小。这时候,我们可以通过逐一判断这些自变量和因变量之间的关系,然后一一删除那些对因变量影响比较小的自变量。

二、在对多个变量进行分析时,除了回归分析以外,还可以进行变量间两两相关系数的分析以及两个变量之间偏相关系数的分析。回归过程和分析过程同样使用reg和corr。

三、在逐一删除对因变量影响较小的自变量时,可以采用向前法或者向后法。所谓向前法是指一一判断哪些自变量对因变量的影响比较大,然后一一将这些自变量加入到回归方程中。所谓向后法是指先将左右的自变量加入回归方程,然后把那些影响较小的自变量一一删除。

四、例如:现在统计一下x1、x2、x3和y之间的多元回归过程,SAS程序如下:(下面程序中运用了很多筛选自变量的方法,其中包括向前法forward,向后法backward,中间取值法minr,r平方法等)

data ;

input x1 x2 x3 y;

cards;

48.47 21.80 0.85 70.00

40.66 14.15 0.25 51.20

49.87 20.00 0.83 70.00

33.53 18.00 0.49 60.00

40.58 5.31 0.32 51.20

39.36 5.31 0.35 54.10

35.26 5.31 0.25 52.71

24.59 8.71 0.40 54.14

19.12 5.45 0.25 52.72

15.84 7.69 0.25 40.32

;

proc reg corr;

model y=x1-x3/selection=backward sls=0.05 stb;

run;

model y=x1-x3/selection=forward sls=0.05 stb;

run;

model y=x1-x3/seletcion=stepwise sls=0.05 stb;

run;

model y=x1-x3/selection=minr;

run;

model y=x1-x3/selection=rsquare;

run;

model y=x1-x3/selection=adjrsq;

run;

model y=x1-x3/selection=cp;

run;

model y=x1-x3/selection=none stb;

run;

五、运行结果:

说明:结果比较多。首先我们看到的是这些变量两两之间的相关系数表。第2张表开始使用backward法进行多元回归分析,开始将所有的自变量加入到回归方程,建立了回归方程为:y=0.18797x1 0.01666x2 28.82392x3 36.70540,然后逐一去除一些影响较小的自变量,首先在step1中将x2去除,得到回归方程为:y=0.18840x1 29.20646x2 36.71286。继而又在step2中将x1去除,得到回归方程为y=35.41081x3 40.62481,此时,系统发现无法再删除变量x3,backward过程到此结束。然后用forward法进行回归分析,首先系统将x3加入回归方程,建立了回归方程,继而系统又将x1加入到方程中建立方程为:y=0.18840x1 29.20646x2 36.71286,继而系统发现,无法将其他变量加入到回归方程中,forward过程到此结束。后面两种回归过程请大家自己阅读,值得注意的是,对于这么多的结果,SAS在每个小过程结束后都会有一个总结表,例如在backward结束后,会告诉你用这个方法进行了两个小的step,这两个step分别将回归方程中的x2和x1变量剔除出去。其余过程与之类似。

六、多项式回归:对于多项式回归,我们一般采取将其划归为多元回归来处理,例如把y对于x的二次多项式回归划为y对x2和x的两个变量的多元回归。

例如:已知某生物体的总数和培养时间呈二次多项式关系,即y=ax2 bx c,现测得y和x的数值,试统计分析建立回归方程。

x y

1 2

2 5

3 13

4 21

5 28

6 45

7 53

8 73

9 93

七、编写SAS程序如下:

Data;

Input x1 y;

X2=x1*x1;

Cards;

1 2

2 5

3 13

4 21

5 28

6 45

7 53

8 73

9 93

;

Proc reg corr;

Model y=x1-x2;

Run;

运行结果:

说明:这里给出了3个变量(把x2看成一个单独的变量x2)两两之间的相关系数。然后进行了回归,建立的回归方程是:y=1.07792x2 0.42078x1 0.76190,即y=1.07792x2 0.42078x1 0.76190。相关系数0.9962。

聚类分析

一、聚类分析就是按照事物的某些特征将事物进行分类的分析。

二、SAS中用于聚类分析的方法有很多,最常用的是cluster。采用的分类标准也很多,一般用mean(平均值法)或者med(中位数值法)。

三、例如,测得5种昆虫成年个体的翅长、体长以及触角的长度(cm),用SAS对这3种昆虫进行系统分类。

四、SAS程序如下:

Data cao;

Input no$ cc tc cj;

Cards;

1 5 7 6

2 7 10 6

3 10 9 7

4 5.7 8.9 4.7

5 9 8.7 5.7

;

Proc cluster method=mean outtree=cao;

Var cc tc cj;

Id no;

Proc tree;

Run;

运行结果

说明:SAS系统先给出5种昆虫距离统计中心的距离,然后给出这5种昆虫的系统聚类图。可以从下面图中看到,1,2,4号位于一个聚类分支,3号和5号位于另外一个聚类分支。1号和2号、4号之间有一点差距。此外,如果再proc tree后面加上hor(horizon),SAS将会输出横向分类图如下。

结束语

本次编写SAS常用程序参考了许建新老师的《SAS For Windows本科教材》、北京邮电大学出版社的《SAS统计由入门到精通》等书籍。对他们的努力和贡献表示衷心感谢。本次编写的每一个程序(有些程序需要去掉括号中注释的部分,有些程序需要把标点符号稍微修改一下)均在SAS 9.0 版本软件中运行无误。此外,程序删除了那些对于结果没有影响只是为了美观的说明语句,例如用类似options nodate nonumber语句将结果中的运行时间和编号去掉,至于一些小的关于SAS软件的细节问题,大家不必过分深究。最后要说明的一点是,大家在使用SAS软件的时候由于它有一个使用时间限制,所以在没有破解时间限制之前,请将电脑系统时间调到使用期限之内。

安徽农业大学

研究生学院

曹堃

QQ:549875752

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页