第六章 非参数统计分析方法的SAS编程实现
作者:薛富波 最终修改日期:
一、npar1way过程语句格式简介 二、不同类型资料的非参数检验方法 1. 两独立样本差别的秩和检验 2.配对设计资料的秩检验
3.完全随机设计多组数据分布位置差别的秩和检验 三、几条重要提示
非参数统计分析方法(non-parametric statistics)是相对参数统计分析方法而言的,又称为不拘分布(distribution-free statistics)的统计分析方法或无分布形式假定(assumption free statistics)的统计分析方法。其中包括Wilcoxon秩和检验、Kruskal-Wallis秩和检验、friedman秩和检验等,它们分别对应不同设计类型的资料。
SAS中对于非参数分析方法功能的实现主要由npar1way过程来完成,从过程名字就可以看出,在此过程的处理进程中,只能一次指定一个因素进行分析。下面我们先来了解一下npar1way过程的语句格式以及各语句和选项的基本功能。
一、npar1way过程语句格式简介
npar1way过程属于SAS的STAT模块,对于统计学教科书上所涉及的非参数统计方法几乎都可以通过此过程来完成。Npar1way过程的基本语句格式如下。
PROC NPAR1WAY <选项> ; BY 变量名; CLASS变量名;
EXACT 统计量选项 运算选项 > ; FREQ变量名;
OUTPUT < OUT=数据集名 > < 选项 > ; VAR 变量名; RUN; QUIT;
Proc npar1way语句标志npar1way过程的开始,默认情况下(不列举任何选项):npar1way过程对最新创建的数据集进行分析,将缺失数据排除在分析过程之外;执行方差分析过程(等同于ANOVA选项),对样本分布位置的差异进行
1
检验(与选项WILCOXON, MEDIAN, SAVAGE以及VW等效),并进行经验分布函数检验(等同于EDF选项)。此语句后可用的选项见表6.1。
表6.1 Proc npar1way语句选项及其含义 选项名称 选项功能或含义 AB 运用Ansari-Bradley评分进行分析 DATA=数据集名 指定要进行分析的数据集 MEDIAN 运用中位数评分进行分析,即进行中位数检验 NOPRINT 禁止所有的输出,用在仅需要创建输出数据集时 ST 运用Siegel-Tukey评分进行分析 ANOVA 对原始数据进行方差分析 EDF 要求计算基于经验分布的统计量 MISSING 指定分组变量的缺失值为一有效的分组水平 SAVAGE 运用Savage评分进行分析 VW 运用Van der Waerden评分进行分析计算 CORRECT=NO 在两样本时,禁止Wilcoxon和Siegel-Tukey检验的连续性校正过程 KLOTZ 运用Klotz评分进行分析 MOOD 运用Mood评分进行分析 SCORES=DATA 以原始数据为评分值进行分析 WILCOXON 对两样本进行Wilcoxon秩和检验,对多样本进行Kruskal-Wallis检验 在构成npar1way过程的语句中,by语句、class语句以及freq语句和其它我们已经讨论过的过程完全相同,不再多嘴。
1. exact语句
exact语句要求SAS对指定的统计量(选项)进行精确概率的计算。其后的统计量选项可为以下项目,分别对应相应的统计计算方式(可参见表6.1)。 AB,KLOTZ,KS,MEDIAN,MOOD,SAVAGE,SCORES=DATA,ST,WILCOXON,VW等。
运算选项为精确概率的计算过程指定一些控制项目,如选项“mc”要求以Monte Carlo方法计算精确概率。
2. output语句
output语句与其它过程中相应的语句大同小异,不同之处在于语句最后的选项。此处的选项绝大多数包括在表6.1中,指定在输出数据集中包含所指定项目所对应的统计量。
3. var语句
2
此处的var语句与其它过程的也基本相同,用以指定要进行分析的变量,变量必须为数值型。若省略此语句,SAS将对除by语句、class语句以及freq语句中指定的变量之外的所有数值型变量进行分析。
关于npar1way过程的内容基本上就这些,了解这么多足够处理一般的统计学问题,下面我们结合实例来演示非参数检验的SAS编程实现过程。
二、不同类型资料的非参数检验方法 1. 两独立样本差别的秩和检验
例6-1 下表(表6.2)为来自两个样本A、B的测量数据,经检验知两样本方差不齐,试做非参数检验比较两组数据的差别。
表6.2 两独立样本A、B测量数据
A组 7 14 22 36 40 48 63 98
B组 3 5 6 10 17 18 20 39
对于此资料,我们应选用Wilcoxon秩和检验(rank sum test)方法,编制SAS程序如下。 data temp;
do g=1 to 2; input x@@; output; end;
datalines; 7 3 14 5 22 6 36 10 40 17 48 18 63 20 98 39 ;
proc npar1way wilcoxon; class g; var x; Run;quit;
3
程序中因素“g”分组因素,“1”代表A组,“2”代表B组,“x”为待分析的变量。Proc npar1way语句后的选项“Wilcoxon”指定SAS进行Wilcoxon秩和检验。提交以上程序,运行结果如下。
The SAS System 22:08 Tuesday, December 10, 2002 1
The NPAR1WAY Procedure
Wilcoxon Scores (Rank Sums) for Variable x Classified by Variable g
Sum of Expected Std Dev Mean g N Scores Under H0 Under H0 Score
---------------------------------------------------------------------------------------------------- 1 8 89.0 68.0 9.521905 11.1250 2 8 47.0 68.0 9.521905 5.8750
Wilcoxon Two-Sample Test
Statistic 89.0000
Normal Approximation Z 2.1529
One-Sided Pr > Z 0.0157 Two-Sided Pr > |Z| 0.0313
t Approximation
One-Sided Pr > Z 0.0240 Two-Sided Pr > |Z| 0.0480
Z includes a continuity correction of 0.5.
The SAS System 22:08 Tuesday, December 10, 2002 2
The NPAR1WAY Procedure
Kruskal-Wallis Test
Chi-Square 4.8640 DF 1
Pr > Chi-Square 0.0274
SAS给出的结果较为详细,比医学统计教科书上的内容要多很多,首先给出两组数据的的基本信息(样本量、秩和等),还给出在零假设下各组统计量(Sum of scores项)的期望值(Ecpected Under H0项)及标准差(Std Dev Under H0项),最后还给出以近似z检验以及近似t检验所得的统计量和所对应的单、双侧概率值。另外,默认状态下,SAS还同时给出Kruskal-Wallis检验的结果。 所不同的是,在两样本量相同时,SAS以秩和较大者作为对象统计量进行概率值的计算,而非医学统计学教材上所说的以较小秩和为对象统计量。在两样本量不同时,SAS以样本量较小组的秩和为对象统计量,这一点则与教材上的相同。
下面我们再对两组等级资料的非参数检验方法进行练习。
4
例6-2 用某药治疗不同病情的老年慢性支气管炎病人, 疗效见表6.3,试比较该药对两种病情的疗效。
表6.3 某药对两种不同病情的支气管炎疗效
疗效 单纯型 控制 显效 有效 近控
65 18 30 13
单纯型合并肺气肿
42 6 23 11
对于此例,我们将疗效看成待分析的变量x,从“控制”到“近控”分别对其赋值1、2、3、4,病情则作为分组因素,同时需引入一个频度因素f,以代表不同取值状态下x的频数。编制程序如下。 data temp;
do x=1 to 4; do g=1 to 2; input f@@; output; end; end;
datalines; 65 42 18 6 30 23 13 11 ;
proc npar1way wilcoxon; class g; var x; freq f; run; quit;
程序和例6-1的基本相同,只根据资料特点增加了freq语句。提交程序,运行结果如下。
The SAS System 22:08 Tuesday, December 10, 2002 7
The NPAR1WAY Procedure
Wilcoxon Scores (Rank Sums) for Variable x Classified by Variable g
Sum of Expected Std Dev Mean g N Scores Under H0 Under H0 Score
-------------------------------------------------------------------------------------------------- 1 126 12955.50 13167.0 389.776482 102.821429 2 82 8780.50 8569.0 389.776482 107.079268
Average scores were used for ties.
5