Interprétation des résultats du modèle gam

8

J'ajuste quelques modèles additifs généralisés en utilisant le mgcvpackage en R, et je veux tester entre deux modèles; si je peux supprimer un terme ou non. Cependant, j'obtiens des résultats contradictoires (pour autant que je sache).

Un modèle, m1avec un terme lisse pour xajouté, semble donner un meilleur ajustement en termes de , AIC, explication de la déviance, et lors de la comparaison des modèles à l'aide d'un test F. Cependant, la signification du terme lisse n'est pas significative (ni lorsque j'ai ajouté au modèle une covariable linéaire, au lieu d'une spline).Radj2

Mon interprétation des tests de termes lisses est-elle correcte? Autant que j'ai pu comprendre la page d'aide, c'est que les tests sont approximatifs, mais il y a une assez grande différence ici.

Les sorties du modèle

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 ***

EDIT : modèle ajouté à partir des commentaires

> 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
user2957945
la source
mgcv::gamfait une régression pénalisée. Les select = TRUEtermes définis et ensuite peuvent être supprimés du modèle lors de l'ajustement. Cependant, si votre objectif est la prédiction, je vous recommande d'utiliser des ensembles de données de formation et de test indépendants ou au moins une validation croisée.
Roland
Merci Roland. J'ai ajouté select, mais je suis encore plus incertain de la façon d'interpréter cela. Il en résulte un modèle avec des statistiques d'ajustement presque identiques (légèrement pires ) en termes de r2, aic, etc., mais la valeur de p pour le terme s (x) est maintenant beaucoup plus faible. Donc, si le paramètre ne diminue pas, ce qui change.
user2957945
@ user2957945 pouvez-vous modifier votre question pour inclure la sortie du modèle utilisé select = TRUE?
Gavin Simpson
Bonjour @GavinSimpson, j'ai ajouté la sortie du modèle, merci
user2957945

Réponses:

2

tl; dr: AIC est prédictif tandis que les valeurs p sont pour l'inférence. De plus, votre test de signification peut simplement manquer de puissance.

Une explication possible est que l'hypothèse nulle est fausse, mais votre puissance est faible et votre valeur p n'est donc pas très impressionnante. Ce n'est pas parce qu'un effet est présent qu'il est facile à détecter. C'est pourquoi les essais cliniques doivent être conçus avec une certaine taille d'effet à l'esprit (généralement le MCID ).s(x)=0

Une autre façon de résoudre ce problème: différentes mesures devraient donner des résultats différents car elles codent des priorités différentes. L'AIC est un critère prédictif, et il se comporte de manière similaire à la validation croisée. Il peut en résulter des modèles trop complexes qui présentent de bonnes performances prédictives. En revanche, mgcvles valeurs de p sont utilisées pour déterminer la présence ou l'absence d'un effet donné , et la performance prédictive est une préoccupation secondaire.

remplacez «association» par «effet», sauf si vous travaillez avec des données provenant d'un essai contrôlé où été attribué au hasard ou si vous avez d'autres raisons de croire que l'association observée est causale.x

eric_kernfeld
la source
Merci. En fait, je me suis trompé dans ma compréhension. Ce que je devrais tester, c'est le modèle avec le s(x)terme, puis le modèle avec x(plutôt que non x. L'importance du terme lisse (ou autre) par défaut consiste à tester si une courbe lisse est nécessaire par rapport à une linéaire (plutôt que de l'omettre complètement)
user2957945
Oooh, bon à savoir!
eric_kernfeld