如何通过逻辑回归计算拟合值的标准误差?


29

当您从逻辑回归模型预测拟合值时,如何计算标准误差?我的意思是拟合值,而不是系数(涉及Fishers信息矩阵)。

我只发现了如何获得与数字R(例如,这里的R-帮助,或在这里对堆栈溢出),但我找不到公式。

pred <- predict(y.glm, newdata= something, se.fit=TRUE)

如果您可以提供在线资源(最好是在大学网站上),那就太好了。

Answers:


35

预测只是估计系数的线性组合。这些系数是渐近正态的,因此这些系数的线性组合也将是渐近正态的。因此,如果我们可以获取参数估计的协方差矩阵,则可以轻松获得这些估计的线性组合的标准误差。如果我将协方差矩阵表示为,并将向量中线性组合的系数写为C,则标准误差仅为ΣCCΣC

# Making fake data and fitting the model and getting a prediction
set.seed(500)
dat <- data.frame(x = runif(20), y = rbinom(20, 1, .5))
o <- glm(y ~ x, data = dat)
pred <- predict(o, newdata = data.frame(x=1.5), se.fit = TRUE)

# To obtain a prediction for x=1.5 I'm really
# asking for yhat = b0 + 1.5*b1 so my
# C = c(1, 1.5)
# and vcov applied to the glm object gives me
# the covariance matrix for the estimates
C <- c(1, 1.5)
std.er <- sqrt(t(C) %*% vcov(o) %*% C)

> pred$se.fit
[1] 0.4246289
> std.er
          [,1]
[1,] 0.4246289

我们看到,我展示的“手动”方法给出的标准错误与通过 predict


2
我有一个相关的问题。当我们预测线性回归(非逻辑)的值和置信区间时,我们会纳入误差方差/标准误差。但是逻辑回归不是。这种差异是否源于逻辑回归的观察值为0或1,并且估计误差方差没有意义吗?我觉得我们至少应该做点什么,但我可能会遗漏一些东西。
user2457873 2013年

3
老问题了,但是这个线程现在对我有帮助,所以去了:logit观察到0或1,但是它预测了概率。当您得到一个拟合值的标准误差时,它在线性预测器的标度上。您可以通过说话的Logit(FIT +/- 1.96 * se.fit)得到概率的置信区间
generic_user

请注意,这使用渐近正态近似值,这对于逻辑模型可能非常不利(在此站点上搜索Hauss-Donner现象)。对于系数,可以通过例如似然分析(由MASS中的confint函数使用)进行补救。对于线性预测器来说,这是不可能的...
kjetil b halvorsen

2
这对OP的要求是不正确的;您适合的GLM使用身份链接功能,而不是logit链接功能。您应该适合自己o <- glm(y ~ x, data = dat, family = binomial)。你能修改一下吗?您的解释适用于估计对数SE(使用type = "link"选项),但不适predict用于使用type = "response"选项时的SE 。
张哲
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.