A review of spline function procedures in R

Der Begriff „Spline“ bezieht sich auf ein handwerkliches Werkzeug, einen flexiblen dünnen Streifen aus Holz oder Metall, mit dem glatte Kurven gezeichnet werden. Mehrere Gewichte werden an verschiedenen Stellen angebracht, so dass sich der Streifen entsprechend der Anzahl und Position der Gewichte biegt. Der Streifen wurde gezwungen, durch eine Reihe von Fixpunkten zu laufen: Metallstifte, die Rippen eines Bootes, usw. Auf einer ebenen Fläche waren dies oft Gewichte mit einem Haken, die leicht zu handhaben waren. Die Form des gebogenen Materials würde natürlich die Form einer Spline-Kurve annehmen. In ähnlicher Weise werden Splines in der Statistik verwendet, um flexible Formen mathematisch abzubilden. Die Knoten werden an mehreren Stellen im Datenbereich platziert, um die Punkte zu kennzeichnen, an denen benachbarte Funktionsteile aneinanderstoßen. Anstelle von Metall- oder Holzstreifen werden glatte Funktionsteile (in der Regel Polynome niedriger Ordnung) gewählt, um die Daten zwischen zwei aufeinanderfolgenden Knoten anzupassen. Die Art des Polynoms sowie die Anzahl und Platzierung der Knoten bestimmen dann die Art des Splines.

Motivierendes Beispiel

Mit der Einführung von verallgemeinerten additiven Modellen (GAMs) im Jahr 1986 hat sich die Spline-Modellierung zu einem etablierten Instrument in der statistischen Regressionsanalyse entwickelt. Um dies zu veranschaulichen, betrachten wir die Daten von 892 Frauen unter 50 Jahren, die in drei Dörfern in Westafrika gesammelt wurden (die Daten sind in der zusätzlichen Datei 1: Anhang). Wir möchten die Beziehung zwischen dem Alter (in Jahren) und einem groben Maß für den Körperfettanteil, der Trizepshautfaltendicke, untersuchen. Abbildung 1 zeigt die Beziehung zwischen dem Alter und der Trizeps-Skinfold-Dicke, gemessen in logarithmischer Skala. Weitere Informationen zu den Daten finden Sie unter

Abbildung 1

Eine Darstellung des Alters in Jahren gegen die Trizepsfalten-Dicke für 892 Frauen in Westafrika. Die gestrichelte Linie stellt eine einfache lineare Anpassung dar, die durchgezogene Linie eine Anpassung unter Verwendung flexibler Polynome dritten Grades

Ein einfaches Regressionsmodell der Form yi=β0+β1xi+ε,i=1,…,n, würde kaum eine Annäherung an das beobachtete Muster liefern, da es offensichtlich ist, dass die Beziehung nicht linear ist. Das Modell kann erweitert werden, um nicht-lineare Effekte mit Hilfe einiger Polynome zu berücksichtigen. Dann könnten nicht-lineare Effekte durch ein Polynom vom Grad 3 modelliert werden, das durch gegeben ist:

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

wobei u eine Funktion von x ist, die Basisfunktion genannt wird und hier definiert ist durch:

$$U=\left $$

Das in Gl. 1 beschriebene Regressionsmodell ist immer noch ein lineares Modell, trotz der Tatsache, dass es eine nichtlineare Funktion der Prädiktorvariable liefert. Das Modell ist immer noch linear in den Koeffizienten und kann mit den Methoden der gewöhnlichen kleinsten Quadrate angepasst werden. Die Basis kann in R mit der Funktion poly(x,3) mit den Eingaben x (bezogen auf die Variable) und p (bezogen auf den Grad des Polynoms) erstellt werden. Dies führt zu einem einfachen univariaten glatten Modell der Form: yi=f(xi)+ε, wobei f() eine Funktion/Transformation des Prädiktors ist. Ein solches Modell kann in R leicht angepasst werden, indem man lm(y ∼poly(x,3)) verwendet. Trotz ihrer Einfachheit hat die polynomiale Regression mehrere Nachteile, von denen der wichtigste die Nichtlokalität ist. Das bedeutet, dass die angepasste Funktion bei einem bestimmten Wert x0 von Datenwerten abhängt, die weit von diesem Punkt entfernt sind. Dies lässt sich leicht erkennen, wenn man ein Polynom an einen Datensatz anpasst und einen der Datenpunkte in der Nähe des rechten Randes nach oben oder unten verschiebt. Infolgedessen ändert sich die angepasste Funktion in der Regel weit von dieser x-Koordinate entfernt.

Anstatt ein globales Polynom anzupassen, kann der Bereich von x in kleinere Intervalle unterteilt werden, wobei eine beliebige Anzahl und Position von Punkten, τ, auch Knoten genannt, verwendet wird. Ein einfaches stückweise kontinuierliches Modell kann durch die Definition der folgenden Funktionen angepasst werden: f1(x)=1,f2(x)=x,f3(x)=(x-τ1)+,f4(x)=(x-τ2)+,…, wobei „+“ eine Funktion ist, die definiert ist als:

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

Die Menge dieser Funktionen führt zu einer zusammengesetzten Funktion f(x).

Definition von Splines

Der Metall-Spline des Zeichners kann beliebige Formen annehmen, zum Beispiel den Querschnitt eines Flugzeugflügels oder die Spirale einer Kreiselpumpe. Für statistische Anwendungen werden wir Kurven der Form f(X) annehmen, d.h. einen einzigen y-Wert für jedes x. Der Prädiktor x kann eine einzelne Variable oder mehrere Variablen sein. Unsere Diskussion wird sich fast ausschließlich auf eine univariate Funktion mit \(X\in \mathbb {R}\) konzentrieren. Definieren Sie eine Menge von Knoten τ1<…<τK im Bereich von X. Ein Spline f(X) ist eine glatte Funktion, die bestimmte, weiter unten genannte Differenzierbarkeitseigenschaften erfüllt, so dass f(X) ein Polynom vom Grad d ist. Holz- oder Metallsplines haben kontinuierliche Ableitungen aller Ordnungen, da sie ein physikalisches Objekt sind. Bei statistischen Splines ist dies nicht der Fall. Stattdessen legen wir ein Glättungskriterium fest, das besagt, dass alle Ableitungen mit einer Ordnung kleiner als d stetig sind. Ein physikalischer Spline ist jenseits des letzten Knotens linear, und wir können eine weitere Bedingung aufstellen, nämlich dass die Ableitungen der Ordnung 2 oder höher an den äußersten linken und rechten Knoten Null sind; Splines mit dieser zusätzlichen Bedingung werden als „beschränkte“ oder „natürliche“ Splines bezeichnet. Um flexiblere Kurven zu erhalten, kann die Anzahl der Knoten oder der Grad des Polynoms erhöht werden. Es gibt jedoch einen Kompromiss; die Erhöhung der Anzahl der Knoten kann zu einer Überanpassung der Daten führen und die Varianz erhöhen, während eine Verringerung der Anzahl der Knoten zu einer starren und restriktiven Funktion führen kann, die mehr Verzerrungen aufweist.

Darstellung durch Basisfunktionen

Angenommen, die unbekannte Funktion f wird durch eine Splinefunktion mit fester Knotenfolge und festem Grad d dargestellt. Da die letztgenannten Funktionen einen Vektorraum V bilden, ist es möglich, f als

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

wobei die Bk eine Menge von Basisfunktionen sind, die V definieren und βk die zugehörigen Spline-Koeffizienten sind. Bei k Knoten gibt es k+1 Polynome vom Grad d zusammen mit d∗k Nebenbedingungen, was zu (d+1)(k+1)-d∗k=d+k+1 freien Parametern führt; für einen natürlichen Spline gibt es k freie Parameter. Da βB=(βA)(A-1B)=γB∗ für jede nichtsinguläre Matrix A ist, gibt es eine unendliche Anzahl möglicher Basissätze für die Spline-Anpassung.

Die Darstellung in (2) hat den Vorteil, dass die Schätzung von f auf die Schätzung der Koeffizienten βk reduziert wird. Genauer gesagt ist der Ausdruck in (2) linear in dem Koeffizientenvektor β=(β1,…,βK+d+1). Daher kann die Schätzung von f als ein Optimierungsproblem betrachtet werden, das linear in den transformierten Variablen B1(X),…,BK+d+1(X) ist, was die Verwendung gut etablierter Schätztechniken für die Verwendung von Splines in einer breiten Palette von (verallgemeinerten) multivariablen Regressionsmodellen ermöglicht. Wichtig ist, dass die Spline-Modellierung die Schätzung der Funktionen f() auf die Schätzung eines kleinen Satzes reellwertiger Koeffizienten reduziert.

Wie von verschiedenen Autoren hervorgehoben wurde (z.B. kommt die hohe Flexibilität der Spline-Modellierung zum Preis einer Reihe von Abstimmungsparametern. Zwei davon, die Wahl der Basisfunktionen B und der Grad d der zugrundeliegenden Polynome, erweisen sich als wenig einflussreich. Kubische Polynome (d=3) sind der übliche Standard, da sie zu Kurven führen, die für das menschliche Auge vollkommen glatt erscheinen. Wenn die Ableitungen der angepassten Kurven von Interesse sind, ist manchmal eine höhere Ordnung angebracht, aber im Allgemeinen sind Anpassungen für d>3 praktisch ununterscheidbar. Anpassungen mit d=1 oder d=2 weisen nahezu identische statistische Eigenschaften auf, erscheinen aber stärker gezackt. Die Wahl zwischen zwei Basissätzen B und B∗ ändert definitionsgemäß nichts an den Vorhersagen einer Anpassung und ist daher eine Frage der Bequemlichkeit.

Die beiden wichtigsten Entscheidungen betreffen die Anzahl und den Abstand der Knoten und die Verwendung (oder Nichtverwendung) einer Straffunktion, z. B. die integrierte zweite Ableitung des Splines. Wenn es keine Straffunktion gibt, kann die Erstellung der transformierten Variablen separat erfolgen, und die neuen Variablen werden einfach in eine Standardmodellanpassung einbezogen; eine Änderung des zugrunde liegenden Regressionsverfahrens ist nicht erforderlich. Dieser Ansatz wird häufig als Regressionssplines bezeichnet; die Flexibilität der sich ergebenden nichtlinearen Funktion ist ausschließlich eine Funktion der Anzahl der Knoten. Die Einbeziehung einer Glättungsstrafe erfordert dagegen eine Änderung der Anpassungsroutine, um sie zu berücksichtigen. Dies muss in jeder Regressionsfunktion separat berücksichtigt werden. Die sich daraus ergebenden glättenden Splines haben mehrere wünschenswerte Eigenschaften, aber die zusätzliche Komplexität der glättenden Funktion kann ein Grund dafür sein, dass sie in der Praxis nicht häufiger verwendet werden.

Obwohl beträchtliche Forschungsarbeiten durchgeführt wurden, um die mathematischen Eigenschaften der verschiedenen Spline-Ansätze zu erforschen (siehe , scheinen sich angewandte Statistiker und Datenanalysten dieser Ergebnisse kaum bewusst zu sein, wenn sie die Spline-Modellierung in der Praxis einsetzen. Tatsächlich enthielten viele der bei unserer Websuche ermittelten Artikel keine Begründung für die Wahl der verwendeten Spline-Methode.

Beliebte Spline-Basis

Es gibt zahlreiche Optionen für die Definition der Basisfunktionen Bk, wobei sich die verschiedenen Spline-Basen hinsichtlich ihrer numerischen Eigenschaften unterscheiden. In diesem Abschnitt stellen wir einige der populärsten Spline-Basis vor, nämlich die abgestumpfte Potenzreihenbasis, die B-Spline-Basis und die kardinale Spline-Basis.

Abgestumpfte Potenzreihen und kubische Splines

Die abgestumpfte Potenzreihenbasis ist definiert durch die Basisfunktionen

$$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} $$

Ein Vorteil der obigen Basisfunktionen ist ihre einfache Interpretation: Ausgehend von einem „Basis“-Polynom vom Grad d, das auf (erste Zeile der Gleichung) definiert ist, werden nach und nach Abweichungen vom Basispolynom rechts von jedem der K Knoten (zweite Zeile) zur Splinefunktion hinzugefügt. Ein abgestumpfter Power-Base-Spline ist an den Knoten d-1 mal differenzierbar und hat d+K Freiheitsgrade. Es ist für den Benutzer relativ einfach, eine abgeschnittene Potenzreihe in R zu erstellen. x repräsentiert einige Beobachtungen in , dann kann eine abgeschnittene Potenzbasis vom Grad d=3 mit 5 gleichmäßig verteilten Knoten entlang des Bereichs von x unter Verwendung von Code 1 im Additional file 1: Appendix (Abb. 2).

Abb. 2

Abgeschnittene Polynom-Spline-Basisfunktionen dritten Grades (d=3) mit fünf äquidistanten Knoten (K=5). Diagramm erstellt mit Code #1 im Additional file 1: Appendix

Ein Merkmal der abgeschnittenen Potenzreihen ist, dass die Unterstützungen der Funktionen nicht lokal sind, wobei einige der Bk über den gesamten Datenbereich definiert sind. Dies kann zu hohen Korrelationen zwischen einigen Basissplines führen, was numerische Instabilitäten bei der Splineschätzung zur Folge hat. Ein Beispiel für die Basis der abgeschnittenen Potenzreihe findet sich in Kapitel 5.

Kubische Splines werden durch Verwendung eines kubischen Polynoms in einem Intervall zwischen zwei aufeinanderfolgenden Knoten erstellt. Der Spline hat vier Parameter für jede der K+1 Regionen minus drei Einschränkungen für jeden Knoten, was zu K+4 Freiheitsgraden führt.

Eine kubische Splinefunktion mit drei Knoten (τ1,τ2,τ3) hat 7 Freiheitsgrade. Unter Verwendung der in Gl. 2 gegebenen Darstellung kann die Funktion geschrieben werden als:

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

Die B-Spline-Basis ist eine häufig verwendete Spline-Basis, die auf einer speziellen Parametrisierung eines kubischen Splines beruht. Die B-Spline-Basis , basiert auf der Knotenfolge

$$\begin{aligned} \xi_{1} \le \ldots &\le \xi_{d} \le \xi_{d+1} < \xi_{d+2} < \ldots < \xi_{d + K + 1} \\ &< \xi_{d + K + 2} \le \xi_{d + K + 3} \le \ldots \le \xi_{2d + K + 2} \,, \end{aligned} $$

wobei die Mengen ξd+2 := τ1,…,ξd+K+1:=τK und ξd+1:=a,ξd+K+2:=b als „innere Knoten“ bzw. „Randknoten“ bezeichnet werden. Die Wahl der zusätzlichen Knoten ξ1,…,ξd und ξd+K+3,…,ξ2d+K+2 ist im Wesentlichen willkürlich. Eine übliche Strategie besteht darin, sie gleich den Randknoten zu setzen. Alternativ kann man die inneren Knoten und die Randknoten ξd+1<…<ξd+K+2 so wählen, dass sie äquidistant sind, d.h., ξk+1-ξk=δ ∀k∈{d+1,…,d+K+1}, können die Randknoten bei ξd+1-δ,…,ξd+1-d-δ und ξd+K+2+δ,…,ξd+K+2+d-δ platziert werden.

Für d>0 sind B-Spline-Basisfunktionen vom Grad d (bezeichnet mit \(B_{k}^{d}(x)\)) durch die rekursive Formel definiertFußnote 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} $$

wobei

$$B_{k}^{0}(x)=\left\{ \begin{array}{cc} 1, & \xi_{k} \leq x < \xi_{k+1}\\ 0, & \text{else} \end{array} \right. $$

und \(B_{k}^{0}(x) \equiv 0\) wenn ξk=ξk+1. B-Splines haben den Vorteil, dass die Basisfunktionen eine lokale Unterstützung haben. Genauer gesagt sind sie in den Intervallen, die von d+2 Knoten aufgespannt werden, größer als Null und in den übrigen Intervallen Null. Diese Eigenschaft führt zu einer hohen numerischen Stabilität und auch zu einem effizienten Algorithmus für die Konstruktion der Basisfunktionen, siehe Einzelheiten.

Natürliche kubische und kardinale Splines

Ein polynomialer Spline, wie ein kubischer oder ein B-Spline, kann an den Grenzen der Daten unregelmäßig sein. Um diesem Problem zu begegnen, sind natürliche Splines kubische Splines, die zusätzlich die Bedingung erfüllen, dass sie in den Schwänzen der Randknoten linear sind (-∞,a], Kapitel 4.

Neben den natürlichen Splines mit abgeschnittenen Potenzreihen, den B-Splines und den kardinalen Splines gibt es noch verschiedene andere – weniger populäre – Grundlagen. Für einen Überblick verweisen wir auf die Bücher von.

Penalisierte Splines

Die bisher vorgestellten Splines werden oft als Regressionssplines bezeichnet. Neben der Wahl der Spline-Basis (B-Spline, abgeschnittene Potenzreihe usw.) müssen auch die Anzahl der Knoten und die Knotenpositionen gewählt werden. Es liegt auf der Hand, dass diese Parameter einen erheblichen Einfluss auf die geschätzte Form einer Spline-Funktion haben können: Eine große Anzahl von Knoten bedeutet eine hohe Flexibilität, kann aber auch zu einer Überanpassung der vorliegenden Daten führen. Umgekehrt kann eine kleine Anzahl von Knoten zu einer „überglatten“ Schätzung führen, die zu einer Verzerrung durch Unteranpassung neigt (siehe ).

Ein beliebter Ansatz zur Erleichterung der Wahl der Knotenpositionen bei der Spline-Modellierung ist die Verwendung von bestraften Splines. Gegeben eine i.i.d. Stichprobe von Daten (x1,y1),…(xn,yn), ist ein penalisierter Spline die Lösung des Problems

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

wobei lβ die log-Likelihood (oder, im Falle der Cox-Regression die partielle Log-Likelihood) und Jr eine Rauheitsstrafe ist, die klein wird, wenn die Spline-Funktion „glatt“ ist. Im Allgemeinen beruhen bestrafte Splines auf der Idee, dass die unbekannte Funktion f durch einen Spline mit einer großen Anzahl von Knoten modelliert wird, was ein hohes Maß an Flexibilität ermöglicht. Andererseits führt eine grobe Spline-Schätzung, die einen hohen Wert von lβ hat und nahe an den Datenwerten liegt, zu einem großen Wert von Jβ. Die Maximierung dieser Funktion impliziert daher einen Kompromiss zwischen Glattheit und Modellanpassung, der durch den Tuning-Parameter λ≥0 gesteuert wird.

Ein Spezialfall ist das bestrafte Kleinste-Quadrate-Problem

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

in der Gaußschen Regression. Die Strafe \(J_{\beta } \,=\, \int _{a}^{b} \left (\partial ^{2} f / \partial x^{2}\right)^{2} dx\) drückt die „Glattheit“ einer Splinefunktion in Form der zweiten Ableitung von f aus. Für gegebenes λ kann gezeigt werden, dass die Lösung ein natürlicher kubischer Spline mit der Knotenfolge x(1)<…<x(n) ist, d.h., die Knotenpositionen müssen nicht gewählt werden, sondern sind „natürlich“ durch die geordneten eindeutigen Datenwerte von X gegeben. In der Literatur wird diese Art von Spline als Glättungsspline bezeichnet. Es kann gezeigt werden, dass ein Glättungsspline die Daten interpoliert, wenn λ=0 ist, während λ=∞ eine lineare Funktion impliziert. Man beachte, dass glättende Splines ein Spezialfall der allgemeineren Klasse der dünnen Plattensplines sind, die eine Erweiterung des Kriteriums in Gl. (3) auf höherdimensionale xi ermöglichen (siehe Abschnitt 4.15] und für Details).

Eine praktische Eigenschaft von glättenden Splines ist, dass die Strafe Jβ als β⊤Ωβ mit einer geeignet definierten Strafmatrix Ω geschrieben werden kann. Daher ist die Lösung von (3) gegeben durch die bestrafte Schätzung der kleinsten Quadrate

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

wobei B eine Matrix der Dimension n×n ist, die die an den Datenwerten evaluierten natürlichen Spline-Basisfunktionen enthält. Der Vektor y enthält die Antwortwerte y1,…,yn. In der Praxis gibt es sehr effiziente Algorithmen zur Berechnung von \(\hat {\beta }\) in (4). Anstatt eine natürliche Spline-Basis für f anzugeben, kann man auch mit einer unbeschränkten B-Spline-Basis arbeiten, da die Strafe in (3) automatisch die Linearitätsbeschränkungen an den Knoten x(1) und x(n) auferlegt (siehe , Kapitel 5, und , Kapitel 2). Bei der B-Spline-Basis hängen die Schätzergebnisse nicht von der Wahl der Randknoten ab: Es ist entweder möglich, x(1) und x(n) als Randknoten zu verwenden oder x(1) und x(n) in die Menge der inneren Knoten aufzunehmen.

Wenn n groß ist und das Intervall von den beobachteten Daten dicht abgedeckt wird, ist es in der Regel nicht notwendig, an jedem xi,i=1,…,n einen Knoten zu setzen. Stattdessen kann der Glättungsspline durch einen bestraften Regressionsspline approximiert werden, der einen reduzierten Satz von Knoten verwendet. Eine sehr beliebte Klasse von bestraften Regressionssplines sind P-Splines, die auf der kubischen B-Spline-Basis und einer „großen“ Menge äquidistanter Knoten (normalerweise 10-40) basieren. Anstatt das Integral in (3) auszuwerten, basieren P-Splines auf einer Differenzstrafe zweiter Ordnung, die durch

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

der sich im Falle gleichmäßig verteilter Knoten als Näherung an Jβ erweisen kann. Der Differenzoperator zweiter Ordnung Δ2 ist definiert durch Δ2βk:=(βk-βk-1)-(βk-1-βk-2). Die Strafe kann daher als β⊤Pβ ausgedrückt werden, wobei P durch D⊤D definiert ist, wobei D eine Matrix von Differenzen ist. Es lässt sich leicht ableiten, dass der resultierende Schätzer von β die gleiche Struktur wie 2 hat, wobei Ω durch P ersetzt wird.

Eine praktische Eigenschaft von P-Splines ist, dass sie numerisch stabil und sehr einfach zu definieren und zu implementieren sind. Insbesondere ist es viel einfacher, die Differenzmatrix D aufzustellen als die Matrix Ω. Außerdem ist es einfach, die Strafe Jβ (und damit die Matrix D) auf Differenzen höherer Ordnung Δq mit q>2 zu erweitern. Es ist auch möglich, eine Knotenfolge zu verwenden, die nicht gleichmäßig verteilt ist; in diesem Fall müssen Gewichte eingeführt werden. Da P-Splines mit ungleichmäßig verteilten Knoten in der Praxis selten verwendet werden, betrachten wir sie hier nicht und verweisen stattdessen auf

Glättende Splines und P-Splines überwinden das Problem der Knotenauswahl bis zu einem gewissen Grad. Ihre Philosophie besteht darin, eine große Anzahl von Knoten zu verwenden und dann λ den Grad der Glättung steuern zu lassen. Dies führt zu einem zusätzlichen Abstimmungsparameter, wobei kein allgemeiner Konsens darüber besteht, wie dieser Parameter abzustimmen ist. Einige gängige Methoden zur Bestimmung des „optimalen“ Wertes von λ sind die verallgemeinerte Kreuzvalidierung (GCV), AIC oder eine gemischte Modelldarstellung.

Splines in R

Das Basisinstallationspaket von R enthält eine Reihe von Funktionen, mit denen einfache Polynomsplines und Glättungssplines angepasst werden können. Weitere Funktionen sind in der Bibliothek splines enthalten, die von DM Bates und WN Venables geschrieben wurde. Das Paket ist seit vielen Jahren das Arbeitspferd der Spline-Anpassung und ist jetzt Teil der Basisdistribution von R. Es gibt mehr als 100 andere Pakete, die beim Laden von Splines abhängen. Das Paket enthält mehrere Funktionen zur Erstellung von Spline-Basisfunktionen, wie bs für B-Splines und ns für natürliche Splines, die weit verbreitet sind, aber auch einige speziellere Funktionen zur Erstellung von Basisfunktionen (wie periodicSpline, das periodische Interpolationssplines erstellt) oder nützliche Befehle wie den Befehl predict.bSpline, der einen Spline bei neuen Werten von X auswerten würde.

Die Standardwerte von bs erzeugen eine kubische B-Spline-Basis mit zwei Randknoten und einem inneren Knoten, der im Median der beobachteten Datenwerte liegt. Der Benutzer kann mehr Flexibilität erreichen, indem er die Platzierung und die Anzahl der Knoten erhöht und/oder ihre Position ändert. Abbildung 3 (Code 2 im Additional file 1: Appendix) zeigt B-Splines, die mit verschiedenen Optionen erstellt wurden. Der obere Teil zeigt lineare Splines, d. h. Polynome erster Ordnung (Grad eins), die über äquidistante Knoten miteinander verbunden sind. Der untere Teil zeigt kubische Polynome (Grad 3).

Abb. 3

B-Spline-Basis mit dem Befehl bs in der Bibliothek splines. Oben links: Splinebasis ersten Grades mit drei Freiheitsgraden. Oben rechts: Spline-Basis ersten Grades mit vier Freiheitsgraden. Unten links: Kubische Spline-Basis mit drei Freiheitsgraden. Unten rechts: Kubische Spline-Basis mit vier Freiheitsgraden. Graphen erstellt mit Code #2

Es ist zu beachten, dass B-Splines, die in R mit bs() erstellt werden, automatisch durch den Bereich der Daten begrenzt werden, und dass die zusätzlichen Knoten (τ1,…,τd) gleich den Randknoten gesetzt werden, so dass mehrere Knoten an beiden Enden des Bereichs entstehen. Dieser Ansatz ist in univariaten Fällen nützlich und hat einige rechnerisch attraktive Eigenschaften. Wenn man jedoch an einem zweidimensionalen Glättungsproblem arbeitet, Tensorprodukte von B-Splines verwendet oder mit P-Splines arbeitet, ist diese Basis ungeeignet und kann zu verfälschten Ergebnissen führen.

Natürliche Splines können im Splines-Paket mit dem Befehl ns erstellt werden. Wenn der Benutzer nicht entweder die Freiheitsgrade oder die Knoten angibt, liefert die Funktion standardmäßig eine gerade Linie innerhalb der Randknoten. Abbildung 4 (Code 3 in Zusatzdatei 1: Anhang) zeigt natürliche Splines, die mit verschiedenen Optionen erstellt wurden.

Abb. 4

Natürliche kubische Spline-Basis mit dem Befehl ns in der Bibliothek splines. Oben links: Spline-Basis mit zwei Freiheitsgraden. Oben rechts: Spline-Basis mit drei Freiheitsgraden. Unten links: Spline-Basis mit vier Freiheitsgraden. Unten rechts: Spline-Basis mit fünf Freiheitsgraden. Erstellt mit Code#3

Um zu veranschaulichen, wie diese Funktionen in der Praxis verwendet werden können, betrachten wir erneut die Daten aus Abschnitt 2.0.1. Abbildung 5 (erstellt mit (Code 4 in Zusatzdatei 1: Anhang)) zeigt die Anpassungen, die mit den folgenden Befehlen erhalten wurden: poly() für einfache orthogonale polynomische Splines, smooth.spline() für glättende Splines, bs() und ns() aus der Bibliothek splines, für B-Splines bzw. natürliche Splines. Die obere linke Grafik zeigt eine einfache lineare Anpassung an die Daten (gestrichelte Linie) und eine polynomiale Anpassung dritten Grades, die die komplexere Beziehung zwischen den Variablen erfassen kann. Das Diagramm in der oberen rechten Ecke ist jedoch besonders interessant, da es die Anpassungen unter Verwendung der Standardwerte der Spline-Funktionen zeigt. Die grüne Linie stammt von den Funktionen poly() und ns(), die in der Standardeinstellung beide eine gerade Linie definieren. Die blaue Linie hingegen ist eine Anpassung mit der Funktion smooth.spline(), die, wenn keine Freiheitsgrade angegeben werden, dazu neigt, die Daten zu unterglätten, d.h. eine sehr flexible, wackelige Anpassung zu erzeugen, die – hier – auf 45 Freiheitsgraden basiert. Eine -visuell- vernünftige Anpassung an die Daten kann erreicht werden, wenn vier Freiheitsgrade angegeben werden (unteres linkes Diagramm). Es ist zu erkennen, dass es je nach gewählter Basis einige Unterschiede gibt. Die Polynombasis (schwarze Linie) ist etwas flexibler als die anderen, vor allem bei höheren Altersgruppen. Andererseits ist ein Glättungsspline, der sich auf nur vier Freiheitsgrade beschränkt, starrer als andere Ansätze, glättet aber wahrscheinlich die Daten bei kleinen Altersgruppen zwischen 0 und 10 Jahren zu stark. Zwischen diesen beiden Extremen liefern B-Splines und natürliche Splines sehr ähnliche Anpassungen, die die Auswirkungen kleiner Altersgruppen erfassen und tendenziell weniger von den Extremfällen am Ende des Altersspektrums beeinflusst werden. Schließlich zeigt das untere rechte Diagramm, wie viel flexibler die Anpassungen mit zusätzlichen Freiheitsgraden werden, und deutet auf eine potenzielle Überanpassung aufgrund der Verwendung übermäßiger Freiheitsgrade hin.

Abb. 5

Eine Darstellung des Alters in Jahren gegen die Trizeps-Hautfaltendicke für 892 weibliche Personen in Westafrika. Oben links: Die gestrichelte Linie stellt eine einfache lineare Anpassung dar, die durchgezogene Linie eine Anpassung mit flexiblen Polynomen dritten Grades. Oben rechts: Splines-Fit unter Verwendung von R-Standardwerten. Die grüne Linie ist das Ergebnis eines Polynomsplines vom Grad 1 (Standardwert für die Funktion poly) und einer Anpassung durch einen natürlichen Spline ohne Angabe von Freiheitsgraden (Standardwert für die Funktion ns). Die rote Linie stammt von einem b-Spline mit drei Freiheitsgraden (Funktion bs und die blaue Linie von einem Glättungsspline (Funktion smooth.spline). Unten links: Schwarze Linie ist Polynom-Fit, rote Linie b-Splines-Fit, grüne Linie ist ein natürlicher Splines-Fit und Smoothing-Spline, alle definiert mit vier Freiheitsgraden. Unten rechts: Dieselben Funktionen, definiert mit 10 Freiheitsgraden. Erstellt mit Code #4

Ein Hinweis zu Freiheitsgraden

In der Praxis ist es immer nützlich, einen Spline durch Freiheitsgrade zu definieren. Dieser Ansatz ist besonders nützlich, wenn man mit B-Splines und natürlichen Splines arbeitet. B-Splines haben d+K, während eine natürliche kubische Spline-Basisfunktion mit K Knoten jeweils K+1 Freiheitsgrade hat. Standardmäßig erzeugt die Funktion bs in R B-Splines vom Grad 3 ohne innere Knoten und Randknoten, die im Bereich der Variablen X definiert sind. Die Funktion erzeugt also drei Basisfunktionen. Betrachten wir nun den folgenden Fall: Wenn ein Benutzer einen B-Spline mit einem inneren Knoten am Median von X definiert (bs(x,knots=median(x))), erzeugt die Software vier Funktionen (d=3 plus K=1 innere Knoten, vier Freiheitsgrade). Wenn der Benutzer jedoch in der Funktion die Randknoten im Argument Knoten angibt (bs(x,knots=c(min(x),median(x),max(x)))))), hat die Funktion sechs Freiheitsgrade (d =3 plus k =3). Ähnliche Vorsicht ist bei der Funktion ns geboten.

Bei der Arbeit mit glättenden Splines ist es nicht einfach, die Freiheitsgrade anzugeben, da sie von der Größe der Strafe abhängen. In der Praxis können bestrafte Splines jedoch auch auf eine maximale Anzahl von Freiheitsgraden oder gewünschten Freiheitsgraden beschränkt werden.

Andere Spline-Pakete

Gemeinsam gesagt, enthält die erweiterte Liste der Spline-Pakete entweder Ansätze, die den hier vorgestellten recht ähnlich sind, oder sehr spezialisierte Fälle, die auf bestimmte Anwendungen abzielen. In Tabelle 1 sind einige dieser Pakete zusammen mit der Anzahl der Downloads aufgeführt. Die Zahl bezieht sich auf die Anzahl der Downloads eines Pakets, nicht aber auf die Anzahl der einzelnen Benutzer. Es würde den Rahmen dieser Arbeit sprengen, alle diese Ansätze im Detail zu beschreiben.

Tabelle 1 R-Pakete, die für die Erstellung von Splines verwendet werden

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.