第五章 多个率比较的SAS编程实现
2012-04-17 生物谷 不详
两个率或多个率的比较,我们非常熟悉的就是采用卡方检验的方法。除此之外,在特定条件下还可根据正态近似的原则采用u检验的方法进行分析。在SAS中,卡方检验的功能包含在freq过程之中,下面我们先熟悉一下freq过程的基本内容和功能。 一、freq过程的语句和功能 freq过程包含在SAS的BASE模块中,它可以执行描述性统计以及假设检验的功能,能产生从1维到n维的表格,即频数表以及列联表。对于单因
两个率或多个率的比较,我们非常熟悉的就是采用卡方检验的方法。除此之外,在特定条件下还可根据正态近似的原则采用u检验的方法进行分析。在SAS中,卡方检验的功能包含在freq过程之中,下面我们先熟悉一下freq过程的基本内容和功能。
一、freq过程的语句和功能
freq过程包含在SAS的BASE模块中,它可以执行描述性统计以及假设检验的功能,能产生从1维到n维的表格,即频数表以及列联表。对于单因素的频数表,freq过程可以进行比率之间的比较;对于列联表资料(两个或更多因素),它可以对两因素间的关系进行统计学推断,必要时可以按照某些因素进行分层分析。对于两因素关系的统计学分析,freq过程不仅可以检验关系的存在与否,还可以给出这种关系的强度。
下表(表5.1)是freq过程对于列联表资料可以进行的分析以及计算的统计量。
表5.1
卡方检验; |
关联性的推断及其强度测量; |
2×2表资料危险度计算以及危险度差别的检验; |
2×2表资料OR值以及相对危险度的计算; |
趋势检验; |
一致性检验; |
Cochran-Mantel-Haenszel 统计量计算。 |
1. freq过程的一般格式
freq过程的一般格式如下所示。
PROC FREQ <选项列表>; |
BY |
EXACT 统计量关键字 选项列表>; |
OUTPUT 统计量关键字 |
TABLES 因素表达式 选项列表>; |
TEST 统计量关键字; |
WEIGHT 变量名; |
RUN; |
QUIT; |
表面上看起来freq过程的语句并不复杂,但它可实现很多复杂的功能。下面就freq过程中特有的语句和选项加以简要说明。
2. freq过程中各语句及选项的格式及功能
2.1 proc freq语句用以调用freq过程,标志freq过程的开始,其后的选项除和其它过程相同的一般性的控制功能外,没有什么特别之处,我们一般也不太用到。
2.2 by语句和以前的内容完全相同,这里不再说明。
2.3 Exact语句用以控制对精确概率的计算以及对指定统计量进行可信限估计。对于以下假设检验,freq过程可以计算其精确P值:拟合优度卡方检验(chi-square goodness-of-fit)、Pearson卡方检验(Pearson chi-square)、似然比卡方检验(likelihood-ratio chi-square)、 Mantel-Haenszel卡方检验(Mantel-Haenszel chi-square)、Fisher’s确切概率检验(Fisher's exact test)、Jonckheere-Terpstra检验(Jonckheere-Terpstra test)、Cochran-Armitage 趋势检验(Cochran-Armitage test for trend)以及McNemar's检验(McNemar's test for two-way tables)
2.4 Output语句大家已很熟悉,它用于将结果数据输出到指定的数据集。
2.5 Tables语句在freq过程中算是非常关键的语句,它用以指定所要分析的因素如何构成列联表,并在选项中指定所要计算的统计量。其中的因素表达式就是列联表的构成方式,如果只有一个因素,就将该因素的变量名作为表达式;如果因素有两个或以上,各因素之间以星号——“*”相连。这里大家要明确一点,SAS对于两个以上因素组成的表达式,将排在最后的两个变量作为列联表的行和列,而其它排在前面的因素则作为分层因素对待。比如对于表达式:A*B*C*D,SAS绘制出k(等于A、B两因素水平数的乘积)个交叉表,表格的行因素为C,列因素为D。
在同一个tables语句中,你可以指定多个因素表达式以完成多个交叉表的绘制。灵活运用圆括号的分组语法可达到此目的,具体方法如以下表格(表5.2)中显示的例子。
表5.2 多表格表达式示例
表达式 |
等同表达式 |
tables a*(b c); |
tables a*b a*c; |
tables (a b)*(c d); |
tables a*c b*c a*d b*d; |
tables (a b c)*d; |
tables a*d b*d c*d; |
tables a--c; |
tables a b c; |
tables (a--c)*d; |
tables a*d b*d c*d; |
Tables语句的选项主要用以指定所要进行的具体统计分析方式,如:agree、 all、 chisq、 alpha、 fisher、 trend等等,分别指定SAS进行不同的统计计算。
2.6 test语句用以指定SAS对给定的统计量进行近似检验,此语句的有效性需要相应的tables语句选项来保证。
2.7 weight语句以前已经讨论过,这里的完全一样。
对于freq过程大家已经有了一个大概的了解,下面我们用实例来演示freq过程在各种情况下处理相应资料的操作方法。
二、freq过程对各种类型计数资料处理操作方法
1. 两个率比较的卡方检验
例5-1 一项治疗糖尿病的临床试验中,将268名患者随机分为两组,一组204人服用盐酸苯乙双胍,死于心血管病的有26人,另一组64人服用安慰剂,死于心血管病的有2人,请分析两种疗法的心血管病病死率有无差异?
此例为典型的四格表资料,是我们最乐意用卡方检验进行分析的数据形式,非常简单的几条语句就可完成对数据的分析。
编制程序如下:
libname a 'e:\data\'; |
data a.case5_1; |
input treat outcome number; |
datalines; |
1 1 178 |
1 2 26 |
2 1 62 |
2 2 2 |
; |
proc freq; |
weight number; |
tables treat*outcome/chisq; |
run;quit; |
此处treat代表不同的治疗药物,1表示服用盐酸苯乙双胍,2表示服用安慰剂;outcome代表患者的结局(死亡与否),1表示生存,2表示死于心血管病,number则表示患者的人数。Tables语句后的chisq选项指示SAS进行卡方统计量的计算。
运行上述程序,结果如下。
The SAS System 20:29 Wednesday, November 27, 2002 5
The FREQ Procedure
Table of treat by outcome
treat outcome
Frequency|
Percent |
Row Pct |
Col Pct | 1| 2| Total
---------+--------+--------+
1 | 178 | 26 | 204
| 66.42 | 9.70 | 76.12
| 87.25 | 12.75 |
| 74.17 | 92.86 |
---------+--------+--------+
2 | 62 | 2 | 64
| 23.13 | 0.75 | 23.88
| 96.88 | 3.13 |
| 25.83 | 7.14 |
---------+--------+--------+
Total 240 28 268
89.55 10.45 100.00
The SAS System 20:29 Wednesday, November 27, 2002 6
The FREQ Procedure
Statistics for Table of treat by outcome
Statistic DF Value Prob
------------------------------------------------------
Chi-Square 1 4.8188 0.0282
Likelihood Ratio Chi-Square 1 6.0021 0.0143
Continuity Adj. Chi-Square 1 3.8454 0.0499
Mantel-Haenszel Chi-Square 1 4.8008 0.0284
Phi Coefficient -0.1341
Contingency Coefficient 0.1329
Cramer's V -0.1341
Fisher's Exact Test
----------------------------------
Cell (1,1) Frequency (F) 178
Left-sided Pr <= F 0.0177
Right-sided Pr >= F 0.9967
Table Probability (P) 0.0144
Two-sided Pr <= P 0.0330
Sample Size = 268
结果给出的内容很是详细,第一部分是四格表的内容,每一个格子内给出四项内容,分别为频数、百分比、行百分比以及列百分比。第二部分为卡方检验的结果,SAS在默认状态下即给出此若干项统计量的结果以及相应的概率,具体的含义大家从字面上就可看出来,这里我不再多说。最后,SAS还给出fisher精确概率的计算结果,提供给我们更多的选择。
对于病例对照研究,可在tables语句后添加选项‘cmh’,SAS即会给出“Cochran-Mantel-haenszel”统计量的结果,以及相对危险度、比数比等重要指标。如果资料为1:1配对资料,即四格表中数据为不同组合的对子数,则需要采用McNemar检验,此时只需在tables语句后添加选项‘agree’,或添加语句——“exact mcnem;”即可。
2. R*C表资料的卡方检验
例5-2 对1135例绝经后出血的妇女进行病理分析,结果见表5.3,请分析病变类型是否与年龄有关。
表5.3 不同年龄妇女绝经后出血的病变类型
年龄组/岁 |
病变类型,例数(百分比) |
合计 | ||
功能性 |
恶性 |
良性 | ||
≤50 |
60(44.4) |
16(11.9) |
59(43.7) |
135 |
51~ |
208(33.3) |
111(17.8) |
306(49.0) |
625 |
61~ |
66(25.0) |
79(29.2) |
119(45.1) |
264 |
71~ |
21(18.9) |
47(42.3) |
43(38.7) |
111 |
合计 |
355(31.3) |
253(22.3) |
527(46.4) |
1135 |
此例为4*3表资料,对于年龄和病变类型两个属性间的独立性检验,完全可以使用和前述四格表资料分析方法相同的pearson卡方检验,程序的步骤和内容也是基本相同的。
对此例资料进行分析的程序如下:
本文系梅斯医学(MedSci)原创编译整理,转载需授权!-->
小提示:本篇资讯需要登录阅读,点击跳转登录
版权声明:
本网站所有内容来源注明为“梅斯医学”或“MedSci原创”的文字、图片和音视频资料,版权均属于梅斯医学所有。非经授权,任何媒体、网站或个人不得转载,授权转载时须注明来源为“梅斯医学”。其它来源的文章系转载文章,或“梅斯号”自媒体发布的文章,仅系出于传递更多信息之目的,本站仅负责审核内容合规,其内容不代表本站立场,本站不负责内容的准确性和版权。如果存在侵权、或不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。 在此留言 相关资讯第四章 多组资料均数比较的SAS编程实现多组资料均数比较我们一般采用方差分析的方法,SAS中方差分析的功能非常全面,能实现方差分析功能的过程有anova过程和glm过程。 一、anova过程和glm过程简介 1. anova过程 anova过程存在于stat模块,主要的功能就是进行方差分析。anova过程用以对平衡实验设计资料(各分组因素各水平的所有组合具有相同的样本量或观察值)进行分析,不能用于对非平衡实验设计资料的方差分析。它 第二章 计量资料的统计描述一、计量资料的统计描述 计量资料统计描述的内容主要包括平均指标和变异指标的计算、资料分布形态(或特征)的图形表现等。 (一)实现描述性统计功能的几个过程 描述性统计指标的计算可以用四个不同的过程来实现,它们分别是means过程、summary过程、univariate过程以及tabulate过程。它们在功能范围和具体的操作方法上存在一定的差别,下面我们大概了解一下它们的异同点。 相同点:他 SAS常用程序(1)2.1 利用SAS软件描述样本数据 用SAS可以对样本数据进行全面描述,得出样本的各种特征数以及频数分布图。在阅读以下内容之前请先阅读第一章“SAS软件基本操作”。 2.1.1 用MEANS语句描述数据 例 2.1 计算课本上习题1.2的平均数和标准差。 解 第一章 SAS编程操作预备知识一、SAS系统简介 SAS是一个庞大的系统,它目前的版本可以在多种操作系统中运行。当前在国内被广泛使用的最新版本是8.2版,功能很强大,我深有体会。 据说9.0版已在国外面世,已经有一些有关它的抢先报道在网络上广为流传,说它如何如何美妙,令人不禁充满期待。 SAS8.2的完整版本包含以下数十个模块。 BASE,GRAPH,ETS,FSP,AF,OR,IML,SHARE,QC,STAT,IN 二、计数资料的统计描述二、计数资料的统计描述 计数资料的描述性统计量,最为主要的是相对数,即率、构成比、相对比等。统计图形表述方式有圆图和百分条图等。下面我们将例2-1的数据转换为计数资料的形式,用以展示计数资料统计描述的SAS编程实现方法。 例2-3 我们假设甘油三酯水平高于1.5者为异常,将160名女子划分为正常和异常两组。分别计算正常组和异常组占总人数的构成比,并用圆图和百分条图展示其构成情况。 第三章 两组资料均数比较的SAS编程实现一、均数差别比较的t检验 1. 样本均数和总体均数比较的t检验 样本均数和总体均数差别的比较可以直接进行比较,也可以将其看成每个测量值和总体均数差值的均数和0的比较,均为单变量分析的形式,可用前面介绍的三个执行描述性统计分析功能的过程来完成。这里我们用univariate过程和means过程分别演示这种分析的SAS编程实现方法,summary过程的操作方法各位可以自己试着练习一下。 以Mea |
#SAS#
67