当遇到log-binomial回归。当结局发生率较大时,再使用or来估计rr时会不准确,建议当结局发生率大于10%时,使用log-binomial回归方法替代,下面简单给大家介绍一下log-binomial回归。
我们知道的模型是
,而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人患病。
分别使用和log-binomial回归进行,得到的结果如下表。
可以看出,虽然log-binomial回归是有偏估计,但估计值与预设的rr完全一样,而且置信区间也比较小,也即更加精确。因此当结局发生率较高,应该用log-binomial回归尝试进行。
在进行log-binomial回归时,自变量如果是连续变量时,可能造成模型不收敛,因此我们需要将数据进行加权,方法是将原数据复制后,复制数据其它不变,将结局变量0与1对换,给予原数据较高的权重(一般0.99)以上,给予复制数据较低的权重(一般0.01以下),再进行回归分析。log-binomial回归尚不能在菜单中实现,现把程序给大家,拿走不谢。
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;
上一篇:试验和实验能混用吗?