24 votos

Intervalo de confianza para el modelo GAM

Leer mgcv::gam de la página de ayuda:

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

Sin embargo, no encuentro la manera de conseguirlo. He pensado que predict.gam tendría un type=confidence y un level pero no lo hace. ¿Pueden ayudarme a crearlo?

55voto

David J. Sokol Puntos 1730

De la forma habitual:

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

A continuación, observe que p contiene un componente $se.fit con los errores estándar de las predicciones para las observaciones en newdata . A continuación, puede formar el CI multiplicando el SE por un valor adecuado al 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)

Se sustituye por un valor apropiado de un $t$ o la distribución gaussiana para el intervalo que necesita.

Tenga en cuenta que utilizo type = "link" ya que no dices si tienes un GAM o sólo un AM. En el GAM, hay que formar el intervalo de confianza en la escala del predictor lineal y luego transformarlo en la escala de la respuesta aplicando la inversa de la función de enlace:

upr <- mod$family$linkinv(upr)
lwr <- mod$family$linkinv(lwr)

Tenga en cuenta que se trata de intervalos muy aproximados. Además estos intervalos son puntuales sobre los valores predichos y no tienen en cuenta el hecho de que se haya realizado la selección de suavidad.

Se puede calcular un intervalo de confianza simultáneo mediante simulación a partir de la distribución posterior de los parámetros. Tengo un ejemplo de ello en mi blog .

Si desea un intervalo de confianza que no esté condicionado por los parámetros de suavidad (es decir, uno que tenga en cuenta que no conocemos, sino que estimamos, los valores de los parámetros de suavidad), entonces añada unconditional = TRUE a la predict() llamar.

Además, si no quiere hacerlo usted mismo, tenga en cuenta que las nuevas versiones de mgcv tener un plot.gam() que devuelve un objeto con todos los datos utilizados para crear los gráficos de los suavizados y sus intervalos de confianza. Puede guardar la salida de plot.gam() en un objeto

obj <- plot(model, ....)

y luego inspeccionar obj , que es una lista con un componente por liso. Añadir seWithMean = TRUE a la plot() para obtener intervalos de confianza que no estén condicionados por el parámetro de suavidad.

1 votos

Hacer el CI simultáneo y el bootstrap paramétrico implica un poco más de código, así que si puedes arreglártelas con sólo los intervalos puntuales, genial. Si no, puedo proporcionar más ejemplos para cada uno de ellos.

1 votos

+1 por la respuesta. Impresionante entrada en el blog de hecho, voy a estar estudiando por un tiempo para mejorar mis habilidades gráficas.

0 votos

Alguna forma de poder acceder a esa impresionante entrada del blog ( ucfagls.wordpress.com/2011/06/12/ )? Actualmente el blog requiere un inicio de sesión.

7voto

Si sólo quiere trazarlos el plot.gam tiene un sombreado que se ajusta por defecto a los intervalos de confianza utilizando el argumento shade. Véase también gam.vcomp para obtener los intervalos.

7voto

yum Puntos 106

El paquete mgcv (más reciente 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 han demostrado las simulaciones numéricas (véase el documento de Marra y Wood vinculado en mgcv).

3 votos

+1 Un resultado clave del trabajo de Marra y Wood es que desarrollan la comprensión/explicación de Nychka de por qué los intervalos de credibilidad empíricos de Bayes también tienen una interpretación/comportamiento frecuentista bastante extraordinario cuando se ven como intervalos de confianza "a través de la función". Se pueden tratar los intervalos de forma bayesiana o frecuentista y la propiedad de cobertura implícita en el $1-\alpha$ el intervalo se mantiene, aproximadamente.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X