Обычным способом:
p <- predict(mod, newdata, type = "link", se.fit = TRUE)
Затем обратите внимание, что p
содержит компонент $se.fit
со стандартными ошибками прогнозов для наблюдений в newdata
. Затем вы можете сформировать CI, умножив SE на значение, соответствующее вашему желаемому уровню. Например, приблизительный 95% доверительный интервал формируется как:
upr <- p$fit + (2 * p$se.fit)
lwr <- p$fit - (2 * p$se.fit)
T
Обратите внимание, что я использую, type = "link"
как вы не говорите, если у вас есть GAM или просто AM. В GAM вам необходимо сформировать доверительный интервал на шкале линейного предиктора, а затем преобразовать его в шкалу ответа, применив обратную функцию связи:
upr <- mod$family$linkinv(upr)
lwr <- mod$family$linkinv(lwr)
Теперь обратите внимание, что это очень приблизительные интервалы. Кроме того, эти интервалы точечно соответствуют прогнозируемым значениям и не учитывают тот факт, что выбор плавности был выполнен.
Одновременный доверительный интервал может быть вычислен путем моделирования из апостериорного распределения параметров. У меня есть пример этого в моем блоге .
Если вам нужен доверительный интервал, который не зависит от параметров сглаживания (т. Е. Тот, который учитывает то, что мы не знаем, а вместо этого оцениваем значения параметров сглаживания), то добавьте unconditional = TRUE
к predict()
вызову.
Также, если вы не хотите делать это самостоятельно, обратите внимание, что в более новых версиях mgcv есть plot.gam()
функция, которая возвращает объект со всеми данными, используемыми для создания графиков сглаживания и их доверительных интервалов. Вы можете просто сохранить вывод из plot.gam()
объекта
obj <- plot(model, ....)
и затем проверьте obj
, который является списком с одним компонентом на сглаживание. Добавьте seWithMean = TRUE
к plot()
вызову, чтобы получить доверительные интервалы, которые не зависят от параметра гладкости.
Если вы просто хотите построить их, у
plot.gam
функции есть затенение, которое по умолчанию использует доверительные интервалы с использованием аргумента затенения. Также смотритеgam.vcomp
для получения интервалов.источник
Пакет
mgcv
(новее, чем gam) легко готовит достоверные интервалы. Этот байесовский подход отличается от доверительных интервалов, но результаты почти такие же, как показали численные расчеты (см. Статью Марры и Вуда, связанную в mgcv).источник