Вы можете использовать опцию se.fit=TRUE
функции predict
. Это дает вам стандартные ошибки, из которых вы можете рассчитать доверительный интервал. Пример:
out <- glm(I(Sepal.Length > 5.8) ~ Sepal.Width + Species, iris, family=binomial())
testdat <- data.frame(Sepal.Width=3, Species="versicolor")
pred_accp <- predict(out, newdata=testdat, type="response", se.fit=TRUE)
alpha <- .05 ## confidence level
cc <- -qt(alpha/2, df=Inf)*pred_accp$se.fit
setNames(
pred_accp$fit + cc * c(-1, 0, 1),
c("lower", "estimate", "upper"))
# lower estimate upper
# 0.5505699 0.7072896 0.8640093
Обратите внимание, что здесь предполагается, что данные распределены по z, то есть df=Inf
. Для t-распределения вы можете указать правильные степени свободы здесь.