手动计算逻辑回归95%置信区间与在R中使用confint()函数之间为什么会有区别?


34

亲爱的大家-我注意到我无法解释的怪事,可以吗?总之:在logistic回归模型中计算置信区间的手动方法和R函数confint()得出不同的结果。

我一直在研究Hosmer&Lemeshow的Applied Logistic回归(第二版)。在第3章中,有一个计算比值比和95%置信区间的示例。使用R,我可以轻松地重现模型:

Call:
glm(formula = dataset$CHD ~ as.factor(dataset$dich.age), family = "binomial")

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
-1.734  -0.847  -0.847   0.709   1.549  

Coefficients:
                             Estimate Std. Error z value Pr(>|z|)    
(Intercept)                   -0.8408     0.2551  -3.296  0.00098 ***
as.factor(dataset$dich.age)1   2.0935     0.5285   3.961 7.46e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 136.66  on 99  degrees of freedom
Residual deviance: 117.96  on 98  degrees of freedom
AIC: 121.96

Number of Fisher Scoring iterations: 4

但是,当我计算参数的置信区间时,我得到的间隔与文本中给出的间隔不同:

> exp(confint(model))
Waiting for profiling to be done...
                                 2.5 %     97.5 %
(Intercept)                  0.2566283  0.7013384
as.factor(dataset$dich.age)1 3.0293727 24.7013080

Hosmer&Lemeshow建议使用以下公式:

Ë[β^1个±ž1个-α/2×东南^β^1个]

他们计算出的置信区间为as.factor(dataset$dich.age)1(2.9,22.9)。

这在R中似乎很简单:

# upper CI for beta
exp(summary(model)$coefficients[2,1]+1.96*summary(model)$coefficients[2,2])
# lower CI for beta
exp(summary(model)$coefficients[2,1]-1.96*summary(model)$coefficients[2,2])

给出与本书相同的答案。

但是,对于为什么confint()似乎会给出不同结果的任何想法?我已经看到了许多使用的示例confint()


1
您介意为Hosmer&Lemeshow添加确切的文献参考吗?我一直在他们的书本和书籍中寻找建议,但是还没有找到。
DavidR 2014年

Answers:


36

随附的网站中获取数据后,我将按照以下方式进行操作:

chdage <- read.table("chdage.dat", header=F, col.names=c("id","age","chd"))
chdage$aged <- ifelse(chdage$age>=55, 1, 0)
mod.lr <- glm(chd ~ aged, data=chdage, family=binomial)
summary(mod.lr)

基于轮廓似然的95%CI可以通过

require(MASS)
exp(confint(mod.lr))

如果MASS程序包是自动加载的,则通常是默认设置。在这种情况下,我得到

                2.5 %     97.5 %
(Intercept) 0.2566283  0.7013384
aged        3.0293727 24.7013080

现在,如果我想与95%的Wald CI(基于渐进正态性)进行比较(如您手工计算出的那样),我会confint.default()改用它。这产生

                2.5 %     97.5 %
(Intercept) 0.2616579  0.7111663
aged        2.8795652 22.8614705

Wald CI在大多数情况下都很好,尽管基于轮廓似然法在复杂的采样策略中可能很有用。如果您想了解它们如何工作的想法,这里是主要原理的简要概述:概貌似然法的置信区间及其在兽医流行病学中的应用。您还可以查看Venables和Ripley的MASS书籍,第8.4节,第220-221页。


25

跟进:轮廓置信区间更可靠(为似然选择适当的临界值确实涉及渐近(大样本)假设,但这比Wald置信区间下面的二次似然表面假设要弱得多)。据我所知,关于Wald统计量在配置文件置信区间上没有任何论据,只是Wald统计量的计算速度要快得多,并且在许多情况下可能“足够好”(但有时会出现问题:查找Hauck-唐纳效应)。


2
谢谢您,并建议我查一下Hauck-Donner效应。这种效果在教科书中并没有得到太多的对待,但似乎很重要!
Andrew

18

我相信,如果查看confint()的帮助文件,您会发现正在构建的置信区间是“配置文件”区间,而不是Wald置信区间(您来自HL的公式)。


5
啊 回答了这个问题。但是,它导致下一个-首选哪个?
安德鲁
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.