|
由于各个样本的总体呈偏态分布或方差不齐,无法使用方差分析中的两两比较,检验其总体分布是否相同,常用的非参数秩和检验方法是Kruskal-Wallis 法,在SAS 软件中实现的过程步有以下三种方法: NPAR1 WAY 过程、FREQ过程以及RAN K 和ANOVA 两过程的结合,而样本间两两比较则可以通过RAN K 和ANOVA 两过程的结合,采用MEANS 语句来实现,即先对原始数据进行排序,求相应的秩次,然后对秩进行参数的多重比较。 3 ]1 `/ s8 F/ p2 D" Y K. Z
调用FREQ 过程产生的第二个CMH统计量” row mean scores differ” (Kruskal-Wallis结果)、NPAR1 WAY 过程产生的卡方统计量以及ANOVA 过程产生的R-Square 与υ总(总自由度)之积,即为Kruskal-Wallis 检验结果。本文种ANOVA 过程步中的MEANS 规定采用LSD 法进行两两比较,也可使用其他方法。 data sample ; do group = 1 to 3 ; input x @@; output ; end ; cards ; 9.8 0.6 0.4 10.2 1.2 1.9 10.6 2.0 2.2 13.0 2.4 2.5 14.0 3.1 2.8 14.8 4.1 3.1 15.6 5.0 3.7 15.6 5.9 3.9 21.6 7.4 4.6 24.0 13.6 7.0 ; proc freq ; tables group*x/ scores = rank cmh2 noprint; run; proc npar1way wilcoxon; class group; var x; run; proc rank data =sample out = a ; var x; ranks r; proc anova; class group ; model r = group ; means group/ lsd snk ; run; quit; 2 ?1 L* |- y: ?2 Q0 W6 B; o' P0 P
成组设计的等级资料或频数表资料多个样本及其两两比较 这种类型的资料为成组设计的等级资料或频数表资料,但频数表资料时各个样本的总体呈偏态分布或方差不齐,检验其总体分布是否相同,常用的非参数秩和检验方法也是Kruskal-Wallis 法,在SAS 软件中实现的过程步同上,程序略有差别。 data sample2; do effect = 1 to 4 ; do group = 1 to 3 ; input f @@; output ; end ; end ; cards ; 10 24 48 17 41 65 19 33 36 4 7 8 ; proc freq; tables group*effect/ scores = rank cmh2 noprint; weight f;' x) {. }7 M$ f: R1 \3 S; Q5 @/ `
run; data a; set sample2; do i = 1 to f ; output; end ; run; proc npar1way wilcoxon data=a; var effect; class group; run; proc rank data=a out=b; var effect ; ranks r; run; proc glm; class group; model r = group ; means group/lsd snk tukey dunnett ; run; quit;
. ] q4 V* r+ `/ J/ X; S7 u/ B0 S/ U1 G3 d/ k# j6 H
随机区组设计的定量资料多个样本及其两两比较 各个样本的总体呈偏态分布或方差不齐,检验其总体分布是否相同,常用的非参数秩和检验方法是Friedman 法,在SAS 软件中实现的过程步有以下两种方法: FREQ 过程以及RAN K和GLM 两过程的结合。各个样本两两比较可通过RAN K 和GLM 两过程的结合, 采用LSMEANS 语句来实现
% k8 C! K/ d% q F8 `调用FREQ 过程产生的第二个CMH统计量和GLM 过程产生的R2 与(υ总-υ区组) 之积,即
为Friedman 检验结果。LSMEANS 语句规定对调整后的样本均数进行两两比较。 data sample3; do block = 1 to 7 ; do treat = 1 to 4 ; input x @@; output; end; end ; cards ; 63 188 138 54 90 238 220 144 54 300 83 92 45 140 213 100 54 175 150 36 72 300 163 90 64 207 185 87 ; proc freq ; tables block*treat*x/ scores = rank cmh2 noprint; run; proc sort data=sample3 out=a; by block ; run;
! |6 |! J1 `5 }/ Lproc rank data=a out=b;
var x; by block; ranks r ; run; proc glm data=b ; class treat block ; model r = treat block/ ss1 ; lsmeans treat/ stderr pdiff ; run; quit;
$ r/ l( H1 G# Y
4 g& c; }6 l' a" U* h |