第四章 多组资料均数比较的SAS编程实现
2012-04-17 生物谷 不详
多组资料均数比较我们一般采用方差分析的方法,SAS中方差分析的功能非常全面,能实现方差分析功能的过程有anova过程和glm过程。 一、anova过程和glm过程简介 1. anova过程 anova过程存在于stat模块,主要的功能就是进行方差分析。anova过程用以对平衡实验设计资料(各分组因素各水平的所有组合具有相同的样本量或观察值)进行分析,不能用于对非平衡实验设计资料的方差分析。它
多组资料均数比较我们一般采用方差分析的方法,SAS中方差分析的功能非常全面,能实现方差分析功能的过程有anova过程和glm过程。
一、anova过程和glm过程简介
1. anova过程
anova过程存在于stat模块,主要的功能就是进行方差分析。anova过程用以对平衡实验设计资料(各分组因素各水平的所有组合具有相同的样本量或观察值)进行分析,不能用于对非平衡实验设计资料的方差分析。它比glm过程的运行速度要快,要求的存贮空间也要小一些。
anova过程的一般格式如下:
PROC ANOVA < 选项列表 > ; |
CLASS 变量名列表 ; |
MODEL 应变量=自变量表达式 < / 选项列表 > ; |
ABSORB 变量列表 ; |
BY 变量名 ; |
FREQ 变量名 ; |
MANOVA < 检验选项 >< / 详细选项 > ; |
MEANS 自变量表达式 < / 选项 > ; |
REPEATED 变量名 水平数 <(各水平值)>< / 选项 > ; |
TEST < H=变量表达式 > E=变量表达式; |
proc anova语句启动anova过程的运行,其后的选项列表可含有以下项目:
DATA=数据集名 |
MANOVA |
MULTIPASS |
NAMELEN=n |
NOPRINT |
ORDER=DATA | FORMATTED | FREQ | INTERNAL |
OUTSTAT=SAS-data-set |
其中的“order=”选项指定anova过程对分类变量(class语句指定的变量)各水平的排序方式,可选的四个条目分别表示按照原始数据中的顺序、输出格式值的顺序、各水平观察值频数多少的顺序、内部值的顺序进行排序。其余选项和以前的内容相同或较少用到,这里不再一一解释。
其后的class语句、by语句、freq语句等和以前的内容完全相同,我们这里着重了解一下anova过程中特有的关键语句。
model语句:用来指定应变量和自变量,并且通过特定的表达式规定自变量的作用方式。如果没有指定任何自变量,则模型中仅包含常数项,此时检验的内容是应变量的均数是否为零。model语句中指定的自变量必须是class语句中声明过的分类变量,anova过程不允许自变量中有连续型变量(数值变量),而应变量则必须是数值型变量。
自变量表达式可用来表达三种不同的效应模型,即主效应模型、交互效应模型、嵌套设计效应模型。我们假定应变量为y,a, b, c为模型中包含的三个自变量,各种效应模型的表达方式如下:
(1)主效应模型:y=a b c;
(2)交互效应模型:y=a b c a*b a*c b*c a*b*c;
(3)嵌套设计模型:y=a b c(a b); 其中c因素为a、b两因素各种组合下的二级因素。
model语句末尾的选项有“intercept”和“nouni”两项,分别指定SAS进行关于常数项的假设检验和在多变量方差分析(或重复测量资料方差分析)时禁止单变量统计结果的输出。
absorb语句:对于仅发挥主效应的因素,absorb语句指定SAS消除此变量的作用,只对其余变量进行分析,起到大幅度减少计算机资源和时间消耗的作用。应用此功能时,须先对指定变量排序,且此变量不能再出现在class语句和model语句中。
manova语句:当反应变量有多个时,此语句控制anova过程进入多元方差分析模式,其后的选项用以指定多元方差分析时的各项指标。
means语句:指定anova过程计算指定变量各水平下反应变量的均值、标准差,并进行组间的多重比较。
repeated语句:如果反应变量为重复测量数据,此语句用以指定anova过程进入重复测量数据方差分析模式。其中的变量名代表重复测量因素(如测量时间等),其后水平数代表重复测量的次数,如果需指定重复测量各次的具体标识,可在其后按顺序列出,并用圆括号括起来。
test语句:用以进行其他类型的f检验,这种检验不同于通常方差分析中以误差均方为分母的f检验,其中的选项“h=”用以指定作为分子的变量表达式(必须在model语句中出现过),“e=”用以指定一个作为分母的变量。
2. glm过程
glm过程也存在于stat模块中,它执行以最小二乘法进行模型拟合的功能。以此过程可以实现的统计学方法有回归分析、方差分析、协方差分析、多元方差分析以及偏相关分析。glm过程对数据的分析处理均在一般线性模型的框架下进行,反应变量可以为一个或多个连续型变量,自变量可为连续型也可为离散型。
glm过程的一般格式如下:
PROC GLM < 选项列表 > ; |
CLASS 变量名列表 ; |
MODEL 应变量=自变量列表 < / 选项列表 > ; |
ABSORB 变量名列表 ; |
BY 变量名列表 ; |
FREQ 变量名列表 ; |
ID 变量名列表 ; |
WEIGHT 变量名列表 ; |
CONTRAST '标记' 效应表达式 常数向量 < ... 效应表达式 常数向量 > < / 选项列表 > ; |
ESTIMATE '标记' 效应表达式 常数向量 < ... 效应表达式 常数向量 > < / 选项列表 > ; |
LSMEANS效应表达式< / 选项列表 > ; |
MANOVA < 检验选项 >< / 详细选项 > ; |
MEANS 效应表达式 < / 选项列表 > ; |
OUTPUT < OUT=数据集名 > keyword=names < ... keyword=names > < / 选项 > ; |
RANDOM效应表达式 < / 选项列表 > ; |
REPEATED 因素表达式 < / 选项列表 > ; |
TEST < H=变量表达式> E=变量表达式< / 选项列表 > ; |
Proc glm语句标志glm过程的开始,此句后的选项可有以下项目。
DATA=数据集名 |
ALPHA=p |
MANOVA |
MULTIPASS |
NAMELEN=n |
NOPRINT |
ORDER=DATA | FORMATTED | FREQ | INTERNAL |
OUTSTAT=SAS-data-set |
可以看到此选项列表仅比anova过程的多了一个项目,即“alpha=p”选项,此选项用来指定计算过程中所采用的显著性水平。其余选项的用法和含义与anova过程的相同,这里不再多说了。
大家可以比较一下glm过程和anova过程所涉及的语句,anova过程中涉及的所有语句都包含在glm过程所涉及的语句中,其用法和功能也都是基本相同的,这一部分语句这里就不再赘述。
Contrast语句使你可以用自定义的方式进行假设检验,它必须出现在model语句之后,如果用到manova语句、repeated语句、random语句或test语句,contrast语句必须出现在这些语句之前。标记用来标识所进行的检验,用以标识的文字或符号需用单引号括起来。效应表达式用以指定假设检验的因素(组合),这些因素(组合)必须是model语句中出现过的。效应表达式后的常数向量用以指定相应因素(组合)各水平的值,在指定各水平的情况下进行相关因素的分析。
Estimate语句可实现对线性方程的估计,它也必须出现在model语句之后,使用的规则和contrast语句基本相同。其中的语句元素的含义和用法也与contrast语句相同。
Lsmeans语句用以指示SAS对指定的因素(组合)计算应变量的最小二乘均数并输出到结果中。
Output语句我们在以前的内容中接触过,其功能和用法和以前的内容也基本相同,各位请参考以前的内容使用。
Random语句用以指定哪些因素(组合)是随机变量,即相对于这些因素(组合),样本是来自于正态总体的随机样本,这样SAS可对相应因素(组合)作随机效应模型的分析。
对以上几条语句的理解完全来自SAS的帮助文件,由于专业知识深度不够以及英语水平有限的原因,以上关于这几种语句的内容会存在很多的错误与偏差,还请各位多多谅解,也希望各位能多多指点。进一步的内容我会给出及时的更新。
二、不同设计类型资料的方差分析
需进行多组均数比较的资料设计类型有完全随机设计、随机单位组设计、析因设计、重复测量设计等,下面我们分别以实例来演示SAS中这类数据的分析方法。
1. 完全随机设计资料的方差分析(含均数间的多重比较)
例4-1 为了解烫伤后不同时期切痂对肝脏三磷酸腺苷(简写为ATP)含量的影响,将30只雄性大鼠随机分3组, 每组10只:A组为烫伤对照组,B组为烫伤后24小时(休克期)切痂组,C组为烫伤后96小时(非休克期)切痂组,全部动物统一在烫伤后168小时处死并测量其肝脏的ATP含量,结果见表4.1。请检验三组大鼠肝脏的ATP含量有无差别。
表4.1 大鼠烫伤后肝脏ATP含量的测量结果(单位:mg)
A组 |
B组 |
C组 |
7.76 |
11.14 |
10.85 |
7.71 |
11.60 |
8.58 |
8.43 |
11.42 |
7.19 |
8.47 |
13.85 |
9.36 |
10.30 |
13.53 |
9.59 |
6.67 |
14.16 |
8.81 |
11.73 |
6.94 |
8.22 |
5.78 |
13.01 |
9.95 |
6.61 |
14.18 |
11.26 |
6.97 |
17.72 |
8.68 |
针对以上资料,我们使用anova过程来实现方差分析的功能。编制SAS程序如下:
data temp; |
infile 'e:\data\data4_1.txt'; |
do i=1 to 10; |
do g=1 to 3; |
input x@@; |
output; |
end; |
end; |
proc anova; |
class g; |
model x=g; |
Run; |
quit; |
本段程序中用到SAS的循环语句,其格式和多数计算机编程软件中的相同,我相对于它的用法和含义不用再多罗嗦了。灵活运用循环语句在SAS编程过程中可以节省很多的精力。此处因为数据位于不同的列中,每行包含每一组的一个数据,用循环语句正好可以产生一个代表不同分组的变量,省去了逐个输入带来的麻烦。需要提醒各位要特别注意的是,循环语句的每一个do语句,必须有一个相应的end语句来结束它,否则就会出错。
此处需要分析的变量(应变量)是x,干预因素(自变量)为分组变量g,因而model语句中效应表达式为x=g。
提交上述程序,结果如下。
The SAS System 10:49 Monday, October 14, 2002 5
The ANOVA Procedure
Class Level Information
Class Levels Values
g 3 1 2 3
Number of observations 30
The SAS System 10:49 Monday, October 14, 2002
本网站所有内容来源注明为“梅斯医学”或“MedSci原创”的文字、图片和音视频资料,版权均属于梅斯医学所有。非经授权,任何媒体、网站或个人不得转载,授权转载时须注明来源为“梅斯医学”。其它来源的文章系转载文章,或“梅斯号”自媒体发布的文章,仅系出于传递更多信息之目的,本站仅负责审核内容合规,其内容不代表本站立场,本站不负责内容的准确性和版权。如果存在侵权、或不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
在此留言
文章很好
59
#SAS#
26