在R predict.lm中,根据线性回归的结果计算预测,并提供计算这些预测的置信区间 . 根据手册,这些间隔是基于拟合的误差方差,而不是基于系数的误差间隔 .
另一方面,基于逻辑和泊松回归计算预测的predict.glm(在其他几个中)没有置信区间的选项 . 我甚至很难想象如何计算这种置信区间,以便为泊松和逻辑回归提供有意义的见解 .
是否存在为此类预测提供置信区间有意义的情况?他们怎么解释?这些案例中的假设是什么?
通常的方法是在线性预测器的比例上计算置信区间,其中事物将更加正常(高斯),然后应用链接函数的逆以将置信区间从线性预测器比例映射到响应比例 .
要做到这一点,你需要两件事;
用 type = "link" 调用 predict() ,和
type = "link"
predict()
使用 se.fit = TRUE 调用 predict() .
se.fit = TRUE
第一个产生线性预测器的尺度预测,第二个返回预测的标准误差 . 在伪代码中
## 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 的列表 .
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(正常)分布中选择的(我现在完全忘记用于哪种类型的GLM以及属性是什么)和所需的覆盖范围 . 1.96 是高斯分布的值,覆盖率为95%:
critval
1.96
> qnorm(0.975) ## 0.975 as this is upper tail, 2.5% also in lower tail [1] 1.959964
现在,对于 fit , upr 和 lwr ,我们需要将链接函数的反函数应用于它们 .
upr
lwr
fit2 <- mod$family$linkinv(fit) upr2 <- mod$family$linkinv(upr) lwr2 <- mod$family$linkinv(lwr)
现在您可以绘制所有三个和数据 .
preddata$lwr <- lwr2 preddata$upr <- upr2 ggplot(data=foo, mapping=aes(x=x,y=y)) + geom_point() + stat_smooth(method="glm", method.args=list(family=binomial)) + geom_line(data=preddata, mapping=aes(x=x, y=upr), col="red") + geom_line(data=preddata, mapping=aes(x=x, y=lwr), col="red")
1 回答
通常的方法是在线性预测器的比例上计算置信区间,其中事物将更加正常(高斯),然后应用链接函数的逆以将置信区间从线性预测器比例映射到响应比例 .
要做到这一点,你需要两件事;
用
type = "link"
调用predict()
,和使用
se.fit = TRUE
调用predict()
.第一个产生线性预测器的尺度预测,第二个返回预测的标准误差 . 在伪代码中
preds
然后是包含组件fit
和se.fit
的列表 .然后是线性预测器的置信区间
critval
是根据需要从t或z(正常)分布中选择的(我现在完全忘记用于哪种类型的GLM以及属性是什么)和所需的覆盖范围 .1.96
是高斯分布的值,覆盖率为95%:现在,对于
fit
,upr
和lwr
,我们需要将链接函数的反函数应用于它们 .现在您可以绘制所有三个和数据 .