- data a;
- input group case freq;
- cards;
- 1 1 26
- 2 1 27
- 3 1 24
- 4 1 21
- 5 1 4
- 1 0 12952
- 2 0 10082
- 3 0 6557
- 4 0 3140
- 5 0 401
- ;
- run;
- proc logistic data=a ;
- weight freq;
- class group (ref='1') ;
- model Case(event='1') = group / risklimits;
- run;
从logistic回归过程来看,没有出现异常(没有不收敛,没有线性可分),主要输出结果如下:
从最大似然估计的参数表来看,group2相对于group1的P值=0.0224<0.05,所以可以认为得到的响应的OR置信区间应该不跨1。但是从OR值的表来看, group2相对于group1发生事件的风险OR置信区间跨1啦,所以从置信区间表得出来的P值应该>0.05,所以也就存在矛盾。不一致的地方也同样出现在group3相对于group1。
初步以为这种矛盾是由于似然估计的时候有截距照成的,所以构建没有截距的logistic模型,发现结果很异常,就不在此显示。为了探讨可能的原因,选用group1和group2的数据,采用最简单的频数表的方法计算OR及P值。程序及 结果如下:
- data b;
- set a;
- where group<=2;
- run;
- proc freq data=b;
- weight freq;
- table group*case/nopercent norow nocol chisq relrisk;
- run;
可以看到OR值及置信区间是和logistic回归一致的,但是P值是0.2931,这两者方向上是一致的。所以logistic回归最大似然估计表中得到的P值并不是真正OR对应的P值,对此不明白原因何在。如何才能让logistic回归输出与OR对应的P值,需要进一步的探讨。