En genomgång av splinefunktionsprocedurer i R

Tecknet ”spline” hänvisar till ett hantverksverktyg, en flexibel tunn remsa av trä eller metall, som används för att rita mjuka kurvor. Flera vikter skulle appliceras på olika positioner så att remsan skulle böja sig enligt deras antal och position. Denna skulle tvingas passera genom en uppsättning fasta punkter: metallstift, båtens revben osv. På en plan yta var dessa vikter ofta försedda med en krok och därmed lätta att manipulera. Formen på det böjda materialet skulle naturligtvis ta formen av en spline-kurva. På samma sätt används splines inom statistiken för att matematiskt återge flexibla former. Knutar placeras på flera ställen inom dataområdet för att identifiera de punkter där intilliggande funktionella delar förenas med varandra. I stället för metall- eller träremsor väljs släta funktionella bitar (vanligen polynomier av låg ordning) för att passa in i data mellan två på varandra följande knutar. Typen av polynom och antalet och placeringen av knutarna är det som sedan definierar typen av spline.

Motiverande exempel

Med införandet av generaliserade additiva modeller (GAM) 1986 har användningen av spline-modellering blivit ett etablerat verktyg inom statistisk regressionsanalys. För att illustrera detta tar vi data om en uppsättning på 892 kvinnor under 50 år som samlats in i tre byar i Västafrika (data finns i Additional file 1: Appendix). Vi vill undersöka förhållandet mellan ålder (i år) och ett grovt mått på kroppsfett, nämligen triceps skinfolds tjocklek. Figur 1 visar förhållandet mellan ålder och tricepsskinfoldtjocklek mätt i logaritmisk skala. För mer information om uppgifterna se .

Fig. 1

En plott av ålder i år mot tricepsskinfoldtjocklek för 892 kvinnor i Västafrika . Den streckade linjen representerar en enkel linjär anpassning, den heldragna linjen en anpassning med hjälp av flexibla tredjegradspolynomier

En enkel regressionsmodell av formen yi=β0+β1xi+ε,i=1,…,n, skulle knappast ge en approximation av det observerade mönstret, eftersom det är uppenbart att förhållandet inte är linjärt. Modellen kan utvidgas för att ta hänsyn till icke-linjära effekter med hjälp av vissa polynom. Icke-linjära effekter kan då modelleras med ett polynom av grad 3 som ges av följande:

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

där u är en funktion av x som kallas basfunktion, definierad här genom:

$$U=\left $$

Regressionsmodellen som beskrivs i ekv. 1 är fortfarande en linjär modell, trots att den ger en icke-linjär funktion av prediktorvariabeln. Modellen är fortfarande linjär i koefficienterna och kan anpassas med hjälp av vanliga minsta kvadratmetoder. Basen kan skapas i R med hjälp av funktionen poly(x,3) med ingångarna x (som hänvisar till variabeln) och p (som hänvisar till graden av polynomet). Detta leder till en enkel univariat slät modell av formen: yi=f(xi)+ε där f() är någon funktion/transformation av prediktoren. En sådan modell kan enkelt anpassas i R genom att använda: lm(y ∼poly(x,3)). Trots enkelheten har polynomial regression flera nackdelar, varav den viktigaste är icke-lokalitet. Det innebär att den anpassade funktionen vid ett givet värde x0 beror på datavärden långt från den punkten. Det är lätt att se detta i praktiken genom att anpassa ett polynom till en uppsättning data och flytta en av datapunkterna nära den högra kanten uppåt eller nedåt. Som ett resultat av detta kommer den anpassade funktionen vanligtvis att förändras långt från den x-koordinaten.

Överväg, i stället för att anpassa ett globalt polynom, att dela upp x-området i mindre intervaller, genom att använda ett godtyckligt antal och en godtycklig position av punkter, τ, även kallade knutar. En enkel styckevis kontinuerlig modell kan anpassas genom att definiera funktionerna: f1(x)=1,f2(x)=x,f3(x)=(x-τ1)+,f4(x)=(x-τ2)+,…, med ”+” en funktion definierad som:

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

Mängden av dessa funktioner leder till en sammansatt funktion f(x).

Definition av splines

Tecknarens metallspline kan anta godtyckliga former, t.ex. tvärsnittet på en flygplansvinge eller spiralen på en centrifugalpump. För statistiska tillämpningar kommer vi att anta kurvor av formen f(X), dvs. ett enda y-värde för varje x. Predikatorn x kan vara en enda variabel eller flera variabler. Vår diskussion kommer nästan helt och hållet att fokusera på en univariat funktion med \(X\in \mathbb {R}\). Definiera en uppsättning knutar τ1<…<τK inom X:s område. En spline f(X) kommer att vara en slät funktion som uppfyller vissa differentierbarhetsegenskaper som nämns nedan, så att f(X) är ett polynom av grad d. Trä- eller metallsplines har kontinuerliga derivat av alla ordningar eftersom de är ett fysiskt objekt. Detta gäller inte för statistiska splines. I stället inför vi ett jämnhetskriterium som innebär att alla derivat av ordning mindre än d är kontinuerliga. En fysisk spline är linjär bortom den sista knuten och vi kan införa ytterligare en begränsning, nämligen att derivat av ordning 2 eller högre är noll vid den vänstra och den högra knuten. För att få mer flexibla kurvor kan man öka antalet knutar eller graden av polynomet. Det finns dock en kompromiss; om man ökar antalet knutar kan det leda till att data anpassas för mycket och att variansen ökar, medan en minskning av antalet knutar kan resultera i en stel och restriktiv funktion som har mer bias.

Den okända funktionen f representeras av en splinefunktion med fast knutföljd och fast grad d. Eftersom de sistnämnda funktionerna bildar ett vektorrum V är det möjligt att skriva f som

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

där Bk är en uppsättning basfunktioner som definierar V och βk är de tillhörande splinekoefficienterna. Med k knutar finns det k+1 polynomier av grad d tillsammans med d∗k begränsningar, vilket leder till (d+1)(k+1)-d∗k=d+k+1 fria parametrar ; för en naturlig spline finns det k fria parametrar. Eftersom βB=(βA)(A-1B)=γB∗ för varje icke-singulär matris A finns det ett oändligt antal möjliga basuppsättningar för splinepassningen.

Den representation som ges i (2) har den fördelen att skattningen av f reduceras till skattningen av koefficienterna βk. Mer specifikt är uttrycket i (2) linjärt i koefficientvektorn β=(β1,…,βK+d+1). Skattningen av f kan därför ses som ett optimeringsproblem som är linjärt i de transformerade variablerna B1(X),…,BK+d+1(X), vilket gör det möjligt att använda väletablerade skattningstekniker för användning av splines i ett brett spektrum av (generaliserade) multivariabla regressionsmodeller. Viktigt är att spline-modellering reducerar skattningen av funktionerna f() till skattningen av en liten uppsättning realvärdeskoefficienter.

Som påpekats av olika författare (t.ex. Två av dessa, valet av basfunktioner B och graden d på de underliggande polynomierna, visar sig ha liten inverkan. I själva verket är splineanpassningar anmärkningsvärt robusta när det gäller graden d. Kubiska polynom (d=3) är den vanliga standarden eftersom de resulterar i kurvor som ser helt jämna ut för det mänskliga ögat. Om derivat av de anpassade kurvorna är av intresse är en högre ordning ibland lämplig, men i allmänhet är anpassningar för d>3 i praktiken omöjliga att särskilja. Anpassningar med d=1 eller d=2 har nästan identiska statistiska egenskaper men ser mer ojämna ut. Valet mellan två basuppsättningar B och B∗ kommer per definition inte att ändra förutsägelserna från en anpassning och kommer därför att vara en bekvämlighetsfråga.

De två viktigaste valen gäller antalet och avståndet mellan knutarna och användningen (eller inte) av en strafffunktion, t.ex. den integrerade andra derivatan av splinen. När det inte finns någon strafffunktion kan skapandet av de transformerade variablerna göras separat och de nya variablerna inkluderas helt enkelt i en standardmodellanpassning; ingen ändring av det underliggande regressionsförfarandet krävs. Detta tillvägagångssätt kallas ofta regressionssplines; flexibiliteten hos den resulterande icke-linjära funktionen är helt och hållet en funktion av antalet knutar. Införandet av ett utjämningsstraff kräver å andra sidan en ändring av anpassningsrutinen för att kunna ta hänsyn till det. Detta måste inkluderas i varje regressionsfunktion separat. De resulterande utjämnande splines har flera önskvärda egenskaper, men den extra komplexiteten hos den utjämnande funktionen kan vara ett skäl till att den inte används oftare i tillämpade sammanhang.

Men trots att avsevärd forskning har bedrivits för att utforska de matematiska egenskaperna hos de olika splinemetoderna (se , tycks tillämpade statistiker och dataanalytiker knappast vara medvetna om dessa resultat när de använder splinemodellering i praktiska tillämpningar. Faktum är att många av de artiklar som identifierades genom vår webbsökning inte innehöll någon motivering om skälen till valet av den använda splinemetoden.

Populära splinebaser

Det finns många alternativ för att definiera basfunktionerna Bk, där de olika splinebaserna skiljer sig åt med avseende på deras numeriska egenskaper . I det här avsnittet kommer vi att presentera några av de mest populära splinebaserna, nämligen basen för trunkerade kraftserier, B-splinebasen och kardinalsplinebasen.

Trunkade kraftserier och kubiska splines

Basen för trunkerade kraftserier definieras av basfunktionerna

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

En fördel med basfunktionerna ovan är att de är lätta att tolka: Med utgångspunkt i ett ”grundläggande” polynom av grad d definierat på (första raden i ekvationen), läggs avvikelser från det grundläggande polynomet successivt till spline-funktionen till höger om var och en av K knutar (andra raden). En trunkerad splinefunktion är d-1 gånger differentierbar vid knutarna och har d+K frihetsgrader. Det är relativt enkelt för användaren att skapa en trunkerad potensserie i R. Låt x representera några observationer i , så kan en trunkerad potensbas av grad d=3 med 5 knutar jämnt fördelade inom x-området skapas med hjälp av kod 1 i Additional file 1: Appendix (Fig. 2).

Fig. 2

Transkat polynomial spline basfunktioner av tredje graden (d=3) med fem jämnstora knutar (K=5). Plot skapad med hjälp av kod #1 i Additional file 1: Appendix

Ett kännetecken för de trunkerade kraftserierna är att funktionernas stöd inte är lokala, med en del av Bk som definieras över hela dataområdet . Detta kan leda till höga korrelationer mellan vissa bassplines, vilket innebär numeriska instabiliteter i splineskattningen. För basen för trunkerade potensserier ges ett exempel i , kapitel 5.

Kubiska splines skapas genom att använda ett kubiskt polynom i ett intervall mellan två på varandra följande knutar. Splinen har fyra parametrar för vart och ett av K+1 områden minus tre begränsningar för varje knut, vilket ger K+4 frihetsgrader.

En kubisk splinefunktion med tre knutar (τ1,τ2,τ3) kommer att ha 7 frihetsgrader. Med hjälp av den representation som ges i ekv. 2 kan funktionen skrivas som:

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

B-splines

B-splinebasen är en vanligt förekommande splinebas som baseras på en speciell parametrisering av en kubisk spline. B-splinebasen , är baserad på knutsekvensen

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

där mängderna ξd+2 := τ1,…,ξd+K+1:=τK och ξd+1:=a,ξd+K+2:=b kallas ”inre knutar” respektive ”gränsknutar”. Valet av de ytterligare knutarna ξ1,…,ξd och ξd+K+3,…,ξ2d+K+2 är i huvudsak godtyckligt. En vanlig strategi är att sätta dem lika med gränsknutarna. Alternativt, om de inre knutarna och gränsknutarna ξd+1<…<ξd+K+2 väljs så att de är lika långt ifrån varandra, dvs, ξk+1-ξk=δ ∀k∈{d+1,…,d+K+1}, kan gränsknutarna placeras vid ξd+1-δ,…,ξd+1-d-δ och ξd+K+2+δ,…,ξd+K+2+d-δ.

För d>0 definieras B-splinebasfunktioner av grad d (betecknade med \(B_{k}^{d}(x)\)) genom den rekursiva formelnFotnot 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} $$

där

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

och \(B_{k}^{0}(x) \equiv 0\) om ξk=ξk+1. B-splines har fördelen att basfunktionerna har lokalt stöd. Mer specifikt är de större än noll i intervall som spänns upp av d+2 knutar och noll i övrigt. Denna egenskap resulterar i en hög numerisk stabilitet och även i en effektiv algoritm för konstruktionen av basfunktionerna, se för detaljer.

Naturliga kubiska och kardinalsplines

En polynomisk spline, t.ex. en kubisk eller en B-spline, kan vara oregelbunden vid gränserna för data. För att lösa detta problem är naturliga splines kubiska splines som har de ytterligare begränsningarna att de är linjära i svansarna av gränsknutarna (-∞,a],,, kapitel 4.

Förutom den trunkerade potensserien naturliga splines, B-spline och kardinalspline basen, finns olika andra – mindre populära – baser. För en översikt hänvisar vi till böckerna av .

Penalized splines

De splines som hittills presenterats kallas ofta för regressionssplines. Förutom valet av splinebas (B-spline, trunkerad potensserie etc.) måste antalet knutar och knutarnas positioner väljas. Det är uppenbart att dessa inställningsparametrar kan ha en viktig inverkan på den uppskattade formen för en splinefunktion: Ett stort antal knutar innebär hög flexibilitet, men kan också leda till att man överanpassar de aktuella uppgifterna. Omvänt kan ett litet antal knutar resultera i ett ”övermjukt” estimat som är benäget för att inte passa in (se ).

En populär metod för att underlätta valet av knutpositioner i splinemodellering är användningen av straffade splines. Givet en i.i.d. urval av data (x1,y1),…(xn,yn) är en straffad spline lösningen på problemet

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

där lβ betecknar log-likelihood (eller, i fallet med Cox-regression, den partiella log-likelihood) och Jr är en straffavgift för ojämnhet som blir liten om spline-funktionen är ”slät”. Generellt bygger straffade splines på idén att den okända funktionen f modelleras av en spline med ett stort antal knutar, vilket möjliggör en hög grad av flexibilitet. Å andra sidan resulterar en grov splineskattning som har ett högt värde på lβ och ligger nära datavärdena i ett stort värde på Jβ. Maximeringen av denna funktion innebär därför en avvägning mellan mjukhet och modellanpassning som styrs av avstämningsparametern λ≥0.

Ett specialfall är det straffade minsta kvadratproblemet

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

i Gaussisk regression. Straffet \(J_{\beta } \,=\, \int _{a}^{b} \left (\partial ^{2} f / \partial x^{2}\right)^{2} dx\) uttrycker ”jämnheten” hos en splinefunktion i termer av den andra derivatan av f. För givet λ kan man visa att lösningen är en naturlig kubisk spline med knutsekvensen x(1)<…<x(n), dvs, knutpositionerna behöver inte väljas utan är ”naturligt” givna av de ordnade unika datavärdena i X. I litteraturen kallas denna typ av spline för smoothing spline . Det kan visas att en smoothing spline interpolerar data om λ=0, medan λ=∞ innebär en linjär funktion. Observera att utjämnande splines är ett specialfall av den mer allmänna klassen av tunna plattsplines , som möjliggör en utvidgning av kriteriet i ekv. (3) till högre dimensioner xi (se , avsnitt 4.15], och för detaljer).

En praktisk egenskap hos utjämnande splines är att straffet Jβ kan skrivas som β⊤Ωβ med en lämpligt definierad straffmatris Ω. Lösningen till (3) ges därför av den straffade skattningen av minsta kvadratmetoden

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

där B är en matris med dimensionen n×n som innehåller de naturliga splinebasfunktionerna utvärderade vid datavärdena. Vektorn y innehåller svarsvärdena y1,…,yn. I praktiken finns det mycket effektiva algoritmer för att beräkna \(\hat {\beta }\) i (4) . I stället för att ange en naturlig splinebas för f är det också möjligt att arbeta med en obegränsad B-splinebas, eftersom straffet i (3) automatiskt medför linjäritetsbegränsningar vid knutarna x(1) och x(n) (se , kapitel 5, och , kapitel 2). När det gäller B-splinebasen kommer skattningsresultaten inte att bero på valet av gränsknutar: det är antingen möjligt att använda x(1) och x(n) som gränsknutar eller att inkludera x(1) och x(n) i uppsättningen inre knutar.

Om n är stort och intervallet täcks tätt av de observerade uppgifterna, är det vanligen inte nödvändigt att placera en knut vid varje xi,i=1,…,n. Istället kan den utjämnande splinen approximeras med en straffad regressionsspline som använder en reducerad uppsättning knutar. En mycket populär klass av straffade regressionssplines är P-splines , som bygger på den kubiska B-splinebasen och på en ”stor” uppsättning av ekvidistansknutar (vanligtvis 10-40). Istället för att utvärdera integralen i (3) baseras P-splines på en andra ordningens differensstraff som definieras av

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

vilket, när det gäller jämnt fördelade knutar, kan visas vara en approximation av Jβ. Den andra ordningens differensoperator Δ2 definieras genom Δ2βk:=(βk-βk-1)-(βk-1-βk-2). Straffet kan därför uttryckas som β⊤Pβ, där P definieras av D⊤D med D en differensmatris. Det är lätt att härleda att den resulterande estimatorn av β har samma struktur som 2, med Ω ersatt av P.

En praktisk egenskap hos P-splines är att de är numeriskt stabila och mycket lätta att definiera och implementera. I synnerhet är det mycket lättare att ställa in differensmatrisen D än matrisen Ω. Det är också okomplicerat att utvidga straffet Jβ (och därmed matrisen D) till differenser av högre ordning Δq med q>2. Det är också möjligt att använda en knutsekvens som inte är jämnt fördelad; i detta fall måste vikter införas. Eftersom P-splines med ojämnt fördelade knutar sällan används i praktiken tar vi inte hänsyn till dem här utan hänvisar istället till

Smoothing splines och P-splines övervinner i viss mån problemet med val av knutar. Deras filosofi är att använda ett stort antal knutar och sedan låta λ styra graden av jämnhet. Detta resulterar i en extra inställningsparameter, utan att det finns någon allmän konsensus om hur denna parameter ska ställas in. Några populära sätt att bestämma det ”optimala” värdet på λ använder generaliserad korsvalidering (GCV), AIC eller en representation med blandade modeller .

Splines i R

Det grundläggande installationspaketet i R innehåller en uppsättning funktioner som kan passa in enkla polynomiella splines och utjämnande splines. Ytterligare funktioner ingår i biblioteket splines som är skrivet av DM Bates och WN Venables. Paketet har varit arbetshästen för splineanpassning i många år och ingår nu i grunddistributionen av R. Det finns mer än 100 andra paket som är beroende av splines när de laddas. Paketet innehåller flera funktioner för att skapa splinebaser, t.ex. bs för B-splines och ns för natural splines, som används flitigt, men också några mer specialiserade funktioner för att skapa basfunktioner (t.ex. periodicSpline som skapar en periodisk interpolationsspllines) eller kommandon som är användbara, t.ex. kommandot predict.bSpline som skulle utvärdera en spline vid nya värden på X.

De förvalda bs-värdena kommer att skapa en kubisk B-splinebas med två gränsknutar och en inre knut placerad vid medianen av de observerade datavärdena. Användaren kan uppnå större flexibilitet genom att öka placeringen och antalet knutar och/eller ändra deras placering. Figur 3 (kod 2 i Additional file 1: Appendix) visar B-splines som skapats med olika alternativ. I den övre delen visas linjära splines, dvs. polynomier av första ordningen (grad 1) som är sammankopplade med likadana knutar. I den nedre delen visas kubiska polynomier (grad 3).

Fig. 3

B-splinebas med hjälp av kommandot bs i biblioteket splines. Överst till vänster: Splinebas av första graden med tre frihetsgrader. Överst till höger: Splinebas av första graden med fyra frihetsgrader. Nederst till vänster: Kubisk splinebas med tre frihetsgrader. Nederst till höger: Kubisk splinebas med fyra frihetsgrader. Grafer skapade med kod #2

Det bör noteras att B-splines som skapas i R med bs() automatiskt avgränsas av dataområdet och att de ytterligare knutarna (τ1,…,τd) sätts lika med gränsknutarna, vilket ger flera knutar i båda ändarna av domänen. Detta tillvägagångssätt är användbart i univariata fall och har vissa beräkningsmässigt attraktiva egenskaper. Om man arbetar med ett tvådimensionellt utjämningsproblem, använder tensorprodukter av B-splines, eller när man arbetar med P-splines, är denna bas olämplig och kan leda till falska resultat.

Naturliga splines kan skapas inom splines-paketet, med kommandot ns. Om användaren inte anger antingen frihetsgrader eller knutar returnerar funktionen som standard en rak linje inom gränsknutarna om inte användaren anger antingen frihetsgrader eller knutar. Figur 4 (kod 3 i Additional file 1: Appendix visar naturliga splines som skapats med olika alternativ.

Figur 4

Naturlig kubisk splinebas med kommandot ns i biblioteket splines. Överst till vänster: Splinebas med två frihetsgrader. Överst till höger: Splinebas med tre frihetsgrader. Längst ner till vänster: Splinebas med fyra frihetsgrader. Nederst till höger: Splinebas med fem frihetsgrader. Created with Code#3

För att illustrera hur dessa funktioner kan användas i praktiken kan vi återigen betrakta data från avsnitt 2.0.1. Figur 5 (skapad av (kod 4 i Additional file 1: Appendix)) visar de anpassningar som erhållits genom att använda följande kommandon: poly() för enkla ortogonala polynomiska splines, smooth.spline() för utjämnande splines, bs() och ns() från biblioteket splines, för B-splines respektive natural splines. Den övre vänstra grafen visar en enkel linjär anpassning av data (streckad linje) och en polynomisk anpassning av tredje graden som kan fånga det mer komplexa förhållandet mellan variablerna. Grafen i det övre högra hörnet är dock särskilt intressant, eftersom den visar anpassningarna med standardvärdena för splinefunktionerna. Den gröna linjen kommer från funktionerna poly() och ns() som vid standardvärdena båda definierar en rak linje. I den andra extremen är den blå linjen en anpassning från funktionen smooth.spline() som, om inga frihetsgrader anges, tenderar att undermåla data, dvs. producera en mycket flexibel, vickande anpassning baserad – här – på 45 frihetsgrader. En -visuellt- rimlig anpassning till data kan uppnås när fyra frihetsgrader anges (nedre vänstra grafen). Man kan se att det finns vissa skillnader beroende på den valda basen. Polynombasen (svart linje) är lite mer flexibel än de övriga, särskilt vid högre åldrar. Å andra sidan är en utjämnande spline som begränsas till endast fyra frihetsgrader mer stelbent än de andra tillvägagångssätten, men överutjämnar troligen uppgifterna vid små åldrar, mellan år 0 och 10. Mellan de två ytterligheterna ger B-splines och naturliga splines mycket likartade anpassningar som fångar effekten av små åldrar och tenderar att påverkas mindre av extrema fall i slutet av åldersspektrumet. Slutligen visar den nedre högra grafen hur mycket mer flexibla anpassningarna blir med ytterligare frihetsgrader och tyder på potentiell överanpassning på grund av användning av alltför många frihetsgrader.

Fig. 5

En plottning av ålder i år mot triceps hudveckstjocklek för 892 kvinnor i Västafrika. Överst till vänster: Streckad linje representerar en enkel linjär anpassning, heldragen linje en anpassning med hjälp av flexibla tredjegradspolynomier. Överst till höger: Splines-anpassning med standardvärden för R. Grön linje är resultatet av en polynomspline av grad 1 (standardvärde för funktion poly) och en anpassning från en naturlig spline utan att frihetsgrader anges (standardvärde för funktioner ns). Röd linje kommer från en b-spline med tre frihetsgrader (funktion bs och blå linje från en utjämnande spline (från funktionen smooth.spline). Nedre vänster: Den svarta linjen är en polynomisk anpassning, den röda linjen är en b-splinesanpassning, den gröna linjen är en naturlig splinesanpassning och en utjämnande spline, alla definierade med fyra frihetsgrader. Nedre höger: Samma funktioner definierade med 10 frihetsgrader. Created with Code #4

En anmärkning om frihetsgrader

I praktiken är det alltid användbart att definiera en spline genom frihetsgrader. Detta tillvägagångssätt är särskilt användbart när man arbetar med B-splines och naturliga splines. B-splines har d+K, medan en naturlig kubisk splinebasfunktion med K knutar har K+1 frihetsgrader respektive. Som standard skapar funktionen bs i R B-splines av grad 3 utan inre knutar och gränsknutar som definieras inom X-variabelns intervall. Som sådan skapar funktionen tre basfunktioner. Tänk nu på följande fall: När en användare definierar en B-spline med en inre knut vid medianen av X (bs(x,knots=median(x))) kommer programmet att skapa fyra funktioner (d=3 plus K=1 inre knutar, fyra frihetsgrader). Om användaren däremot i funktionen anger gränsknutarna inom argumentet knutar (bs(x,knutar=c(min(x),median(x),max(x))))), kommer funktionen att ha sex frihetsgrader (d=3 plus k=3). Liknande försiktighet bör iakttas med funktionen ns.

När man arbetar med utjämnande splines är det inte lätt att ange frihetsgraderna, eftersom de kommer att variera beroende på straffets storlek. I praktiken kan dock straffade splines också begränsas till ett maximalt antal frihetsgrader eller önskade frihetsgrader.

Andra spline-paket

I stort sett innehåller den utökade listan över spline-paket antingen tillvägagångssätt som är ganska lika det som presenteras här eller mycket specialiserade fall som riktar sig till specifika tillämpningar. I tabell 1 presenteras några av dessa paket tillsammans med antalet nedladdningar. Antalet avser antalet gånger ett paket har laddats ner men inte unika användare. Det ligger utanför ramen för detta arbete att i detalj beskriva alla dessa tillvägagångssätt.

Tabell 1 R-paket som används för att skapa splines

.

Lämna ett svar

Din e-postadress kommer inte publiceras.