之前的文章(SAS编程-Efficacy:如何进行样本率的比较?(卡方检验) )介绍了几类样本率的比较,并进行了SAS程序演示。
关于配对卡方检验(McNemar's 配对卡方检验),介绍了3种情况:
- 当b+c≥40时,使用配对卡方检验(公式7.12)
- 当20≤b+c<40时,使用校正配对卡方检验(公式7.13)
- 当b+c<20时,使用确切概率法计算配对四个表的确切概率
1. 配对卡方检验与确切概率法的代码实现
由于SAS无法直接输出第2种情况的结果,当时文章以1、3情况进行演示。
教材例题:
两种方法进行沙门氏菌检验,比较两种方法的阳性结果是否有差别。目前 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;
配对卡方检验的p值以及确切概率法的p值,如方框中展示。
2. 校正配对卡方检验
由于SAS没有自带选项输出校正的配对卡方检验的结果,这就需要自己通过编程实现对应算法,输出卡方值以及对应的p值。实现过程主要为2步:
- 校正卡方值的计算
- 卡方值作为上分位点,计算其尾部概率(拒绝域)
校正的卡方值通过公式7.13进行实现:
尾部概率的计算,可以通过1减去卡方值对应的分布函数值F(x)
进行实现,而分布函数值可以通过函数probchi(chi, df)
进行获取。具体可以参考文章医学统计:随机变量的概率分布、概率计算的SAS实现 , 文章有对分布函数以及分位点概念的介绍。
具体实现代码如下:
data tmp;
b = 26;
c = 5;
chi = (abs(b-c)-1)**2/(b+c);
Fx = probchi(chi, 1);
p = 1 - Fx;
run;
输出数据如下:
卡方 = 12.90,p = 0.0003 < 0.05,在α = 0.05的检验水准上拒绝H0,接受H1,差异有统计学意义,故可以认为两种检验方法的阳性率不同。
总结
文章介绍了配对卡方检验的3类情况的SAS实现。对于校正的卡方检验,SAS没有直接输出结果的选项,需要自己进行编程实现对应的算法。
卡方值是,对实际频数与理论频数差值的度量。在零假设的成立的情况下,实际频数与理论频数的差异应该不会不大,即,由抽样误差造成。
当卡方值很大时,甚至大到取得该值以及更极端值的概率<0.05时,这已经是一个小概率事件。根据小概率原理,在一次抽样中,小概率事件不可能发生。不可能发生的事件发生了,有理由认为零假设不成立。
感谢阅读, 欢迎关注!
若有疑问,欢迎评论交流!