McNemar's检验(配对卡方检验):多种操作教程,总有一个适合你!

专题合集更多教程

作者:张耀文

 

1、问题与数据

 

某研究者想要观察戒酒干预的效果,招募了50例研究对象,其中饮酒者24例,不饮酒者26例,饮酒率为48%。所有研究对象均观看饮酒造成严重交通事故的视频。两周后,研究者询问研究对象的饮酒状态,其中饮酒者14例,不饮酒者36例,饮酒率为28%。

 

看起来戒酒干预是有效的,饮酒率从48%下降到28%,但是这个下降是否有统计学意义呢

 

2、McNemar’s检验

 

McNemar's检验(配对卡方检验)用于分析两个相关率的变化是否有统计学意义

 

首先,需要将数据整理成2*2的四格表(如单元格A表示干预前和干预后都饮酒的9人)。

 

McNemar’s检验的公式χ= (B-C)2/(B+C),对于上述数据χ= (15-5)2/(15+5)=5.000,根据自由度为1的卡方分布,可利用EXCEL根据该卡方值计算对应的P值=0.025。

 

 

北京大学医学出版社2006年出版的《卫生统计学教程》中写到,当B+C≤40时,还需要做连续性校正,χ= ( |B-C| -1)2/(B+C),则上述数据对应的χ= ( |15-5| -1)2/(15+5)=4.050, 该卡方值对应的P值=0.044。

 

 

3、SPSS计算

 

 McNemar’s通过SPSS计算的详细步骤可见(SPSS详细操作:配对卡方检验(McNemar’s test)),上述数据得到的结果是:

 

 

可以看到SPSS给出了Asymptotic Sig. (2-sided test),该行的值是经过连续校正后的P值。而Exact Sig. (2-sided test) 是根据二项分布计算精确P值。SPSS中,非对角线格子(B+C)的观测数大于25时,不展示精确P值,只展示近似P值。

 

后文会探讨二项分布计算精确P值,这里先探讨Asymptotic Sig. (2-sided test)。实际上,不管B+C的值多少(≤40或>40),SPSS给出的Asymptotic Sig. (2-sided test)都是经过连续校正的。

 

比如另一个数据:

 

 

SPSS计算得到的P值是:

 

 

连续性校正的McNemar’s检验χ= ( |B-C| -1)2/(B+C),则上述数据对应χ= ( |45-25| -1)2/(45+15) = 14.017, 该卡方值对应的P值=0.000181。如果不做连续性校正,得得到的P值是0.000108。

 

4、二项分布计算精确P值

 

SPSS中,Exact Sig. (2-sided test)是如何得到的呢?使用二项分布对上述数据检验的无效假设是p=0.5。干预前或干预后不饮酒的人数为N=B+C=15+5=20,假设一个试验,符合p=0.5的二项分布,那么在20次试验中,失败5次或更少的概率是多少呢?

 

使用SPSS Syntax输入以下程序可以得到,P=0.041。可以看到和SPSS输出的Exact Sig. (2-sided test)相等。

 

5、SAS计算

 

可使用以下程序

 

得到的结果是:

 

可以看到,对于B+C≤40的数据,SAS给出的P值是非连续性校正的,也不给出精确的P值(SAS不管B+C等于多少,都不校正)。

 

6、在线工具VassarStats计算

 

在VassarStats(http://vassarstats.net/index.html)的主界面点击Proportions → McNemar's Test for Correlated Proportions in the Marginals of a 2x2 Contingency Table 即可计算。

 

可以看出,当B+C≤1000时,VassarStats采用的是二项分布计算精确P值。另外,VassarStats还会给出OR值及其95%CI。

 

7、三个及以上相关率的检验

 

可以使用Cochran’s Q检验(SPSS操作:多个相关样本的非参数检验(Cochran's Q检验)


扫码关注“医咖会”公众号,及时获取最新统计教程!

描述问题
选择一个标签 (请选择一个与您问题最相符的标签)
提交问题
我要提问
描述问题
选择一个标签 (请选择一个与您问题最相符的标签)
提交问题
描述问题
选择一个标签 (请选择一个与您问题最相符的标签)
    提交问题