Intervalle de confiance pour le modèle GAM

14

mgcv::gamPage d'aide de lecture :

des intervalles de confiance / crédibles sont facilement disponibles pour toute quantité prévue à l'aide d'un modèle ajusté

Cependant, je ne peux pas trouver un moyen d'en obtenir un. Je pensais predict.gamavoir un paramètre type=confidenceet un levelmais ce n'est pas le cas. Pouvez-vous m'aider à le créer?

George Dontas
la source

Réponses:

33

De la manière habituelle:

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

Notez ensuite que pcontient un composant $se.fitavec des erreurs standard des prédictions pour les observations dansnewdata . Vous pouvez ensuite former CI en multipliant le SE par une valeur appropriée au niveau souhaité. Par exemple, un intervalle de confiance d'environ 95% est formé comme suit:

upr <- p$fit + (2 * p$se.fit)
lwr <- p$fit - (2 * p$se.fit)

Vous remplacez par une valeur appropriée à partir d'un t distribution ou gaussienne l'intervalle dont vous avez besoin.

Notez que j'utilise type = "link" comme vous ne dites pas si vous avez un GAM ou juste un AM. Dans le GAM, vous devez former l'intervalle de confiance à l'échelle du prédicteur linéaire, puis le transformer à l'échelle de la réponse en appliquant l'inverse de la fonction de liaison:

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

Notez maintenant que ce sont des intervalles très approximatifs. De plus, ces intervalles sont ponctuels sur les valeurs prédites et ils ne prennent pas en compte le fait que la sélection de lissage a été effectuée.

Un intervalle de confiance simultané peut être calculé par simulation à partir de la distribution postérieure des paramètres. J'en ai un exemple sur ma blog .

Si vous voulez un intervalle de confiance qui ne soit pas subordonné aux paramètres de lissage (c'est-à-dire qui prend en compte que nous ne connaissons pas, mais estimez plutôt les valeurs des paramètres de lissage), alors ajoutez unconditional = TRUEà l' predict()appel.

De plus, si vous ne voulez pas le faire vous-même, notez que les nouvelles versions de mgcv ont une plot.gam()fonction qui renvoie un objet avec toutes les données utilisées pour créer les tracés des lissages et leurs intervalles de confiance. Vous pouvez simplement enregistrer la sortie plot.gam()dans un obj

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

puis inspecter obj, qui est une liste avec un composant par lisse. Ajoutez seWithMean = TRUEà l' plot()appel pour obtenir des intervalles de confiance qui ne sont pas conditionnels au paramètre de lissage.

Réintégrer Monica - G. Simpson
la source
Faire le CI simultané et le bootstrap paramétrique s'impliquent un peu plus avec le code, donc si vous pouvez vous en sortir avec juste les intervalles ponctuels super. Sinon, je peux fournir d'autres exemples pour chacun d'eux.
Reinstate Monica - G. Simpson
+1 pour la réponse. Impressionnant article de blog en effet, je vais l'étudier pendant un certain temps pour améliorer mes compétences graphiques.
jbowman
Est-ce que je pourrais avoir accès à cet impressionnant article de blog ( ucfagls.wordpress.com/2011/06/12/… )? Actuellement, le blog nécessite une connexion.
geneorama
@geneorama J'ai éloigné mon blog de Wordpress et pendant un an, j'ai payé pour les redirections vers le nouveau pour toutes les URL, mais j'ai laissé tomber cela récemment. Désolé pour ça. J'ai modifié le nouveau lien et cela ne nécessite pas de connexion. (La connexion est pour éviter deux copies du même message et j'ai été trop paresseux pour supprimer les pages du site Wordpress pour le moment.)
Réintégrer Monica - G. Simpson
Le billet de blog d'origine (voir l'historique des modifications de ce Q & A) avait un défaut fondamental dans la façon dont l'intervalle simultané a été créé. Le lien dans la version actuelle (à partir de décembre 2016) de la réponse calcule correctement l'intervalle simultané.
Rétablir Monica - G. Simpson
5

Si vous voulez simplement les tracer, la plot.gamfonction a un ombrage qui par défaut est des intervalles de confiance en utilisant l'argument de l'ombre. Voir aussi gam.vcomppour obtenir les intervalles.

John
la source
5

Le package mgcv(plus récent que gam) trace facilement des intervalles crédibles. Cette approche bayésienne est différente des intervalles de confiance, mais les résultats sont presque les mêmes, comme l'ont montré les simulations numériques (voir l' article de Marra et Wood lié en mgcv).

Peter Straka
la source
2
+1 Un résultat clé de l'article de Marra & Wood est qu'ils développent la compréhension / explication de Nychka des raisons pour lesquelles les intervalles crédibles empiriques de Bayes ont également une interprétation / un comportement fréquentiste assez extraordinaire lorsqu'ils sont considérés comme des intervalles de confiance "transversaux". Vous pouvez traiter les intervalles de manière bayésienne ou fréquentiste et la propriété de couverture impliquée par le1-αintervalle tient, environ.
Rétablir Monica - G. Simpson