De la manera habitual:
p <- predict(mod, newdata, type = "link", se.fit = TRUE)
Luego tenga en cuenta que p
contiene un componente $se.fit
con errores estándar de las predicciones para observaciones en newdata
. Luego puede formar CI multiplicando el SE por un valor apropiado para su nivel deseado. Por ejemplo, un intervalo de confianza aproximado del 95% se forma como:
upr <- p$fit + (2 * p$se.fit)
lwr <- p$fit - (2 * p$se.fit)
Sustituye en un valor apropiado de un t distribución o gaussiana el intervalo que necesita.
Tenga en cuenta que uso type = "link"
como usted no dice si tiene un GAM o solo un AM. En el GAM, debe formar el intervalo de confianza en la escala del predictor lineal y luego transformarlo a la escala de la respuesta aplicando el inverso de la función de enlace:
upr <- mod$family$linkinv(upr)
lwr <- mod$family$linkinv(lwr)
Ahora tenga en cuenta que estos son intervalos muy aproximados. Además, estos intervalos son puntuales en los valores predichos y no tienen en cuenta el hecho de que se realizó la selección de suavidad.
Se puede calcular un intervalo de confianza simultáneo a través de la simulación a partir de la distribución posterior de los parámetros. Tengo un ejemplo de eso en mi blog .
Si desea un intervalo de confianza que no esté condicionado a los parámetros de suavizado (es decir, uno que tenga en cuenta que no conocemos, sino que estimamos los valores de los parámetros de suavizado), agregue unconditional = TRUE
apredict()
llamada.
Además, si no desea hacerlo usted mismo, tenga en cuenta que las versiones más recientes de mgcv tienen una plot.gam()
función que devuelve un objeto con todos los datos utilizados para crear los gráficos de los suavizados y sus intervalos de confianza. Simplemente puede guardar la salida desde plot.gam()
un obj
obj <- plot(model, ....)
y luego inspeccionar obj
, que es una lista con un componente por suavizado. Agregue seWithMean = TRUE
a la plot()
llamada para obtener intervalos de confianza que no están condicionados al parámetro de suavidad.