Interpretación de los resultados del modelo gam.

8

Estoy ajustando algunos modelos aditivos generalizados usando el mgcvpaquete en R, y quiero probar entre dos modelos; si puedo eliminar un término o no. Sin embargo, estoy obteniendo resultados contradictorios (por lo que puedo decir).

Un modelo, m1con un término suave para xagregar, parece dar un mejor ajuste en términos de , AIC, la desviación explicada, y al comparar los modelos usando una prueba F. Sin embargo, la importancia del término suave no es significativa (ni lo es cuando agregué al modelo como una covariable lineal, en lugar de una spline).Radj2

¿Es correcta mi interpretación de las pruebas de términos suaves? Por mucho que pude entender la página de ayuda, fue que las pruebas son aproximadas, pero aquí hay una gran diferencia.

El modelo sale

m1 <- gam(out ~ s(x) + s(y) + s(z), data=dat)
> summary(m1)
# 
# Family: gaussian 
# Link function: identity 
# 
# Formula:
# out ~ s(x) + s(y) + s(z)
# 
# Parametric coefficients:
#               Estimate Std. Error t value Pr(>|t|)
# (Intercept) -7.502e-16  1.209e-01       0        1
# 
# Approximate significance of smooth terms:
#        edf Ref.df     F  p-value    
# s(x) 4.005  4.716 1.810    0.136    
# s(y) 8.799  8.951 4.032 4.01e-05 ***
# s(z) 7.612  8.526 5.649 4.83e-07 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# R-sq.(adj) =  0.213   Deviance explained = 24.8%
# GCV = 6.9741  Scale est. = 6.6459    n = 455

> AIC(m1)
#[1] 2175.898

> m2 <- gam(out ~ s(y) + s(z), data=dat)
> summary(m2)
# 
# Family: gaussian 
# Link function: identity 
# 
# Formula:
# out ~ s(y) + s(z)
# 
# Parametric coefficients:
#              Estimate Std. Error t value Pr(>|t|)
# (Intercept) 1.705e-15  1.228e-01       0        1
# 
# Approximate significance of smooth terms:
#        edf Ref.df     F  p-value    
# s(y) 8.726  8.968 5.137 6.78e-07 ***
# s(z) 8.110  8.793 5.827 1.55e-07 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# R-sq.(adj) =  0.187   Deviance explained = 21.7%
# GCV =  7.144  Scale est. = 6.8639    n = 455

> AIC(m2)
#[1] 2187.168

> anova(m1, m2, test="F")
# Analysis of Deviance Table
# 
# Model 1: out ~ s(x) + s(y) + s(z)
# Model 2: out ~ s(y) + s(z)
#   Resid. Df Resid. Dev      Df Deviance      F    Pr(>F)    
# 1    433.58     2881.6                                      
# 2    437.16     3000.7 -3.5791   -119.1 5.0073 0.0009864 ***

EDITAR : modelo agregado de los comentarios

> summary(m3 <- gam(out ~ s(x) + s(y) + s(z), data=dat, select=TRUE))

#Family: gaussian 
#Link function: identity 

#Formula:
#out ~ s(x) + s(y) + s(z)

#Parametric coefficients:
#              Estimate Std. Error t value Pr(>|t|)
#(Intercept) -1.588e-14  1.209e-01       0        1

#Approximate significance of smooth terms:
#       edf Ref.df     F  p-value    
#s(x) 4.424      9 1.750  0.00161 ** 
#s(y) 8.260      9 3.623 5.56e-06 ***
#s(z) 7.150      9 5.329 4.19e-09 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

#R-sq.(adj) =  0.212   Deviance explained = 24.7%
#GCV = 6.9694  Scale est. = 6.6502    n = 455
usuario2957945
fuente
mgcv::gamhace regresión penalizada. Establecer select = TRUEy luego los términos se pueden eliminar del modelo durante el ajuste. Sin embargo, si su objetivo es la predicción, recomendaría usar conjuntos de datos de prueba y capacitación independientes o al menos una validación cruzada.
Roland
Gracias Roland He agregado select, pero estoy aún más inseguro de cómo interpretar esto. El resultado es un modelo con estadísticas de ajuste casi iguales (un poco peor ) en términos de r2, aic, etc., pero el valor p para el término s (x) ahora es mucho más bajo. Entonces, si el parámetro no se está reduciendo, lo que está cambiando.
user2957945
@ user2957945 ¿puede editar su pregunta para incluir el resultado del modelo que utilizó select = TRUE?
Gavin Simpson
Hola @GavinSimpson, he agregado la salida del modelo, gracias
user2957945

Respuestas:

2

tl; dr: AIC es predictivo mientras que los valores p son para inferencia. Además, su prueba de importancia puede simplemente carecer de poder.

Una posible explicación es que la hipótesis nula es falsa, pero tiene poca potencia y, por lo tanto, su valor p no es muy impresionante. El hecho de que haya un efecto presente no significa que sea fácil de detectar. Es por eso que los ensayos clínicos deben diseñarse teniendo en cuenta un cierto tamaño del efecto (generalmente el MCID ).s(x)=0

Otra forma de resolver esto: diferentes medidas deberían dar diferentes resultados porque codifican diferentes prioridades. El AIC es un criterio predictivo y se comporta de manera similar a la validación cruzada. Puede resultar en modelos demasiado complejos que tienen un fuerte desempeño predictivo. Por el contrario, mgcvlos valores p se usan para determinar la presencia o ausencia de un efecto dado , y el rendimiento predictivo es una preocupación secundaria.

sustituya "asociación" por "efecto" a menos que esté trabajando con datos de un ensayo controlado donde se asignó aleatoriamente o tenga otras razones para creer que la asociación observada es causal.x

eric_kernfeld
fuente
Gracias. En realidad me equivoqué en mi entendimiento. Lo que debería de probar es el modelo con el s(x)término y luego el modelo con x(en lugar de no x. La importancia del término suave (o de otro modo) por defecto es probar si se necesita una curva suave en comparación con una lineal (en lugar de omitir por completo)
user2957945
Oooh, bueno saberlo!
eric_kernfeld