当logistic回归遇到log-binomial回归

当结局发生率较大时,再使用OR来估计RR时会不准确,建议当结局发生率大于10%时,使用log-binomial回归方法替代logistic回归,下面简单给大家介绍一下log-binomial回归。

我们知道logistic回归的模型

  ,而log-binomial回归只将模型作一点变化,即将p/(1-p)换成p(p为结局发生的概率)。模型很容易理解,但模型等号前的lnp是个负数,而等号后面的B0 BiXi可以为正也可以为负,因此在回归时需要加一个限制条件即B0 BiXi≤0,因此log-binomal回归是一个有偏估计。

现在我们模型一个数据看看两个回归的结果。我们设定某病的基线患病率为10%,分别模拟RR=1,2,3的三个数据,总人数为1000,暴露组和非暴露组各500例。如下表。当RR=1时,暴露组和非暴露组各有50人患病。

当logistic回归遇到log-binomial回归-图片1

  分别使用logistic回归和log-binomial回归进行统计分析,得到的结果如下表。

当logistic回归遇到log-binomial回归-图片2

  可以看出,虽然log-binomial回归是有偏估计,但估计值与预设的RR完全一样,而且置信区间也比较小,也即更加精确。因此当结局发生率较高,应该用log-binomial回归尝试进行统计分析。

在进行log-binomial回归时,自变量如果是连续变量时,可能造成模型不收敛,因此我们需要将数据进行加权,方法是将原数据复制后,复制数据其它不变,将结局变量0与1对换,给予原数据较高的权重(一般0.99)以上,给予复制数据较低的权重(一般0.01以下),再进行回归分析。log-binomial回归尚不能在SPSS菜单中实现,现把程序给大家,拿走不谢。

  proc genmod data=a;

ods select ParameterEstimates;

ods output ParameterEstimates=para0;

weight w;

model y=x/D=BIN link=LOG INterCEPT=-1LRCI;

run;

proc print data=para0;

run;

data para;

set para0;

PR=EXP(Estimate);

LPR=EXP(LowerLRCL);

UPR=EXP(UpperLRCL);

keep Parameter PR LPR UPR;

proc print data=para;

run;

发表评论

匿名网友

拖动滑块以完成验证