Une revue des procédures de fonction spline en R

Le terme « spline » fait référence à un outil d’artisan, une fine bande flexible de bois ou de métal, utilisée pour tracer des courbes lisses. Plusieurs poids seraient appliqués sur différentes positions afin que la bande se courbe en fonction de leur nombre et de leur position. Elle était ensuite forcée de passer à travers un ensemble de points fixes : des broches métalliques, les côtes d’un bateau, etc. Sur une surface plane, il s’agissait souvent de poids avec un crochet attaché et donc facile à manipuler. La forme du matériau plié prendrait naturellement la forme d’une courbe spline. De même, les splines sont utilisées en statistique pour reproduire mathématiquement des formes flexibles. Des nœuds sont placés à plusieurs endroits dans la plage de données, afin d’identifier les points où les pièces fonctionnelles adjacentes se rejoignent. Au lieu de bandes de métal ou de bois, des pièces fonctionnelles lisses (généralement des polynômes d’ordre inférieur) sont choisies pour s’adapter aux données entre deux nœuds consécutifs. Le type de polynôme ainsi que le nombre et le placement des nœuds sont ce qui définit alors le type de spline.

Exemple motivant

Avec l’introduction des modèles additifs généralisés (MAG) en 1986, l’utilisation de la modélisation spline est devenue un outil établi dans l’analyse de régression statistique. Pour illustrer cela, considérons les données d’un ensemble de 892 femmes de moins de 50 ans collectées dans trois villages d’Afrique de l’Ouest (données disponibles dans le fichier additionnel 1 : annexe). Nous souhaitons explorer la relation entre l’âge (en années) et une mesure grossière de la graisse corporelle, à savoir l’épaisseur du pli cutané du triceps. La figure 1 montre la relation entre l’âge et l’épaisseur du pli cutané du triceps mesurée en échelle logarithmique. Pour plus d’informations sur les données, voir .

Fig. 1

Un tracé de l’âge en années par rapport à l’épaisseur du pli cutané du triceps pour 892 femmes en Afrique de l’Ouest . La ligne pointillée représente un ajustement linéaire simple, la ligne solide un ajustement utilisant des polynômes flexibles du troisième degré

Un modèle de régression simple de la forme yi=β0+β1xi+ε,i=1,…,n, donnerait difficilement une approximation du modèle observé, car il est évident que la relation n’est pas linéaire. Le modèle peut être étendu pour tenir compte des effets non linéaires en utilisant certains polynômes. Alors, les effets non linéaires pourraient être modélisés par un polynôme de degré 3 donné par :

$$ y_{i}=\alpha_{0}+\alpha_{1} u_{i}+\alpha_{2} u_{i}^{2}+\alpha_{3} u_{i}^{3}+\epsilon $$
(1)

où u est une fonction de x appelée fonction de base, définie ici par :

$$U=\left $$

Le modèle de régression décrit dans l’équation 1 est toujours un modèle linéaire, malgré le fait qu’il fournisse une fonction non linéaire de la variable prédicteur. Le modèle est encore linéaire dans les coefficients et peut être ajusté en utilisant les méthodes des moindres carrés ordinaires. La base peut être créée en R à l’aide de la fonction poly(x,3) avec les entrées x (faisant référence à la variable) et p (faisant référence au degré du polynôme). Cela conduit à un modèle lisse univarié simple de la forme : yi=f(xi)+ε où f() est une fonction/transformation du prédicteur. Un tel modèle peut être facilement ajusté dans R en utilisant : lm(y ∼poly(x,3)). Malgré sa simplicité, la régression polynomiale présente plusieurs inconvénients, le plus important étant la non-localité. Cela signifie que la fonction ajustée à une valeur donnée x0 dépend de valeurs de données éloignées de ce point. Il est facile de voir ce phénomène en action en ajustant un polynôme à un ensemble de données et en déplaçant vers le haut ou vers le bas l’un des points de données proches du bord droit. En conséquence, la fonction ajustée changera généralement loin de cette coordonnée x.

Envisagez, au lieu d’ajuster un polynôme global, de partitionner la plage de x en intervalles plus petits, en utilisant un nombre et une position arbitraires de points, τ, également appelés les nœuds. Un modèle continu simple par morceaux peut être ajusté en définissant les fonctions : f1(x)=1,f2(x)=x,f3(x)=(x-τ1)+,f4(x)=(x-τ2)+,…, avec « + » une fonction définie comme :

$$u_{+}=\left\{\i0} \begin{array}{cc} u, & \text{if}\, u>0\\\\\\N- 0, & \text{if}\, u\leq 0 \end{array}\N-right. $$

L’ensemble de ces fonctions conduit à une fonction composite f(x).

Définition des splines

La spline métallique du dessinateur peut prendre des formes arbitraires, par exemple la section d’une aile d’avion ou la spirale d’une pompe centrifuge. Pour les applications statistiques, nous supposerons des courbes de la forme f(X), c’est-à-dire une seule valeur y pour chaque x. Le prédicteur x peut être une variable unique ou des variables multiples. Notre discussion se concentrera presque entièrement sur une fonction univariée avec \(X\in \mathbb {R}\). Définissez un ensemble de nœuds τ1<…<τK dans l’intervalle de X. Une spline f(X) sera une fonction lisse, satisfaisant à certaines propriétés de différentiabilité mentionnées ci-dessous, telle que f(X) est un polynôme de degré d. Les splines en bois ou en métal ont des dérivées continues de tous les ordres puisqu’elles sont un objet physique. Ce n’est pas le cas des splines statistiques. Nous imposons plutôt un critère de régularité selon lequel toutes les dérivées d’ordre inférieur à d sont continues. Une spline physique est linéaire au-delà du dernier nœud et nous pouvons imposer une contrainte supplémentaire : les dérivées d’ordre 2 ou plus sont nulles aux nœuds les plus à gauche et les plus à droite ; les splines avec cette contrainte supplémentaire sont appelées splines  » restreintes  » ou  » naturelles « . Afin d’obtenir des courbes plus flexibles, le nombre de nœuds ou le degré du polynôme peut être augmenté. Il y a cependant un compromis ; l’augmentation du nombre de nœuds peut surajuster les données et augmenter la variance, tandis que la diminution du nombre de nœuds peut aboutir à une fonction rigide et restrictive qui présente plus de biais.

Représentation par des fonctions de base

Supposons que la fonction inconnue f soit représentée par une fonction spline avec une séquence de nœuds fixe et un degré d fixe. Comme ces dernières fonctions forment un espace vectoriel V, il est possible d’écrire f sous la forme

$$ f(X)=\sum\limits_{k=1}^{K+d+1}\beta_{k}. B_{k} (X) \,, $$
(2)

où les Bk sont un ensemble de fonctions de base définissant V et βk sont les coefficients splines associés. Avec k nœuds, il y a k+1 polynômes de degré d ainsi que d∗k contraintes, conduisant à (d+1)(k+1)-d∗k=d+k+1 paramètres libres ; pour une spline naturelle, il y a k paramètres libres. Puisque βB=(βA)(A-1B)=γB∗ pour toute matrice non singulière A, il existe un nombre infini d’ensembles de base possibles pour l’ajustement de la spline.

La représentation en (2) présente l’avantage que l’estimation de f se réduit à l’estimation des coefficients βk. Plus précisément, l’expression dans (2) est linéaire dans le vecteur de coefficients β=(β1,…,βK+d+1). Par conséquent, l’estimation de f peut être considérée comme un problème d’optimisation qui est linéaire dans les variables transformées B1(X),…,BK+d+1(X), ce qui permet d’utiliser des techniques d’estimation bien établies pour l’utilisation de splines dans un large éventail de modèles de régression multivariables (généralisés). Il est important de noter que la modélisation par splines réduit l’estimation des fonctions f() à l’estimation d’un petit ensemble de coefficients à valeurs réelles.

Comme l’ont souligné divers auteurs (par exemple, la grande flexibilité de la modélisation par splines se fait au prix d’un certain nombre de paramètres de réglage. Deux d’entre eux, le choix des fonctions de base B et le degré d des polynômes sous-jacents s’avèrent avoir peu d’impact. En fait, les ajustements splines sont remarquablement robustes au degré d. Les polynômes cubiques (d=3) sont la norme habituelle car ils produisent des courbes qui semblent parfaitement lisses à l’œil humain. Si les dérivées des courbes ajustées sont intéressantes, un ordre supérieur est parfois approprié, mais en général les ajustements pour d>3 sont effectivement indiscernables. Les ajustements avec d=1 ou d=2 ont des propriétés statistiques presque identiques mais apparaissent plus irréguliers. Le choix entre deux ensembles de base B et B∗ ne changera par définition pas les prédictions d’un ajustement et se résume donc à des questions de commodité.

Les deux choix clés concernent le nombre et l’espacement des nœuds et l’utilisation (ou non) d’une fonction de pénalité, par exemple, la dérivée seconde intégrée de la spline. Lorsqu’il n’y a pas de pénalité, la création des variables transformées peut être effectuée séparément et les nouvelles variables sont simplement incluses dans un ajustement de modèle standard ; aucune modification de la procédure de régression sous-jacente n’est nécessaire. Cette approche est souvent appelée splines de régression ; la flexibilité de la fonction non linéaire résultante est entièrement fonction du nombre de nœuds. L’inclusion d’une pénalité de lissage, en revanche, nécessite une modification de la routine d’ajustement afin de l’intégrer. Elle doit être incluse dans chaque fonction de régression séparément. Les splines de lissage qui en résultent ont plusieurs propriétés souhaitables, mais la complexité supplémentaire de la fonction lisse peut être une raison pour ne pas être utilisée plus souvent dans des contextes appliqués.

Bien que des recherches considérables aient été menées pour explorer les propriétés mathématiques des différentes approches splines (voir , les statisticiens appliqués et les analystes de données ne semblent guère être conscients de ces résultats lorsqu’ils utilisent la modélisation spline dans des applications pratiques. En fait, de nombreux articles identifiés par notre recherche sur Internet ne contenaient aucune justification sur le bien-fondé du choix de la méthode spline utilisée.

Base spline populaire

Il existe de nombreuses options pour la définition des fonctions de base Bk, où les diverses bases splines diffèrent en ce qui concerne leurs propriétés numériques . Dans cette section, nous allons présenter certaines des bases splines les plus populaires, à savoir la base de série de puissance tronquée, la base de spline B et la base de spline cardinale.

Série de puissance tronquée et splines cubiques

La base de série de puissance tronquée est définie par les fonctions de base

$$B_{1}(x) = 1, B_{2}(x) = x,…., B_{d+1}(x) = x^{d}, $$
$$B_{d+2}(x) = (x- \tau_{1})_{+}^{d},…, B_{K+d+1} = (x -\tau_{k})_{+}^{d} $$

Un avantage des fonctions de base ci-dessus est leur interprétation facile : En partant d’un polynôme « de base » de degré d défini sur (première ligne de l’équation), les déviations du polynôme de base sont successivement ajoutées à la fonction spline à droite de chacun des K nœuds (deuxième ligne). Une spline de base de puissance tronquée est d-1 fois différentiable aux nœuds et possède d+K degrés de liberté. Il est relativement facile pour l’utilisateur de créer une série de puissance tronquée dans R. Que x représente certaines observations dans , alors une base de puissance tronquée de degré d=3 avec 5 nœuds également espacés dans le long de la plage de x peut être créée en utilisant le code 1 dans le fichier additionnel 1 : Annexe (Fig. 2).

Fig. 2

Fonctions de base spline polynomiales tronquées de troisième degré (d=3) avec cinq nœuds équidistants (K=5). Tracé créé à l’aide du code #1 dans le fichier additionnel 1 : annexe

Une caractéristique des séries de puissance tronquées est que les supports des fonctions ne sont pas locaux, certains des Bk étant définis sur toute la gamme de données . Cela pourrait conduire à des corrélations élevées entre certaines splines de base, impliquant des instabilités numériques dans l’estimation des splines. Pour la base de série de puissance tronquée, un exemple est donné dans , chapitre 5.

Les splines cubiques sont créées en utilisant un polynôme cubique dans un intervalle entre deux nœuds successifs. La spline a quatre paramètres sur chacune des K+1 régions moins trois contraintes pour chaque nœud, ce qui donne un K+4 degrés de liberté.

Une fonction spline cubique, avec trois nœuds (τ1,τ2,τ3) aura 7 degrés de liberté. En utilisant la représentation donnée dans l’équation 2, la fonction peut être écrite comme :

$$ f(X)= \beta_{0} + \beta_{1} X + \beta_{2} X^{2} + \beta_{3} X^{3} + \beta_{4} (X-\tau_{1})^{3} + \beta_{5} (X-\tau_{2})^{3} + \beta_{6} (X-\tau_{3})^{3} $$

B-splines

La base B-spline est une base spline couramment utilisée qui est basée sur une paramétrisation spéciale d’une spline cubique. La base B-spline , est basée sur la séquence de nœuds

$$\begin{aligned}. \xi_{1} \le \ldots &\le \xi_{d} \le \xi_{d+1} < \xi_{d+2} < \ldots < \xi_{d + K + 1} \\N- &< \N- \N- \N- \N- \N- \N- \N- \N- \N- \N- \N- \N- \N- \N- \N- \N- , , \N- \N- $$

où les ensembles ξd+2 := τ1,…,ξd+K+1:=τK et ξd+1:=a,ξd+K+2:=b sont appelés respectivement « nœuds internes » et « nœuds limites ». Le choix des nœuds supplémentaires ξ1,…,ξd et ξd+K+3,…,ξ2d+K+2 est essentiellement arbitraire. Une stratégie courante consiste à les rendre égaux aux nœuds de la frontière. Alternativement, si les nœuds intérieurs et les nœuds limites ξd+1<…<ξd+K+2 sont choisis pour être équidistants, c’est-à-dire, ξk+1-ξk=δ ∀k∈{d+1,…,d+K+1}, les nœuds limites peuvent être placés en ξd+1-δ,…,ξd+1-d-δ et ξd+K+2+δ,…,ξd+K+2+d-δ.

Pour d>0, les fonctions de base B-spline de degré d (notées \(B_{k}^{d}(x)\)) sont définies par la formule récursiveFootnote 1

$$ \begin{aligned}. B_{k}^{d}(x)&=\frac{x-\xi_{k}}{\xi_{k+d}-\xi_{k}}B_{k}^{d-1}(x)-\frac{\xi_{k+d+1}-x}{\xi_{k+d+1}-\xi_{k+1}}B_{k+1}^{d-1}(x),\\k &= 1,…,K+d+1, \end{aligned} $$

$$B_{k}^{0}(x)=\left\{ \begin{array}{cc} 1, & \xi_{k} \leq x < \xi_{k+1}\\\\_0, & \text{else} \end{array} \N- D’accord. $$

et \(B_{k}^{0}(x) \equiv 0\) si ξk=ξk+1. Les B-splines présentent l’avantage que les fonctions de base ont un support local. Plus précisément, elles sont plus grandes que zéro dans les intervalles couverts par d+2 nœuds et nulles ailleurs. Cette propriété se traduit par une grande stabilité numérique, et aussi par un algorithme efficace pour la construction des fonctions de base, voir pour plus de détails.

Des splines naturelles cubiques et cardinales

Une spline polynomiale telle qu’une cubique ou une B-spline, peut être erratique aux frontières des données. Pour résoudre ce problème, les splines naturelles sont des splines cubiques qui ont les contraintes supplémentaires qu’elles sont linéaires dans les queues des nœuds de la frontière (-∞,a],, Chapitre 4.

En plus des splines naturelles en série de puissance tronquée, de la base des splines B et des splines cardinales, diverses autres bases – moins populaires – existent. Pour une vue d’ensemble, nous nous référons aux livres de .

Penalized splines

Les splines présentées jusqu’ici sont souvent appelées splines de régression. En plus du choix de la base de la spline (B-spline, série de puissance tronquée, etc.), le nombre de nœuds et les positions des nœuds doivent être choisis. Il est évident que ces paramètres de réglage peuvent avoir un impact important sur la forme estimée d’une fonction spline : Un grand nombre de nœuds implique une grande flexibilité mais peut également entraîner un ajustement excessif des données. À l’inverse, un petit nombre de nœuds peut donner lieu à une estimation  » trop lisse « , sujette à un biais de sous-adaptation (voir ).

Une approche populaire pour faciliter le choix des positions des nœuds dans la modélisation par spline est l’utilisation de splines pénalisées. Étant donné un échantillon de données i.i.d. échantillon de données (x1,y1),…(xn,yn), une spline pénalisée est la solution au problème

$$\hat{\beta} = \text{argmax}_{\beta} \left \, $$

où lβ désigne la log-vraisemblance (ou, dans le cas de la régression de Cox, la log-vraisemblance partielle) et Jr est une pénalité de rugosité qui devient faible si la fonction spline est « lisse ». En général, les splines pénalisées sont basées sur l’idée que la fonction inconnue f est modélisée par une spline avec un grand nombre de nœuds, ce qui permet un haut degré de flexibilité. D’autre part, une estimation approximative de la spline qui a une valeur élevée de lβ et qui est proche des valeurs des données entraîne une grande valeur de Jβ. La maximisation de cette fonction implique donc un compromis entre le lissage et l’ajustement du modèle qui est contrôlé par le paramètre d’accord λ≥0.

Un cas particulier est le problème des moindres carrés pénalisés

$$ \hat{\beta} = \text{argmin}_{\beta} \left $$
(3)

dans la régression gaussienne. La pénalité \(J_{\beta} \,=\, \int _{a}^{b} \left (\partial ^{2} f / \partial x^{2}\right)^{2} dx\) exprime la « douceur » d’une fonction spline en termes de dérivée seconde de f. Pour λ donné, on peut montrer que la solution est une spline cubique naturelle avec une séquence de nœuds x(1)<…<x(n), c’est-à-dire, les positions des nœuds ne doivent pas être choisies mais sont « naturellement » données par les valeurs de données uniques ordonnées de X. Dans la littérature, ce type de spline est appelé spline de lissage . À noter, on peut montrer qu’une spline de lissage interpole les données si λ=0, alors que λ=∞ implique une fonction linéaire. Notez que les splines de lissage sont un cas particulier de la classe plus générale des splines à plaques minces , qui permettent une extension du critère de l’équation (3) à des xi de dimensions supérieures (voir , section 4.15], et pour plus de détails).

Une propriété commode des splines de lissage est que la pénalité Jβ peut être écrite comme β⊤Ωβ avec une matrice de pénalité Ω définie de manière appropriée. Par conséquent, la solution de (3) est donnée par l’estimation des moindres carrés pénalisés

$$ \hat{\beta} = \left(B^{\top} B + \lambda \Omega\right)^{-1} B^{\top} y $$
(4)

où B est une matrice de dimension n×n contenant les fonctions de base de la spline naturelle évaluées aux valeurs des données. Le vecteur y contient les valeurs de réponse y1,…,yn. En pratique, il existe des algorithmes très efficaces pour calculer \(\hat {\beta }\) dans (4) . Au lieu de spécifier une base spline naturelle pour f, il est également possible de travailler avec une base B-spline sans contrainte, car la pénalité dans (3) impose automatiquement les contraintes de linéarité aux nœuds x(1) et x(n) (voir , chapitre 5, et , chapitre 2). En ce qui concerne la base B-spline, les résultats de l’estimation ne dépendront pas du choix des nœuds limites : il est possible soit d’utiliser x(1) et x(n) comme nœuds limites, soit d’inclure x(1) et x(n) dans l’ensemble des nœuds internes.

Si n est grand et que l’intervalle est couvert de manière dense par les données observées, il n’est généralement pas nécessaire de placer un nœud à chaque xi,i=1,…,n. Au lieu de cela, la spline de lissage peut être approximée par une spline de régression pénalisée qui utilise un ensemble réduit de nœuds. Une classe très populaire de splines de régression pénalisées sont les P-splines , qui sont basées sur la base cubique B-spline et sur un « grand » ensemble de nœuds équidistants (généralement, 10-40). Au lieu d’évaluer l’intégrale dans (3), les P-splines sont basées sur une pénalité de différence de second ordre définie par

$$J^{*}_{\beta} = \sum\limits_{k=3}^{K+4}. \La gauche (\Delta^{2} \beta_{k} \right)^{2} \,, $$

qui, dans le cas de nœuds uniformément espacés, peut être montré comme étant une approximation de Jβ. L’opérateur de différence du second ordre Δ2 est défini par Δ2βk:=(βk-βk-1)-(βk-1-βk-2). La pénalité peut donc être exprimée sous la forme β⊤Pβ, où P est défini par D⊤D avec D une matrice de différences. Il est facilement dérivé que l’estimateur de β résultant a la même structure que 2, avec Ω remplacé par P.

Une propriété commode des P-splines est qu’ils sont numériquement stables et très faciles à définir et à mettre en œuvre. En particulier, il est beaucoup plus facile de mettre en place la matrice de différence D que la matrice Ω. De plus, il est simple d’étendre la pénalité Jβ (et donc la matrice D) aux différences d’ordre supérieur Δq avec q>2. Il est également possible d’utiliser une séquence de nœuds qui n’est pas uniformément espacée ; dans ce cas, des poids doivent être introduits. Parce que les P-splines avec des nœuds inégalement espacés sont rarement utilisées dans la pratique, nous ne les considérons pas ici et faisons référence à la place.

Les splines de lissage et les P-splines surmontent le problème de la sélection des nœuds dans une certaine mesure. Leur philosophie est d’utiliser un grand nombre de nœuds, puis de laisser λ contrôler le degré de lissage. Il en résulte un paramètre de réglage supplémentaire, sans consensus général sur la façon de régler ce paramètre. Certaines méthodes populaires pour déterminer la valeur « optimale » de λ utilisent la validation croisée généralisée (GCV), l’AIC ou une représentation de modèle mixte .

Splines dans R

Le bundle d’installation de base de R contient un ensemble de fonctions qui peuvent ajuster des splines polynomiales simples et des splines de lissage. D’autres fonctions sont incluses dans la bibliothèque splines écrite par DM Bates et WN Venables. Ce paquetage a été le cheval de bataille de l’ajustement de splines pendant de nombreuses années et fait maintenant partie de la distribution de base de R. Il existe plus de 100 autres paquets qui dépendent de splines lors de leur chargement. Le paquetage contient plusieurs fonctions pour créer des bases de splines, telles que bs pour les B-splines et ns pour les splines naturelles, qui sont largement utilisées, mais aussi quelques fonctions plus spécialisées pour créer des fonctions de base (telles que periodicSpline qui crée une interpolation périodique des splines) ou des commandes qui sont utiles telles que la commande predict.bSpline qui évaluerait une spline à de nouvelles valeurs de X.

Les valeurs bs par défaut créeront une base B-spline cubique avec deux nœuds de limite et un nœud intérieur placé à la médiane des valeurs de données observées. L’utilisateur peut obtenir plus de flexibilité en augmentant le placement et le nombre de nœuds et/ou en modifiant leur emplacement. La figure 3 (code 2 dans le fichier additionnel 1 : annexe) montre des B-splines créées avec différentes options. La partie supérieure présente des splines linéaires, c’est-à-dire des polynômes du premier ordre (degré un) reliés entre eux par des nœuds équidistants. La partie inférieure présente des polynômes cubiques (degré 3).

Fig. 3

B-spline basis utilisant la commande bs dans la bibliothèque splines. En haut à gauche : Base spline du premier degré avec trois degrés de liberté. En haut à droite : Base spline du premier degré avec quatre degrés de liberté. En bas à gauche : Base spline cubique à trois degrés de liberté. En bas à droite : Base spline cubique à quatre degrés de liberté. Graphiques créés à l’aide du code #2

Il convient de noter que les B-splines créées dans R avec bs() sont automatiquement limitées par la plage des données, et que les nœuds supplémentaires (τ1,…,τd) sont définis comme étant égaux aux nœuds de limite, ce qui donne des nœuds multiples aux deux extrémités du domaine. Cette approche est utile dans les cas univariés et présente des caractéristiques intéressantes sur le plan du calcul. Cependant, si l’on travaille sur un problème de lissage bidimensionnel, en utilisant des produits tensoriels de B-splines, ou lorsqu’on travaille avec des P-splines, cette base est inadaptée et peut conduire à des résultats fallacieux.

Les splines naturelles peuvent être créées dans le package splines, en utilisant la commande ns. Par défaut, à moins que l’utilisateur ne spécifie soit les degrés de liberté, soit les nœuds, la fonction renvoie une ligne droite à l’intérieur des nœuds limites. La figure 4 (code 3 dans le fichier additionnel 1 : annexe montre des splines naturelles créées avec différentes options.

Fig. 4

Base de spline cubique naturelle utilisant la commande ns dans la bibliothèque splines. En haut à gauche : Base spline avec deux degrés de liberté. En haut à droite : Base spline avec trois degrés de liberté. En bas à gauche : Base spline avec quatre degrés de liberté. En bas à droite : Base spline avec cinq degrés de liberté. Créé avec le code#3

Pour illustrer comment ces fonctions peuvent être utilisées en pratique, considérons à nouveau les données de la section 2.0.1. La figure 5 (créée par (code 4 dans le fichier additionnel 1 : annexe)) montre les ajustements obtenus en utilisant les commandes suivantes : poly() pour les splines polynomiques orthogonales simples, smooth.spline() pour les splines de lissage, bs() et ns() de la bibliothèque splines, pour les B-splines et les splines naturelles respectivement. Le graphique en haut à gauche montre un ajustement linéaire simple sur les données (ligne pointillée) et un ajustement polynomial du troisième degré qui est capable de capturer la relation plus complexe entre les variables. Le graphique dans le coin supérieur droit est particulièrement intéressant, car il présente les ajustements utilisant les valeurs par défaut des fonctions splines. La ligne verte provient des fonctions poly() et ns() qui, par défaut, définissent toutes deux une ligne droite. À l’autre extrême, la ligne bleue est un ajustement de la fonction smooth.spline() qui, si aucun degré de liberté n’est spécifié, tend à sous-lisser les données, c’est-à-dire à produire un ajustement ondulé très flexible basé – ici – sur 45 degrés de liberté. Un ajustement -visuellement- raisonnable aux données peut être obtenu lorsque quatre degrés de liberté sont spécifiés (graphique en bas à gauche). On peut voir qu’il y a quelques différences selon la base choisie. La base polynomiale (ligne noire) est un peu plus flexible que les autres, surtout aux âges élevés. En revanche, une spline de lissage restreinte à seulement quatre degrés de liberté est plus rigide que les autres approches, mais lisse probablement trop les données aux petits âges, entre les années 0 et 10. Entre ces deux extrêmes, les splines B et les splines naturelles fournissent des ajustements très similaires qui capturent l’effet des petits âges et ont tendance à être moins influencés par les cas extrêmes à l’extrémité du spectre des âges. Enfin, le graphique en bas à droite montre à quel point les ajustements deviennent plus flexibles avec des degrés de liberté supplémentaires et suggère un biais de sur-ajustement potentiel dû à l’utilisation de degrés de liberté excessifs.

Fig. 5

Tracé de l’âge en années par rapport à l’épaisseur du pli cutané du triceps pour 892 femmes en Afrique de l’Ouest. En haut à gauche : La ligne pointillée représente un ajustement linéaire simple, la ligne pleine un ajustement utilisant des polynômes flexibles du troisième degré. En haut à droite : Ajustement par splines en utilisant les valeurs par défaut de R. La ligne verte est le résultat d’une spline polynomiale de degré 1 (valeur par défaut pour la fonction poly, et un ajustement à partir d’une spline naturelle sans spécifier de degrés de liberté (valeur par défaut pour les fonctions ns). La ligne rouge provient d’une b-spline avec trois degrés de liberté (fonction bs et la ligne bleue d’une spline de lissage (à partir de la fonction smooth.spline). En bas à gauche : La ligne noire est un ajustement polynomial, la ligne rouge un ajustement b-splines, la ligne verte un ajustement splines naturels et une spline de lissage, tous définis avec quatre degrés de liberté. En bas à droite : Mêmes fonctions définies avec 10 degrés de liberté. Créé avec le code #4

Une note sur les degrés de liberté

En pratique, il est toujours utile de définir une spline par degrés de liberté. Cette approche est particulièrement utile lorsqu’on travaille avec des B-splines et des splines naturelles. Les B-splines ont d+K, tandis qu’une fonction de base spline cubique naturelle avec K nœuds a K+1 degrés de liberté, respectivement. Par défaut, la fonction bs de R crée des B-splines de degré 3 sans nœuds intérieurs et avec des nœuds de limite définis dans l’intervalle de la variable X. En tant que telle, la fonction crée trois fonctions de base. Considérons maintenant le cas suivant : lorsqu’un utilisateur définit une B-spline avec un nœud intérieur à la médiane de X (bs(x,knots=median(x))), le logiciel créera quatre fonctions (d=3 plus K=1 nœuds intérieurs, quatre degrés de liberté). Si toutefois, l’utilisateur spécifie dans la fonction les nœuds de limite dans l’argument nœuds (bs(x,knots=c(min(x),median(x),max(x)))), la fonction aura six degrés de liberté (d =3 plus k =3). Une prudence similaire doit être prise avec la fonction ns.

Lorsque l’on travaille avec des splines de lissage, il n’est pas facile de spécifier les degrés de liberté, car ils varient en fonction de la taille de la pénalité. Cependant, en pratique, les splines pénalisées peuvent aussi être restreintes à un nombre maximum de degrés de liberté ou à des degrés de liberté souhaités.

Autres packages spline

En gros, la liste étendue des packages spline contient soit des approches assez similaires à ce qui est présenté ici, soit des cas très spécialisés qui ciblent des applications spécifiques. Dans le tableau 1, certains de ces paquets sont présentés avec le nombre de téléchargements. Le nombre fait référence au nombre de fois qu’un paquet a été téléchargé mais pas aux utilisateurs uniques. Il est au-delà de la portée de ce travail de décrire en détail toutes ces approches.

Tableau 1 Paquets R utilisés pour la création de splines

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.