La plupart des lissages supplémentaires dans la boîte à outils mgcv sont vraiment là pour les applications spécialisées - vous pouvez les ignorer en grande partie pour les GAM généraux, en particulier les lissages univariés (vous n'avez pas besoin d'une spline à effet aléatoire, d'une spline sur la sphère, d'un champ aléatoire Markov, ou un film de savon plus lisse si vous avez des données univariées par exemple.)
Si vous pouvez supporter le coût d'installation, utilisez des splines de régression à plaque mince (TPRS).
Ces splines sont optimales dans un sens MSE asymptotique, mais nécessitent une fonction de base par observation. Ce que Simon fait dans mgcv est de générer une version de bas rang du TPRS standard en prenant la base TPRS complète et en la soumettant à une composition par eigend. Cela crée une nouvelle base où la première k
fonction de base dans le nouvel espace conserve la plupart du signal dans la base d'origine, mais dans beaucoup moins de fonctions de base. C'est ainsi que mgcv parvient à obtenir un TPRS qui utilise uniquement un nombre spécifié de fonctions de base plutôt qu'une par observation. Cette composition numérique préserve une grande partie de l'optimalité de la base TPRS classique, mais avec un effort de calcul considérable pour les grands ensembles de données.
Si vous ne pouvez pas supporter le coût d'installation de TPRS, utilisez des splines de régression cubiques (CRS)
C'est une base rapide à générer et convient donc aux problèmes avec beaucoup de données. Il est basé sur les nœuds, cependant, dans une certaine mesure, l'utilisateur doit maintenant choisir où ces nœuds doivent être placés. Pour la plupart des problèmes, il y a peu à gagner à aller au-delà du placement par défaut des nœuds (à la limite des données et à un espacement uniforme entre les deux), mais si vous avez un échantillonnage particulièrement inégal sur la plage de la covariable, vous pouvez choisir de placer des nœuds des quantiles d'échantillon régulièrement espacés de la covariable, par exemple.
Chaque autre lissage en mgcv est spécial, utilisé lorsque vous souhaitez des lissages isotropes ou deux covariables ou plus, ou pour le lissage spatial, ou qui implémentent un rétrécissement, ou des effets aléatoires et des splines aléatoires, ou lorsque les covariables sont cycliques, ou que la ondulation varie au cours l'étendue d'une covariable. Vous ne devez vous aventurer loin dans la boîte à outils lisse si vous avez un problème qui nécessite un traitement spécial.
Rétrécissement
Il existe des versions à retrait du TPRS et du CRS en mgcv . Ceux-ci mettent en œuvre une spline où la partie parfaitement lisse de la base est également soumise à la pénalité de douceur. Cela permet au processus de sélection de la fluidité de rétrécir un fond lisse au-delà d'une fonction même linéaire essentiellement à zéro. Cela permet à la pénalité de douceur d'effectuer également la sélection des fonctionnalités.
Splines Duchon, splines P et splines B
Ces splines sont disponibles pour les applications spécialisées où vous devez spécifier séparément l'ordre de base et l'ordre de pénalité. Les splines de Duchon généralisent le TPRS. J'ai l'impression que des splines P ont été ajoutées à mgcv pour permettre la comparaison avec d'autres approches pénalisées basées sur la vraisemblance, et parce que ce sont des splines utilisées par Eilers & Marx dans leur article de 1996 qui a stimulé une grande partie du travail ultérieur dans les GAM. Les splines P sont également utiles comme base pour d'autres splines, comme les splines avec des contraintes de forme et les splines adaptatives.
Les splines B, telles qu'elles sont implémentées dans mgcv, offrent une grande flexibilité dans la configuration de la pénalité et des nœuds pour les splines, ce qui peut permettre une certaine extrapolation au-delà de la plage des données observées.
Splines cycliques
Si la plage de valeurs d'une covariable peut être considérée comme sur un cercle où les points finaux de la plage doivent être équivalents (mois ou jour de l'année, angle de mouvement, aspect, direction du vent), cette contrainte peut être imposée à la base. Si vous avez des covariables comme celle-ci, il est logique d'imposer cette contrainte.
Lissoirs adaptatifs
Plutôt que d'intégrer un GAM séparé dans les sections de la covariable, les splines adaptatives utilisent une matrice de pénalité pondérée, où les poids peuvent varier en douceur sur la plage de la covariable. Pour les splines TPRS et CRS, par exemple, ils supposent le même degré de lissage sur toute la plage de la covariable. Si vous avez une relation où ce n'est pas le cas, vous pouvez finir par utiliser plus de degrés de liberté que prévu pour permettre à la spline de s'adapter aux parties ondulées et non ondulées. Un exemple classique dans la littérature sur le lissage est le
library('ggplot2')
theme_set(theme_bw())
library('mgcv')
data(mcycle, package = 'MASS')
pdata <- with(mcycle,
data.frame(times = seq(min(times), max(times), length = 500)))
ggplot(mcycle, aes(x = times, y = accel)) + geom_point()
Ces données présentent clairement des périodes de lissage différent - effectivement nul pour la première partie de la série, beaucoup lors de l'impact, diminuant par la suite.
si nous adaptons un GAM standard à ces données,
m1 <- gam(accel ~ s(times, k = 20), data = mcycle, method = 'REML')
nous obtenons un ajustement raisonnable, mais il y a une certaine ondulation supplémentaire au début et à la fin de la plage times
et de l'ajustement utilisé ~ 14 degrés de liberté
plot(m1, scheme = 1, residuals = TRUE, pch= 16)
Pour s'adapter à la fluctuation variable, une spline adaptative utilise une matrice de pénalité pondérée avec des poids variant en douceur avec la covariable. Ici, je réaménage le modèle d'origine avec la même dimension de base (k = 20) mais nous avons maintenant 5 paramètres de lissage (par défaut m = 5
) au lieu du 1 d'origine.
m2 <- gam(accel ~ s(times, k = 20, bs = 'ad'), data = mcycle, method = 'REML')
Notez que ce modèle utilise beaucoup moins de degrés de liberté (~ 8) et la douceur ajustée est beaucoup moins ondulante aux extrémités, tout en étant capable de s'adapter adéquatement aux grands changements de l'accélération de la tête pendant l'impact.
Ce qui se passe réellement ici, c'est que la spline a une base pour le lissage et une base pour la pénalité (pour permettre aux poids de varier en douceur avec la covariable). Par défaut , ces deux éléments sont splines P, mais vous pouvez également utiliser les types de base de CRS aussi ( bs
ne peut être l' un 'ps'
, 'cr'
, 'cc'
, 'cs'
.)
Comme illustré ici, le choix d'adapter ou non dépend vraiment du problème; si vous avez une relation pour laquelle vous supposez que la forme fonctionnelle est lisse, mais que le degré de lissage varie sur la plage de la covariable dans la relation, alors une spline adaptative peut avoir un sens. Si votre série a connu des périodes de changement rapide et des périodes de changement faible ou plus progressif, cela pourrait indiquer qu'un lissage adaptatif peut être nécessaire.