结论不论是列联表,还是logisitic回归,输出的普通卡方及Fisher精确卡方检验的P值均与R的输出一致,但是OR及95%CI均为:(其他详细输出省略),这个置信区间与P值=0.039是对应的。所以一时间还是觉得SAS靠谱,R有时候真的需要谨慎。
但是后来重新思考,觉得应该不至于R连这种简单的统计都会出问题,难道是SAS和R在计算OR值的置信区间上采用了不同的方法。于是翻阅现今流行病学最权威的书籍Modern Epidemiology (3rd
edition),希望找到OR值的置信区间的计算上是否存在校正的置信区间的算法。但是似乎并没有找到。
然后想想R中经常存在不同程序包计算同一指标的方法,于是查阅可计算OR置信区间的不同程序包的输出,是否均是相同的问题。结果发现fmsb程序包输出的OR置信区间与SAS的输出结果一致。具体如下:
于是进一步明确不是R的程序包存在bug,而是方法的不同导致了SAS与R的输出结果存在差异。进一步回过头查看cci 函数的输出结果,结果发现OR的置信区间输出的说明为
Exact 95% CI,于是查看cci
于是最终想明白三件事:
(1)R的简单程序包(如fmsb,功能仅类似与计算器)通常计算的都是OR值普通的置信区间,R的高级程序包(如epicalc,stat等)通常默认输出的是OR精确的置信区间,但epicalc也可以提供OR值普通的置信区间,而stat只能提供OR精确的置信区间。
(2)只知道P值有精确检验的方法,原来OR值也有精确置信区间一说
logisitic过程只能提供OR值普通的置信区间,不能提供OR值精确的置信区间,因此,从某种角度上来说,SAS其实并没有R精细
同时在二楼跟帖中补充了STATA中关于OR值的相关问题讨论,欢迎大家讨论,^_^