免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1228 | 回复: 0
打印 上一主题 下一主题

多个率比较的SAS编程实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-22 18:17 |只看该作者 |倒序浏览

两个率或多个率的比较,我们非常熟悉的就是采用卡方检验的方法。除此之外,在特定条件下还可根据正态近似的原则采用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  变量名-1  变量名-n> ;
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
                                 Right-sided Pr >= F         0.9967

                                 Table Probability (P)       0.0144
                                 Two-sided Pr

                                          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卡方检验,程序的步骤和内容也是基本相同的。
对此例资料进行分析的程序如下:
libname a 'e:\data\';
data a.case5_2;
  do age=1 to 4;
    do pathtype=1 to 3;
    input count@@;
    output;
   end;
  end;
  datalines;
  60 16 59 208 111 306
  66 79 119 21 47 43
  ;
run;
proc freq;
  tables age*pathtype/chisq;
  weight count;
run;
quit;
大家可以看到,和上例的程序相比,此例并无多少差异,SAS对于交叉表形式的计数资料,进行卡方检验的程序是完全相同的。其不同的地方是根据我们对资料分析需要的不同而有所区别,比如我们对于线性趋势的检验一般只针对R*C表资料。
提交以上程序,结果如下。
                         The SAS System       20:54 Thursday, November 28, 2002  26

                                         The FREQ Procedure

                                      Table of age by pathtype

                            age       pathtype

                            Frequency|
                            Percent  |
                            Row Pct  |
                            Col Pct  |       1|       2|       3|  Total
                              ---------+--------+--------+--------+
                                   1 |     60 |     16 |     59 |    135
                                     |   5.29 |   1.41 |   5.20 |  11.89
                                     |  44.44 |  11.85 |  43.70 |
                                     |  16.90 |   6.32 |  11.20 |
                              ---------+--------+--------+--------+
                                   2 |    208 |    111 |    306 |    625
                                     |  18.33 |   9.78 |  26.96 |  55.07
                                     |  33.28 |  17.76 |  48.96 |
                                     |  58.59 |  43.87 |  58.06 |
                            ---------+--------+--------+--------+
                                   3 |     66 |     79 |    119 |    264
                                     |   5.81 |   6.96 |  10.48 |  23.26
                                     |  25.00 |  29.92 |  45.08 |
                                     |  18.59 |  31.23 |  22.58 |
                              ---------+--------+--------+--------+
                                   4 |     21 |     47 |     43 |    111
                                     |   1.85 |   4.14 |   3.79 |   9.78
                                     |  18.92 |  42.34 |  38.74 |
                                     |   5.92 |  18.58 |   8.16 |
                               ---------+--------+--------+--------+
                            Total         355      253      527     1135
                                        31.28    22.29    46.43   100.00

                      The SAS System       20:54 Thursday, November 28, 2002  28

                                         The FREQ Procedure

                               Statistics for Table of age by pathtype

                       Statistic                     DF       Value      Prob
                       ------------------------------------------------------
                       Chi-Square                     6     58.9049   
                       Likelihood Ratio Chi-Square    6     56.1468   
                       Mantel-Haenszel Chi-Square     1      3.6219    0.0570
                       Phi Coefficient                       0.2278
                       Contingency Coefficient               0.2221
                       Cramer's V                            0.1611

                                         Sample Size = 1135
结果也和例5-1基本相同,有所不同的是此处没有经连续性校正的卡方值(这里不需要校正),也没有自动给出fisher精确概率值。
在得出两因素不相互独立的结论后,可进一步对因素的各水平进行两两之间的差异检验,这就涉及到R*C表的拆分问题,关于此内容统计学教科书上多数都有介绍,感兴趣的可以自己研究一下。
本章关于两个率和多个率的比较问题就先介绍这么些内容,下一章我们将讨论非参数统计方法的编程实现。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69783/showart_699532.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP