单因素方差分析一、单因素方差分析是考虑单一因素对实验是否有影响,即不同条件处理时有无显著差异单因素方差分析适合于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;50.8 1.2 1.5 1.4 0.7 61.6 1.9 2.1 1.6 1.8 1.980.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饲料411.2 1.3 1.5 1.5 1.00.7 1.1 0.9 1.1 0.81.5 1.7 1.9 2.1 2.50.2 0.5 0.4 0.9 0.721.5 1.7 1.4 1.3 1.21.1 1.3 1.4 0.8 1.11.2 1.4 0.9 0.9 1.10.7 0.9 1.1 1.2 0.831.2 1.5 1.7 1.7 0.91.8 1.7 1.4 1.5 1.31.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 ab;Means a;Means a/duncan;Means b;Means b/duncan;Lsmeans ab/stderr tdiff pdiff;Run;运行结果:说明:上述几个结果中,有很多于单因素方差分析的结果类似,这里不再赘述,值得提出的是,glm过程算出了两个交互作用a(品系)和b(饲料)之间的交互作用即ab的p值也是小于0.0001的,也就是说,这两个作用之间的交互作用也是差异显著的,不同的品种饲喂不同的饲料对于体重的增加差异显著值得我们关注的是,在分别对a、b两个因素进行单因素方差分析之后,SAS系统给出了两个因素交互作用的统计表(Least Square Means for ab)在这个统计表中,先用一个表头分别说明表中编号为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=n3/4;En2=n1/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比例五、检查两因素有无关联性,例如某次研究吸烟和肺癌之间的关系时,得到下列表格,试分析吸烟和肺癌之间有无关联 吸烟不吸烟得肺癌3912不得肺癌1828 编写SAS程序如下: data;Do a=1 to 2; (肺癌是否发生)Do b=1 to 2; (是否吸烟)Input x@@;Output;End;End;Cards;39 1218 28;Proc freq formchar(1,2,7)=’|-+’; (此行由于word中符号不兼容,需要在SAS中重写)Table ab/chisq expected;Weight x;Run;运行结果:说明:这里,SAS系统给出一张统计表,上表中的第二行数字是每个格子中的理论值从下表中我们可以看到,似然卡方值Likelihood Ratio Chi-Square 为14.24,概率为Prob=0.0002,差异显著,说明吸烟和肺癌之间具有相关性六:这里我们给出一些通过编写SAS程序来完成T检验的实例 1、某一次期末考试,1班同学有60人,其中32人在85分以上,优秀率为0.372班同学有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 6045 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=s1s1(n1-1)+s2s2(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)1727017572180771908519590 编写SAS程序如下: data;Input h w;Cards;172 70175 72180 77190 85195 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.0040.66 14.15 0.25 51.2049.87 20.00 0.83 70.0033.53 18.00 0.49 60.0040.58 5.31 0.32 51.2039.36 5.31 0.35 54.1035.26 5.31 0.25 52.7124.59 8.71 0.40 54.1419.12 5.45 0.25 52.7215.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的数值,试统计分析建立回归方程 xy1225313421528645753873993 七、编写SAS程序如下:Data;Input x1 y;X2=x1x1;Cards;1 22 53 134 215 286 457 538 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 62 7 10 63 10 9 74 5.7 8.9 4.75 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
(图片来源网络,侵删)
0 评论