使用predict.glm函数时,如果type参数设置为"response",se.fit参数设置为TRUE,会返回哪些标准误差?

9

我将在提供的数据上拟合模型,该数据来源于这个优秀示例,示例展示了如何在执行逻辑回归后计算响应的95%置信区间:

foo <- mtcars[,c("mpg","vs")]; names(foo) <- c("x","y")
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)

critval <- 1.96 ## approx 95% CI
upr <- preds$fit + (critval * preds$se.fit)
lwr <- preds$fit - (critval * preds$se.fit)
fit <- preds$fit

fit2 <- mod$family$linkinv(fit)
upr2 <- mod$family$linkinv(upr)
lwr2 <- mod$family$linkinv(lwr)

现在,我的问题是您是否可以直接获得响应,只需请求即可。
predict(..., type = 'response', se.fit = TRUE)

不进行转换

predict(..., type = 'link', se.fit = TRUE)

然而,这会产生不同的标准误差。这些误差是什么,它们能直接用于计算拟合响应值的置信区间吗?在predict.glm中相关的代码如下:
switch(type, response = {
    se.fit <- se.fit * abs(family(object)$mu.eta(fit))
    fit <- family(object)$linkinv(fit)
}, link = , terms = )

并且进行输出比较:

preds_2 <- predict(mod, newdata = preddata, type = "response", se.fit = TRUE)


> head(preds_2$fit)
         1          2          3          4          5          6 
0.01265744 0.01399994 0.01548261 0.01711957 0.01892627 0.02091959 

> head(preds_2$se.fit)
         1          2          3          4          5          6 
0.01944681 0.02098841 0.02263473 0.02439022 0.02625902 0.02824491 

从上面的内容到下面的内容似乎并不是非常明显:

> head(fit2)
         1          2          3          4          5          6 
0.01265744 0.01399994 0.01548261 0.01711957 0.01892627 0.02091959 
> head(upr2)
        1         2         3         4         5         6 
0.2130169 0.2184891 0.2240952 0.2298393 0.2357256 0.2417589 
> head(lwr2)
           1            2            3            4            5            6 
0.0006067975 0.0007205942 0.0008555502 0.0010155472 0.0012051633 0.0014297930 
1个回答

13

如果您查看 ?family,您会发现$mu.etamu关于eta的导数(即反函数链的导数)。因此,type = "response"se.fit = TRUE可以为真实标准误提供一阶近似。这被称为“Delta方法”。

当然,由于反函数链通常是非线性的,置信区间在拟合值周围不对称。因此,先在链接尺度上获取置信区间,然后将其映射回响应尺度是正确的方式。


2
谢谢,我希望他们能够从你的第一段中提取一行并放入 ?predict.glm 的文档中。 - Alex
链接比例尺通常比响应比例尺更准确,因为它考虑了链接函数的非线性。但两者都是渐近有效的。 - Maverick Meerkat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接