单因素实验设计又称为完全随机化实验设计。该实验设计要求实验条件或实验环境的同质性很高。例如,比较a个作物品种的产量,每一品种设置n个重复,全部实验共有an次。根据完全随机化实验设计的要求,试验田中的an个试验小区的土质、肥力、含水量、小气候、田间管理等条件必须完全一致。至于哪一个品种的哪一次重复安排在哪一个小区,完全是随机的,因此得到了“完全随机化实验设计”这一名称。
例2.9 下面以课本中例8.1的数据为例,给出单因素方差分析的SAS程序。
解:先按以下输入方式建立一个称为a:\2-5data.dat的外部数据文件。
1
64.6
1
65.3
1
64.8
1
66.0
1
65.8
2
64.5
2
65.3
2
64.6
2
63.7
2
63.9
3
67.8
3
66.3
3
67.1
3
66.8
3
68.5
4
71.8
4
72.1
4
70.0
4
69.1
4
71.0
5
69.2
5
68.2
5
69.8
5
68.3
5
67.5
SAS程序如下:
options linesize=76
data wheat
infile ‘a:\2-5data.dat’
input strain hight @@
run
proc anova
class strain
model hight=strain
means strain / duncan
means strain / lsd cldiff
run
在PROC ANOVA过程中的CLASS语句(分类语句)是必须的,而且一定要放在MODEL语句之前。在方差分析中要使用的分类变量(因素),首先要在CLASS语句中说明。分类变量可以是数值型的,也可以是字符型的。MODEL语句用来规定因素对实验结果的效应,一般形式为,因变量=因素效应。本例即为株高=品系效应。
MEANS语句应放在MODEL语句之后,MEANS语句后列出希望得到均值的那些变量。MEANS语句有很多选项,下面列出几个与本教材有关的选项,将选项写在MEANS语句的“/”之后。
DUNCAN: 对MEANS语句列出的所有主效应均值进行DUNCAN检验。
SNK: 对MEANS语句列出的所有主效应均值进行Student-Newman-Keuls检验。
T | LSD: 对MEANS语句列出的所有主效应均值进行两两t检验,它相当于在样本含 量相同时的LSD检验。
ALPHA= 均值间对比检验的显著水平,缺省值是0.05。当用DUNCAN选项时只能取0.01、0.05和0.10,对于其它选项,α可取0.0001到0.9999之间的任何值。
CLDIFF: 在选项T和LSD时,过程将两个均值之差以置信区间的形式输出。
CLM: 在选项T和LSD时,过程把变量的每一水平均值以置信区间的形式输出。
方差分析应具备三个条件,有时这三个条件并不能够得到满足,这时对原始数据就要进行变换,见课本§ 9.7。对原始数据进行变换,只需加上一个赋值语句即可,可参考配对数据t检验的SAS程序。
以下是一个SAS程序的例子:data arr
array a{5}(1,2,3,4,5)
sum=0
do i=1 to 5
sum=a(i)+sum/*求总和*/
end
pjun=sum/5/*求平均值*/
run
DATA CHENGJI1INPUT NAME $ SEX $ MATH CHN GROUP
CARDS
李明 男 92 98 1
张红艺 女 89 1061
王思明 男 86 90 1
RUN
DATA CHENGJI2
INPUT NAME $ SEX $ MATH CHN GROUP
CARDS
张聪 男 95 92 2
刘颖 女 98 1012
高红 女 91 922
RUN
DATA CHENGJI3
INPUT NAME $ SEX $ MATH CHN GROUP
CARDS
赵强 男 93 99 3
李云芳女 96 1023
周闪 男 88 98 3
RUN
*第二步
DATA CHENGJI0
SET CHENGJI1 CHENGJI2 CHENGJI3
RUN
*第三步
DATA CHENGJI
SET CHENGJI0
AVG=MEAN(MATH,CHN)
RUN
PROC SORT
BY AVG
RUN
*第四步
DATA MATH90
SET CHENGJI0
WHERE MATH>90
RUN
*第五步
PROC SORT DATA=CHENGJI(KEEP=NAME GROUP AVG) OUT=LAST
BY GROUP AVG
RUN
DATA LAST
SET LAST
BY GROUP AVG
IF FIRST.GROUP
RUN
*第六步
PROC SORT DATA=CHENGJI0 OUT=MATH
BY SEX
RUN
DATA MATH(KEEP=SEX AVG SUM_ALL)
SET MATH END=T
BY SEX
IF FIRST.SEX THEN DO
I=0
M=0
END
M+MATH
I+1
AVG=M/I
J+1
TOT+MATH
IF LAST.SEX
IF T THEN SUM_ALL=TOT
RUN
*第七步
PROC SUMMARY DATA=CHENGJI0 NWAY
VAR MATH
OUTPUT OUT=A(DROP=_TYPE_ RENAME=(_FREQ_=N)) SUM=TOT
RUN
DATA DIF
IF _N_=1 THEN SET A
SET CHENGJI0
AVG=TOT/N
DIFF=AVG-MATH
DROP TOT N
RUN
*第八步
DATA EN
INPUT EN @@
CARDS
80 84 85 86 82 87 96 75 52
RUN
DATA ALL
SET CHENGJI0
SET EN
RUN
楼上这位是大牛,多向他学习学习
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)