在二项式模型中使用偏移量来说明患者数量的增加


18

我提出了两个相关问题。我有一个数据框,该数据框在一列中包含患者人数(范围为10-17位患者),分别显示当天是否发生事件的0和1。我使用的是二项式模型来将事件的概率回归到患者人数上。但是,我想适应这样一个事实:当有更多的病人时,不可避免地会发生更多的事件,因为那天病房的病人总时间更长。

所以我正在使用像这样的偏移二项式模型(R代码):

glm(Incident~Numbers, offset=Numbers, family=binomial, data=threatdata)

我的问题是:

  1. 可以完全相同地预测变量和偏移量吗?我想部分排除进补概率的增加,从本质上看是否还有剩余。这对我来说很有意义,但是如果我弄错了,我会有些谨慎。

  2. 偏移量指定正确吗?我知道在泊松模型中会读到

    offset=log(Numbers)
    

我不知道这里是否有等效项,而且我似乎找不到与Google相关的二项式偏移量(主要问题是我不断得到负二项式,这当然是不好的)。


2
您不是要调整的内容,就是要测量的内容吗,即“事件”的概率如何随着患者人数的增加而增加?
B_Miner 2012年

1
我需要回应B_Miner的观点。我认为您何时/为什么在这种情况下使用偏移量感到困惑。您的模型(无偏移)将为您提供根据患者#的函数得出的事故概率的拟合值。如果您对其他函数形式感兴趣,请根据科学有趣的事物考虑转换(例如#的对数或幂)。
2012年

您能澄清一下有关事件吗?某个事件与患者有关,还是与整个病房有关?如果与患者相关,则可能发生> 1次事件。如果没有患者,是否不可能发生事件?
atiretoo 2012年

1
显然我的回答是“没有足够的细节”。我提供了理论上的发展,可运行的代码以及您对这两个问题的解答,因此您也许可以弄清还需要什么?
2012年

1
对不起,共轭先前,您的回答很好。“没有足够的细节”是添加到赏金中的标签(即发布之前在标签中)。悬赏结束时,我会接受的,以防万一有人做出更好的回应,但这不太可能,您的帮助很大,谢谢。
克里斯·比利

Answers:


17

如果您对病房中N天的患者发生事件的可能性感兴趣,那么您需要一个模型,例如:

mod1 <- glm(incident ~ 1, offset=patients.on.ward, family=binomial)

偏移量表示试验,incident为0或1,且事件的概率是恒定的(没有异质性以生成事件),并且患者不会交互以引起事件(不会传染)。或者,如果发生事件的机会很小,这对您来说就应该是(或者您已对事件计数进行了阈值处理而未向我们提及),那么您可能更喜欢泊松公式

log.patients.on.ward <- log(patients.on.ward)
mod2 <- glm(incident ~ 1, offset=log.patients.on.ward, family=poisson)

适用相同假设的地方。记录偏移量是因为病房中的患者人数具有比例/相乘作用。

扩展在第二个模型,也许你认为还有更多的事件比否则会被预期只是由于增加病人数量。也就是说,也许患者确实相互作用或异质。所以你试试

mod3 <- glm(incident ~ 1 + log.patients.on.ward, family=poisson)

如果on的系数与log.patients.on.ward固定为的1显着不同mod2,那么您假设没有异质性和没有传染性的假设确实存在问题。虽然您当然无法区分这两者(也无法将其与其他遗漏变量区分开),但是您现在可以估算出病房中患者人数的增加会比您所期望的增加更多的事件发生率/可能性期待机会。在参数空间中,其1-coef(mod3)[2]间隔可从导出confint

或者,您可以直接使用对数数量及其系数。如果您只是想使用病房中的患者人数预测发生事故的可能性,那么此模型将是一种简单的方法。

问题

  1. 在偏移量中有因变量可以吗?对我来说,这听起来像是一个非常糟糕的主意,但我不认为您必须这样做。

  2. Poisson回归模型中的偏移exposure确实为log(exposure)offsetR的二项式回归模型的使用可能令人困惑,这基本上是表明试验次数的方法。始终可以将其替换为定义为cbind(incidents, patients.on.ward-incidents)并且没有偏移量的因变量。可以这样想:在泊松模型中,它在log链接函数后面的右侧输入,在二项式模型中,它在logit链接函数前面的左侧输入。


18

泊松回归中的偏移

让我们先来看一下为什么我们在Poisson回归中使用偏移量。通常,我们希望以此来控制曝光。令为每单位暴露的基线速率,为相同单位下的暴露时间。预期的事件数量将是。λtλ×t

在GLM模型中,我们使用链接函数对期望值进行建模,即g

g(λti)=log(λti)=β0+β1x1,i+

其中为个别的曝光持续时间和为个别协变量值。省略号仅表示我们可能要添加的其他回归项。tiixii

我们可以简化简化上面的表达式

log(λ)=log(ti)+β0+β1x1,i+

log(ti)

二项式回归

在通常使用logit链接的二项式回归中,即:

g(pi)=logit(pi)=log(pi1pi)=β0+β1x1,i+

pi

pii

pi,jjiij=1Ni(1pi,j)Nii

pi=1j=1Ni(1pi,j).

pi=1(q)Ni,
q=1pp

pig(pi)log((q)N1)

结果,在这种情况下我们不能使用偏移量。

p


2
+1,欢迎使用@Rider_X网站。我希望我们将来能有更多这样的答案。
gung-恢复莫妮卡

1
@gung-谢谢!对于我认为是有用的答案,我并没有听到太多的回信,所以我也没有回头。我将不得不改变它。问候。
Rider_X 2012年

2
+1非常感谢能解释理论和推理的答案,而不是(或除了)显示要使用的代码和命令之外的答案。
ub

9

这个答案分为两部分,第一部分是对问题的直接回答,第二部分是对您所提议的模型的评论。

第一部分涉及Numbers与等式的rhs一起使用作为偏移量。这样做的效果将只是从的估计系数中减去1 Numbers,从而抵消偏移的影响,并且不会改变结果。下面的示例删除了几行不相关的输出,说明了这一点:

library(MASS)
Numbers <- rpois(100,12)
p <- 1 / (1 + exp(0.25*Numbers))
y <- rbinom(100, Numbers, p)
Incident <- pmin(y, 1) 

> summary(glm(Incident~Numbers, family="binomial"))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3121  -1.0246  -0.8731   1.2512   1.7465  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  0.99299    0.80624   1.232   0.2181  
Numbers     -0.11364    0.06585  -1.726   0.0844 . <= COEFFICIENT WITH NO OFFSET TERM
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 135.37  on 99  degrees of freedom
Residual deviance: 132.24  on 98  degrees of freedom
AIC: 136.24

> summary(glm(Incident~Numbers, offset=Numbers, family="binomial"))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3121  -1.0246  -0.8731   1.2512   1.7465  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.99299    0.80624   1.232    0.218    
Numbers     -1.11364    0.06585 -16.911   <2e-16 *** <= COEFFICIENT WITH OFFSET TERM
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 342.48  on 99  degrees of freedom
Residual deviance: 132.24  on 98  degrees of freedom
AIC: 136.24

请注意,除了数字系数和零偏差(以及t统计量,因为它仍是针对0而不是-1进行测试)之外,其他一切都一样。

t1(1pt)NtNttpttlog(1(1pt)Nt)/Ntlog(1pt)tNtNt

也许还会有人怀疑每个病人的概率因人而异,这将导致一个更复杂的,层次化的模型,但是我在这里不做讨论。

在任何情况下,鉴于这种情况以及您观察到的患者数量的有限范围,与其使用对数刻度上线性的模型,不如对关系进行非参数化并将患者数量分为三或三个,可能会更好四个组(例如10-11、12-13、14-15和16-17)为这些组构造虚拟变量,然后使用右侧的虚拟变量进行逻辑回归。这将更好地捕获非线性关系,例如“系统在16位患者周围超负荷,并且事件开始明显增多”。如果您有更多的患者,我建议使用广义的加性模型,例如“ mgcv”软件包中的“ gam”。


0

似乎最简单的方法是指定对数链接并保持偏移量,就像泊松模型一样。


2
我确定您是对的,但是为了我的利益,这是一个泊松现象吗?听起来OP的数据集带有二进制结果。这会是glm(Incident〜Numbers,offset = log(Numbers),family = poisson,data = threatdata)吗?
B_Miner 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.