glm 模型预测的置信区间

Confidence interval of prediction from glm model

我正在尝试从 glm 中获得预测的 95% 置信区间。下面是我的模型

library(caret)
library(ISLR)
data(Smarket)
glm.fit <- glm(Direction ~ Lag1 + Lag2, data = Smarket, family = binomial)

现在我尝试使用以下代码来估计预测的 95% 置信区间

> head(predict(glm.fit, interval="confidence", level = 0.025))
          1           2           3           4           5           6 
 0.05554775 -0.01128128 -0.04222017  0.07288089  0.05806364  0.03169772 
> head(predict(glm.fit, interval="confidence", level = 0.975))
          1           2           3           4           5           6 
 0.05554775 -0.01128128 -0.04222017  0.07288089  0.05806364  0.03169772 

显然这没有给我正确的间隔,因为在这两种情况下,值是相同的。

你能帮我找到正确的时间间隔吗?

predict.glm() 不采用与 predict.lm 相同的参数(参见 ?predict.glm):您必须手动执行此操作(或查找具有辅助函数的包)。下面的代码在 logit (log-odds) 尺度上构建 95% Wald 置信下限和上限,然后使用 plogis() 到 back-transform 到概率尺度 ...

pp <- predict(glm.fit, se.fit = TRUE)
ci_lwr <- with(pp, plogis(fit + qnorm(0.025)*se.fit))
ci_upr <- with(pp, plogis(fit + qnorm(0.975)*se.fit))
> head(ci_lwr)
        1         2         3         4         5         6 
0.4842931 0.4596593 0.4451171 0.4780052 0.4796479 0.4759596 
> head(ci_upr)
        1         2         3         4         5         6 
0.5433766 0.5347319 0.5339426 0.5581846 0.5492351 0.5398233