率差假设检验常规估计分为两种,正态近似法和score test,前者包含Z检验及其连续性校正和T检验,后者包括MN,FM,和GN。
Sas help提供了各种方法的介绍:
https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.3/statug/statug_freq_details53.htm#statug.freq.freqrdiffclmn
SAS code中, method=只能设置以下方法;FM, HA, MN, NEWCOMBE, SCORE, WALD, WILSON.
NEWCOMBE和WILSON一样;
但是MN和FM和Score一样都是输出FM的方法,所以本文想讨论的是MN方法的P值的实现。
浏览sas help和PASS说明书时,发现FM score和MN SCORE唯一的区别是分母需要✖square root(N/N-1)。
所以解决方案如下:
首先第一步输出FM score的SE。
第二部,SEmnd=SE* square root(N/N-1)
第三步,Zmnd=d/SEmnd
第四步,求出P值
data a;
P=probnorm(xx);
proc print;
run;
另外,R也可以验证。
https://cran.r-project.org/web/packages/metalite.ae/vignettes/rate-compare.html
当然,因为SAS对于小数点精度是4位,在R中如果想输出的结果和Sas高度相似,请注意精度位数。
对于GN,第一步求ZFMD,第二步求,第三步带入。
Take home message:
1. FM score和MN SCORE唯一的区别是分母需要✖square root(N/N-1)。
2. FM score也是计算GN score的基础。
3. R验证时,注意精度的设置;最好和Sas保持一致。