1 1 1 1 1 65 1 1 1 2 2 74 1 2 2 1 2 71 1 2 2 2 1 73 2 1 2 1 2 70 2 1 2 2 1 73 2 2 1 1 1 62 2 2 1 2 2 69 run;
proc anova data = exp;
class temp time conc manu mix; model prod = temp--mix; means temp--mix / t; run;
用0.05水平,得到的模型是显著的(模型p值为0.0250),各因素的检验结果如下:
可见硫酸浓度、产地、操作方式是显著的,必须采 用它们的最好水平,温度、时间不显著,在同等条件下可以优先采用它们的最好水平。从MEANS语句的结果可以知道,硫酸浓度的最好水平是水平2(27%),硫酸产地的最好水平是水平2(上海),操作方式的最好水平是水平2(不搅拌),反应温度的最好水平是水平1(50?C),反应时间的最好水平是水平1(1小时)。从以上分析可以得到好的生产方案。
4.3.5 用Analyst作方差分析
Analyst的“Statistics-ANOVA”菜单提供了七种方差分析方法,我们这里只介绍前三种:单因素方差分析(One-Way ANOVA)、非参数单因素方差分析(Nonparametric One-Way ANOVA)、多因素方差分析(Factorial ANOVA)。
为了对SASUSER.VENEER进行方差分析,选“Statistics-ANOVA-One-Way ANOVA”,弹出如图4-12的对话框,我们要指定因变量(Dependent,即指标)和自变量(Independent,即因素)。用这里的Tests钮可以选择一些其他的检验,比如对各组方差相等假设的检验,稳健的Welch方差加权方差分析等。Means按钮用来进行多重比较,可以选择多种比较方法,见图4-13。这个菜单调用的是PROCANOVA,所以最后的结果与上面编程得到的结果一致。
118
图4-12 Analyst:单因素方差分析 图4-13 Analyst:多重比较
用“Statistics-ANOVA-Nonparametric One-Way ANOVA”可以作Kruskal-Wallis检验。它调用PROC NPAR1WAY。
用“Statistics-ANOVA-Factorial ANOVA”可以进行多元方差分析。它调用PROC GLM,这个过程与ANOVA的差别在于它允许非均衡设计。对于均衡设计如上面的橡胶试验这里得到的结果与PROCANOVA得到的结果是一致的。
4.4 列联表分析
上面所讲到的统计分析主要针对数值型(区间)变量进行。在实际工作中,离散取值的名义变量(如性别、职业、民族)和有序变量(如调查意见的完全同意、同意、中立、反对、强烈反对)也是十分常见的,对这类离散变量(又称属性变量)的分析也是统计学的重要的研究内容。这一节我们讲述检验两个离散取值的变量独立性的列联表检验方法,并介绍有序变量的关联性量度。
4.4.1 列联表的输入与制表
离散变量的取值可以把样本进行分类。比如,我们的样本是一个班的学生情况,可以根据学生的性别把观测分为男生和女生两个组。我们也可以根据学生的来源把观测分为本地学生和外地学生两个组。如果联合使用这两个变量对观测分类,就可以把观测分为四个组,我们可以统计每个组学生的人数,并把结果画成一个表格(表4-2)。
这样的表格就叫做列联表。它给出了按照两个变量交叉分类得到的每一个小类的观测个数。
表4-2:学生性别、来源分布表
本地 外地 男生 4 14 女生 6 7 为了得到这样的表格,需要把数据输入为数据集。有时我们得到的数据是每一个观测的变量取值,比如,我们有每一个学生的性别(SEX)情况和来源(FROM)情况,可以输入这些原始数据,如:
119
data class;
input sno sex $ from $; label sex = '性别' from ='来源'; cards; 1 男 本地 2 女 外地 3 男 外地
??/*所有学生的记录*/ ;
然后用如下的FREQ过程可以画出列联表:
proc freq data=class; tables from * sex; run;
结果是下面的表格。
表格数据输入的另一种情况是,我们得到的数据就已经是上面表格4-2那样的调查结果而不是具体的样本情况,可以直接把表格输入一个数据集,但数据集中要有一个代表观测数的变量,例如:
data classt;
input from $ sex $ numcell; label sex = '性别' from = '来源'; cards; 本地 男 4 本地 女 6 外地 男 14 外地 女 7 run;
这样的数据要画列联表,需要在FREQ过程中使用WEIGHT语句指定表示重复数的变量(NUMCELL):
proc freq data=classt; tables from * sex; weight numcell;
120
run;
结果和上例相同。
在输出结果中,我们看到TABLES语句中的前一个变量被用来区分行,后一个变量被用来区分列。每个格子中有四个数:Frequency(频数,本格子的观测数),Percent(百分比),Row Pct(行百分比,表示本类在本行中占的百分比,比如本地男生有4个人,本行有10个人,占本行的40.00%),Col Pct(列百分比)。在表的右侧有行总计,比如本地学生有10个人,占总学生数(31人)的32.26%。在表的下侧有列总计,比如男生有18个人,占学生总数的58.06%。表格右下方是总数(31)和总百分比(100)。
为了作列联表,调用FREQ过程,使用TABLES语句指定行变量和列变量,两者用星号分开,如果数据本身是表格数据还需要用WEIGHT语句指定存放表格单元观测数的变量。 可以作出简化的表格,在TABLES语句中加上NOFREQ,NOPCT,NOROW,NOCOL等选项就可以抑制相应的统计量的输出。例如,用如下程序:
proc freq data=classt;
tables from * sex / nopct norow nocol; weight numcell; run;
就可以产生只有单元频数的表格。
4.4.2 列联表独立性检验
对于数值型变量,我们考虑其相关关系的通常的办法是计算相关系数和进行回归分析。如果我们要研究离散取值的名义变量和有序变量有无相关,最常用的检验办法是列联表独立性检验。列联表检验的零假设是两变量X和Y相互独立,计算一个X2统计量,基于列联表中观测频数与零假设下期望频数之差,当x2统计量很大时否定零假设。
例如,为了探讨吸烟与慢性支气管炎有无关系,调查了339人,情况如下: 吸烟 不吸烟 患慢性支气管炎 43 13 未患慢性支气管炎 162 121 设想有两个随机变量X,Y:X取1表示吸烟,取2表示不吸烟,Y取1表示患慢性支气管炎,取2表示未患。零假设为:
H0:X与Y相互独立
要检验此零假设,先取定检验水平0.05,调用PROCFREQ过程,在TABLES语句中加
上CHISQ选项即可。下面的例子中还加入了EXPECTED选项以显示零假设下的期望频数值:
data bron;
input smoke $ bron $ numcell;
label smoke = '吸烟' bron = '慢性支气管炎'; cards;
吸烟 患病 43 吸烟 未患 162 不吸烟 患病 13 不吸烟 未患 121
121
;
proc freq data=bron;
tables smoke*bron/nopct norow nocol chisq expected; weight numcell; run;
结果如下:
列联表中列出了表格单元频数和在零假设下的期望频数,可以看出,吸烟人中患病的数目比期望数目大。检验的结果只要看后面的统计量部分的Chi Square一行,其值为7.4688,p值为0.0063,所以应否定零假设,作出结论:吸烟与患慢性支气管炎是不独立的。 使用X2检验要求每个单元格期望频数不少于5。在条件不满足的时候还可以使用Fisher精确检验。对于两行两列的表格FREQ过程自动给出Fisher精确检验的结果,其双侧检验p值为0.0069,应拒绝零假设。
4.4.3 属性变量关联度计算
对于区间变量,我们可以计算两两的相关系数。属性变量因为没有数值概念所以不能计算相关系数,但对于两个有序变量我们可以计算类似于相关系数的关联性量度。其中一种关联性量度叫做Kendal Tau-b(7b)统计量,取值在-1到1之间,值接近于1表示正关 联,接近于-1表示负关联,接近于0表示没有相关关系。
下面用例子说明如何在FREQ过程中计算Kendal Tau-b统计量。本例取自《SAS系统与基础统计分析》一书。假设我们要研究奶牛种群大小与其患某种细菌性疾病的关系。牛的患病程度(DISEASE)分为没有(0)、低(1)、高(2),牛群大小(HERDSIZE)分为小(1)、中(2)、大(3)。 122