在使用 R 在 R 中拟合逻辑回归模型后,model <- glm(y~x,family='binomial')我可以使用 获得拟合系数的置信区间confint(model),但我想知道如何手动计算这些值。在线性模型的情况下,lin_mod <- lm(y~x)我可以执行以下操作以获得斜率系数的 95% 置信区间:
CI_lower <- coefficients(lin_mod)[2] - 1.96*summary(lin_mod)$coefficients[2,2]
CI_upper <- coefficients(lin_mod)[2] + 1.96*summary(lin_mod)$coefficients[2,2]
其中coefficients(lin_mod)[2]是系数的估计值,summary(lin_mod)$coefficients[2,2]是对应的标准误。
但是,当我使用相同的过程来计算逻辑回归的拟合系数的置信区间时,这些值与confint. 下面是使用一些随机生成的数据的示例:
x <- rnorm(n=100, mean=5, sd=2)
y_prob <- plogis(x, location=5, scale=1)
y <- sapply(y_prob, function(p) rbinom(1, 1, p))
model <- glm(y~x, family='binomial')
summary(model)$coefficients
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) -3.8998231 0.8838826 -4.412150 1.023490e-05
# x 0.7963213 0.1746632 4.559183 5.135303e-06
CI_lower <- coefficients(model)[2] - 1.96*summary(model)$coefficients[2,2] # = 0.4539815
CI_upper <- coefficients(model)[2] + 1.96*summary(model)$coefficients[2,2] # = 1.138661
confint(model)
# 2.5 % 97.5 %
# (Intercept) -5.8044657 -2.313925
# x 0.4843258 1.173998
如您所见,手动计算围绕 x 系数 yield 的 95% CI,而使用yielded(0.4539815,1.138661)计算它。所以我的问题是,如何计算这个置信区间,为什么我的估计不同?从对较大样本的一些额外测试中,我可以看到这两个估计值在大 N 限制内收敛,但我对小 N 的情况很感兴趣,特别是为什么产生的 CI与系数估计值不对称。confint(0.4843258,1.173998)confintconfint