美文网首页
SAS编程-Efficacy:如何进行样本率的比较?(卡方检验)

SAS编程-Efficacy:如何进行样本率的比较?(卡方检验)

作者: 野藤_ | 来源:发表于2022-07-20 23:43 被阅读0次

    欢迎关注,SAS茶谈!

    率为定性资料常用的描述性统计指标,之前介绍过如何生成样本率的可信区间这篇文章介绍如何进行样本率的比较,主要使用卡方检验

    样本率的比较,SAS中是通过FREQ过程步实现,具体语法问题可以参考SAS官方文档,SAS Help Center: PROC FREQ Statement。文章只展示SAS Output的输出结果,关于如何将结果输出到SAS数据集,可以参考文章SAS编程:过程步结果如何输出到数据集

    0. 样本率比较的5种情况

    在《医学统计学》(第三版,陆守曾、陈峰主编)第7章中,样本率的比较主要分为5种情况:

    1. 样本率与总体率的比较
    2. 两样本率的比较 (2*2)
    3. 多样本率的比较 (R*2)
    4. 构成比的比较 (R*C)
    5. 配对设计两样本率的比较

    在临床试验SAS编程中,第2、第3种情况较为常见。并且2、3为4的特殊情况,这三种情况的检验思想都是卡方检验,SAS实现也都相同。

    下面来介绍各个样本率比较的SAS实现。

    1. 样本率与总体率的比较

    样本率与总体率的比较的目的是,推断该样本是否来自某已知总体,检验方法使用的是正态近似法

    该比较的进行需要获取,样本率(p)、样本量(N)以及总体率。样本率、样本量、“阳性”例数、“阴性”例数,只要知晓任意2个统计量,就可以推出另外2个。

    具体是通过,FREQ过程步中Tables语句的Binomial选项进行实现。因为是与总体率进行比较,还需要通过子选项p=指定总体率,若不指定默认总体率为0.05。

    以教材中的例题为例:

    例1

    由题干可知,样本量为304,发生胃出血例数为96, 未发生为208,总体率为0.2。举例程序如下, level=选项指定需要计算样本率的那一个分类,p=指定总体率,cl=选项指定了2种常见的可信区间。

    data tmp1;
      aval = 0; count = 96; output;
      aval = 1; count = 208; output;
    run;
    
    proc freq data = tmp1;
      tables aval/ binomial (level="0" p=0.2 cl=wald exact);
      weight count;
    run;
    

    输出结果如下:

    Output 1

    输出的Z值为5.0471,与书中计算的5.05一致;单侧假设检验的p值<.0001。如果题干问,老年患者的出血情况是否与一般患者不同,这里就需要双侧检验了。

    2. 两样本率的比较 (2*2)

    两本率比较的目的是推断相应的两总体率是否相等,使用的方法是卡方检验

    卡方检验的思想是,如果两总体率相等,那么实际频数与理论频数应该比较接近,构建的卡方统计量表示两者的“差距”,这“差距”应该很小。

    两样本率的比较需要知晓,两组样本中的“阳性”例数、“阴性”例数。

    具体是通过,FREQ过程步中Tables语句的chisq选项进行实现,选项expected可以输出理论频数。

    教材中例题如下:

    例2

    2种治疗5年存活率的比较,这里有2个治疗组以及2个结局情况,存活代表“阳性”。SAS演示程序如下:

    data tmp2;
      grp = 1; aval =0; count = 39; output;
      grp = 1; aval =1; count = 8; output;
      grp = 2; aval =0; count = 57; output;
      grp = 2; aval =1; count = 27; output;  
    run;
    
    proc freq data = tmp2;
      tables grp*aval/ chisq expected;
      weight count;
    run;
    

    输出结果如下:

    Output 2

    输出中有好几种卡方和p值,教材7.2节有对3种方法的讨论,结果如下:

    • 一般认为理论频数T较小,如1<=T<=5,且总列数n不太小(>40), 使用连续性校正卡方;
    • 当n和T过小,T<1 或n<40时,不宜使用卡方检验,应用确切概率法;
    • 当n>40,T>5时,使用Person 卡方。

    不管哪一种情况,都能使用确切概率法。不过,确切概率法的计算量较大,当变量类别较多时,所需计算量可能超过计算机的计算能力,无法得出最后结果。实际工作中,要看统计的具体要求。

    本例中,n=131>40, 理论频数都大于5,可以采用Person卡方,卡方值3.5197,自由度为1,p=0.0606>0.05,按0.05的检验水准,不拒绝H0,差别无统计学意义,故尚不能认为两种疗法对乳腺癌患者的疗效有差别。

    3. 多样本率的比较 (R*2)

    多样本率的比较,基本数据为R行2列。RX2表的卡方检验用于推断R个样本率所代表的的总体率是否相等,使用的方法也是卡方检验

    基本思想同前,分析时需要知晓各组样本的的“阳性”例数、“阴性”例数。

    教材例题:

    例3

    不同文化程度的人患病率的比较,有5个文化程度类别以及2个结局情况,患病代表“阳性”。SAS演示程序如下:

    data tmp3;
      do grp = 1 to 5;
        do aval = 0 to 1;
          input count @@;
          output;
        end;
      end;
      datalines;
      267 188 309 375 188 476
      163 519 133 422
      ;
    run;
    
    proc freq data = tmp3;
      tables grp*aval/ chisq expected;
      weight count;
    run;
    

    程序运行结果如下:

    Output 3

    卡方值为223.3538,自由度为4, P<0.0001,按0.05的检验水准拒绝H0,接受H1,差异有统计学意义,故可认为不同文化程度60岁及以上老人患病率不等。

    这里说明一点,对于2X2表格的卡方检验,SAS默认是输出Fisher确切概率法的结果的;对于RX2表格的卡方检验(R>2),默认是不输出确切概率法的,需手动添加fisher选项。这是因为,当类别大于2时,确切概率法计算量过大,会占用过多计算机资源。

    测试了下,对于我当前电脑,8分钟都没能计算出确切概率法的结果。

    Warning

    4. 构成比的比较 (R*C)

    对于R个都分为C类的构成比,其基本数据有R行C列,组成RXC表。对多个构成比检验的目的是,推断各样本代表的总体构成比是否相同,使用的方法也是卡方检验

    基本思想同前,分析需要获取各样本各分类的例数。

    教材例题:

    例4

    3种国籍人血型构成比的比较,SAS演示程序如下:

    data tmp4;
      do grp = 1 to 3;
        do aval = 1 to 4;
          input count @@;
          output;
        end;
      end;
      datalines;
       450 410 100 40
       190 250 40 20
       300 250 350 100
      ;
    run;
    
    proc freq data = tmp4;
      tables grp*aval/ chisq expected;
      weight count;
    run;
    

    程序运行结果如下:

    Output 4

    卡方值为332.9668,自由度为6, P<0.0001,按0.05的检验水准拒绝H0,接受H1,差异有统计学意义,故可认为3国籍的人血型构成比总的来说不同。

    事实上,卡方分布是一种连续性的分布,2个或多个率的比较属于定性资料,是不连续的。卡方检验计算出的卡方是一个近似值,当样本量较大,且每个格子理论频数均较大时,近似程度较好

    当有1/5以上格子的理论频数小于5时,近似程度较差,宜使用似然比校验或确切概率法。Chisq的子选项WARN=type可以控制,当超过 20% 的格子的理论频数小于 5 时,是否给出提醒。默认情况下,PROC FREQ 会显示警告消息。

    SAS编程过程中,可以使用chisq(warn=output)选项,输出一个01变量到数据集,表示是否有超过 20% 的格子的理论频数小于 5 。根据变量值进行判断,是选择Person卡方,还是确切概率法

    5. 配对设计两样本率的比较

    配对设计是医学研究中常用的方法,二分类结果资料的配对研究常用语比较两种检验方法的差别。

    配对设计的特点是,对同一样本分别用甲乙两种方法处理,观察其阳性与阴性例数,这样结果就有4种情况:

    • 两法均为阳性(a)
    • 甲为阳性,乙为阴性(b)
    • 甲为阴性,乙为阳性(c)
    • 两法均为阴性(d)
    配对设计

    a、d为两种方法结果相同的部分,b、c为两法结果不同的部分。如果两种方法没有差别,总体上,B = C。但由于抽样误差的存在,样本常表现为 b ≠ c。根据样本统计量推断总体信息时,必须进行假设检验。

    配对设计的两样本率的比较,使用配对卡方检验(McNemar's 配对卡方检验),具体分为3种情况:

    • 当b+c≥40时,使用配对卡方检验(公式7.12)
    • 当20≤b+c<40时,使用校正配对卡方检验(公式7.13)
    • 当b+c<20时,使用确切概率法计算配对四个表的确切概率
    配对卡方检验

    SAS中使用,FREQ过程步中的agree选项进行2X2表格的McNemar’s test (For 2X2 tables, this option provides McNemar’s test);可以同时使用exact语句输出使用确切概率法计算的配对四个表的确切概率(exact mcnem;exact agree;);查看SAS文档,暂时没发现校正配对卡方检验的处理选项,后续可能需要手动编程

    教材例题:

    例5

    两种方法进行沙门氏菌检验,比较两种方法的阳性结果是否有差别。目前 b + c = 31,大于20小于40,应该使用校正的配对卡方检验。先用配对卡方检验做演示,后续补充校正的实现方法,SAS代码演示如下:

    data tmp5;
       grp1 = 1; grp2 = 1; count = 160; output;
       grp1 = 1; grp2 = 2; count = 26; output;
       grp1 = 2; grp2 = 1; count = 5; output;
       grp1 = 2; grp2 = 2; count = 48; output;
    run;
    
    proc freq data = tmp5;
      tables grp1*grp2/ agree;
      weight count;
      exact mcnem;
    run;
    
    Output 5

    从输出结果看,配对卡方p值、确切概率法计算的p值都小于0.05,按0.05的检验水准拒绝H0,接受H1,差异有统计学意义,故可以认为两法检验结果阳性率不同。

    总结

    以上就是样本率比较的可能涉及到情况,临床试验中2、3情况比较常见。编程时可能涉及“是否有超过 20% 的格子的理论频数小于 5”的判断,WARN=type选项的使用参考官方文档。

    感谢阅读, 欢迎关注:SAS茶谈!
    若有疑问,欢迎评论交流!

    相关文章

      网友评论

          本文标题:SAS编程-Efficacy:如何进行样本率的比较?(卡方检验)

          本文链接:https://www.haomeiwen.com/subject/rhxyirtx.html