逻辑回归预测的置信区间
在R预测.lm基于线性回归的结果计算预测,并提供计算这些预测的置信区间。 根据手册,这些间隔是基于拟合的误差方差,而不是系数的误差间隔。
另一方面,基于logistic和泊松回归(其他几个)计算预测的predict.glm没有可信区间的选项。 而且我甚至很难想象如何计算这样的置信区间来为泊松和逻辑回归提供有意义的见解。
有没有为这种预测提供置信区间有意义的情况? 他们如何解释? 这些情况下的假设是什么?
通常的方法是在线性预测器的尺度上计算置信区间,其中事情将更加正常(高斯),然后应用链接函数的逆来映射从线性预测器尺度到响应尺度的置信区间。
要做到这一点,你需要两件事情,
- 用
type = "link"
调用predict()
,并且 - 使用
se.fit = TRUE
调用predict()
。
第一个产生预测线性预测的规模,第二个返回预测的标准误差。 在伪代码中
## foo <- mtcars[,c("mpg","vs")]; names(foo) <- c("x","y") ## Working example data mod <- glm(y ~ x, data = foo, family = binomial) preddata <- with(foo, data.frame(x = seq(min(x), max(x), length = 100))) preds <- predict(mod, newdata = preddata, type = "link", se.fit = TRUE)
preds
然后是一个组件fit
和se.fit
列表。
那么线性预测器的置信区间是
critval <- 1.96 ## approx 95% CI upr <- preds$fit + (critval * preds$se.fit) lwr <- preds$fit - (critval * preds$se.fit) fit <- preds$fit
critval
是根据需要从t或z (正常)分布中select出来的(我现在正确地忘记了哪种types的GLM和哪些属性使用哪个)。 1.96
是给出95%覆盖的高斯分布的值:
> qnorm(0.975) ## 0.975 as this is upper tail, 2.5% also in lower tail [1] 1.959964
现在对于fit
, upr
和lwr
我们需要将链接函数的逆应用于它们。
fit2 <- mod$family$linkinv(fit) upr2 <- mod$family$linkinv(upr) lwr2 <- mod$family$linkinv(lwr)
现在你可以绘制所有三个数据。