由于各个样本的总体呈偏态分布或方差不齐,无法使用方差分析中的两两比较,检验其总体分布是否相同,常用的非参数秩和检验方法是Kruskal-Wallis 法,在SAS 软件中实现的过程步有以下三种方法: NPAR1 WAY 过程、FREQ过程以及RAN K 和ANOVA 两过程的结合,而样本间两两比较则可以通过RAN K 和ANOVA 两过程的结合,采用MEANS 语句来实现,即先对原始数据进行排序,求相应的秩次,然后对秩进行参数的多重比较。
" Z; _$ s( K7 E9 w 调用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;
. M" j: j" [8 U. H( A9 b 成组设计的等级资料或频数表资料多个样本及其两两比较 这种类型的资料为成组设计的等级资料或频数表资料,但频数表资料时各个样本的总体呈偏态分布或方差不齐,检验其总体分布是否相同,常用的非参数秩和检验方法也是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;
; i+ M# @) ?7 crun; 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; S& q: A; s) ^' a. Q
2 q* P) K# k5 H" {8 j1 K) V9 X随机区组设计的定量资料多个样本及其两两比较
各个样本的总体呈偏态分布或方差不齐,检验其总体分布是否相同,常用的非参数秩和检验方法是Friedman 法,在SAS 软件中实现的过程步有以下两种方法: FREQ 过程以及RAN K和GLM 两过程的结合。各个样本两两比较可通过RAN K 和GLM 两过程的结合, 采用LSMEANS 语句来实现
& ^9 L: ^* j9 H2 J" g: a2 y调用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 b/ @; b! B6 M/ e! sproc 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;
) _! F/ ^/ ^# u. c+ B, |+ N$ K 5 o8 A* h5 \; a: \& Y3 m! q
|