Intervalo de confianza para el modelo GAM

14

Lectura mgcv::gamde la página de ayuda:

los intervalos de confianza / credibilidad están disponibles para cualquier cantidad predicha usando un modelo ajustado

Sin embargo, no puedo encontrar una manera de conseguir uno. Pensé predict.gamque tendría un type=confidencey un levelparámetro, pero no lo tiene. ¿Me pueden ayudar en cómo crearlo?

George Dontas
fuente

Respuestas:

33

De la manera habitual:

p <- predict(mod, newdata, type = "link", se.fit = TRUE)

Luego tenga en cuenta que pcontiene un componente $se.fitcon 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 = TRUEapredict() 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 = TRUEa la plot()llamada para obtener intervalos de confianza que no están condicionados al parámetro de suavidad.

Restablece a Mónica - G. Simpson
fuente
Hacer el CI simultáneo y el bootstrap paramétrico se involucra un poco más con el código, por lo que si puede sobrevivir con los intervalos puntuales geniales. Si no, puedo proporcionar más ejemplos para cada uno de ellos.
Restablece a Monica - G. Simpson el
+1 por la respuesta. Impresionante publicación de blog, voy a estudiarla por un tiempo para mejorar mis habilidades gráficas.
jbowman
¿De alguna manera podría obtener acceso a esa impresionante publicación de blog ( ucfagls.wordpress.com/2011/06/12/… )? Actualmente el blog requiere un inicio de sesión.
geneorama
@geneorama Alejé mi blog de Wordpress y durante un año pagué por las redirecciones a la nueva para todas las URL, pero dejé que caduque recientemente. Lo siento por eso. He editado el nuevo enlace, y eso no requiere un inicio de sesión. (El nombre de usuario es evitar dos copias del mismo puesto y he sido demasiado perezoso para eliminar las páginas del sitio de Wordpress hasta el momento.)
Restablecer Monica - G. Simpson
La publicación original del blog (ver el historial de edición de estas preguntas y respuestas) tenía una falla fundamental en la forma en que se creó el intervalo simultáneo. El enlace en la versión actual (a partir de diciembre de 2016) de la Respuesta calcula el intervalo simultáneo correctamente.
Restablece a Monica - G. Simpson el
5

Si solo desea trazarlos, la plot.gamfunción tiene sombreado que por defecto es intervalos de confianza utilizando el argumento de sombreado. También vea gam.vcomppara obtener los intervalos.

John
fuente
5

El paquete mgcv(más nuevo que gam) traza fácilmente intervalos creíbles. Este enfoque bayesiano es diferente de los intervalos de confianza, pero los resultados son casi los mismos, como lo han demostrado las simulaciones numéricas (ver el artículo de Marra y Wood vinculado en mgcv).

Peter Straka
fuente
2
+1 Un resultado clave del artículo de Marra & Wood es que desarrollan la comprensión / explicación de Nychka de por qué los intervalos creíbles empíricos de Bayes también tienen una interpretación / comportamiento frecuentista bastante extraordinario cuando se consideran intervalos de confianza "a través de la función". Puede tratar los intervalos de manera bayesiana o frecuentista y la propiedad de cobertura implicada por el1-αintervalo se mantiene, aproximadamente.
Restablece a Monica - G. Simpson el