作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 R 中,predict.lm 根据线性回归的结果计算预测,并提供计算这些预测的置信区间。根据手册,这些区间是基于拟合的误差方差,而不是基于系数的误差区间。
另一方面,predict.glm 基于逻辑回归和泊松回归(以及其他一些回归)计算预测,没有置信区间选项。我什至很难想象如何计算这样的置信区间,以便为泊松和逻辑回归提供有意义的见解。
在某些情况下,为此类预测提供置信区间是否有意义?如何解释它们?这些情况下的假设是什么?
最佳答案
通常的方法是计算线性预测器尺度上的置信区间,其中情况会更正常(高斯),然后应用链接函数的反函数将置信区间从线性预测器尺度映射到 react 量表。
为此,您需要做两件事;
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(正态)分布中选择(我现在完全忘记哪个用于哪种类型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)
现在您可以绘制所有三个和数据。
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")
关于r - 逻辑回归预测的置信区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14423325/
我是一名优秀的程序员,十分优秀!