O trecere în revistă a procedurilor funcțiilor spline în R

Termenul „spline” se referă la o unealtă de artizanat, o bandă subțire flexibilă de lemn sau metal, folosită pentru a trasa curbe netede. Se aplicau mai multe greutăți pe diferite poziții, astfel încât banda să se îndoaie în funcție de numărul și poziția acestora. Aceasta ar fi forțată să treacă printr-un set de puncte fixe: pini de metal, coastele unei bărci etc. Pe o suprafață plană, acestea erau adesea greutăți cu un cârlig atașat și, astfel, ușor de manipulat. Forma materialului îndoit urma să ia în mod natural forma unei curbe spline. În mod similar, splinele sunt utilizate în statistică pentru a reproduce matematic forme flexibile. Nodurile sunt plasate în mai multe locuri din intervalul de date, pentru a identifica punctele în care piesele funcționale adiacente se unesc între ele. În locul dungilor de metal sau de lemn, se aleg piese funcționale netede (de obicei polinoame de ordin inferior) pentru a se potrivi datelor între două noduri consecutive. Tipul de polinomial și numărul și plasarea nodurilor este ceea ce definește apoi tipul de spline.

Exemplu motivant

Cu introducerea modelelor aditive generalizate (GAM) în 1986, utilizarea modelării spline a devenit un instrument consacrat în analiza statistică de regresie. Pentru a ilustra acest lucru, luăm în considerare datele privind un set de 892 de femei sub 50 de ani colectate în trei sate din Africa de Vest (date disponibile în fișierul suplimentar 1: Apendice). Am dori să explorăm relația dintre vârstă (în ani) și o măsură brută a grăsimii corporale, care este grosimea pliului cutanat al tricepsului. Figura 1 prezintă relația dintre vârstă și grosimea pliului cutanat triceps măsurată pe scară logaritmică. Pentru mai multe informații despre date, consultați .

Fig. 1

Un grafic al vârstei în ani față de grosimea pliului cutanat triceps pentru 892 de femei din Africa de Vest . Linia punctată reprezintă o potrivire liniară simplă, iar linia continuă o potrivire folosind polinoame flexibile de gradul trei

Un model de regresie simplă de forma yi=β0+β1xi+ε,i=1,…,n, ar oferi cu greu o aproximare a modelului observat, deoarece este evident că relația nu este liniară. Modelul poate fi extins pentru a ține cont de efectele neliniare cu ajutorul unor polinoame. Astfel, efectele neliniare ar putea fi modelate printr-un polinom de gradul 3 dat de:

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

unde u este o funcție a lui x numită funcție de bază, definită aici prin:

$$U=\left $$

Modelul de regresie descris în Ecuația 1 este încă un model liniar, în ciuda faptului că oferă o funcție neliniară a variabilei predictor. Modelul este în continuare liniar în ceea ce privește coeficienții și poate fi ajustat utilizând metodele celor mai mici pătrate ordinare. Baza poate fi creată în R utilizând funcția poly(x,3) cu intrările x (care se referă la variabilă) și p (care se referă la gradul polinomului). Acest lucru conduce la un model simplu univariat neted de forma: yi=f(xi)+ε unde f() este o funcție/transformare a predictorului. Un astfel de model poate fi ajustat cu ușurință în R utilizând: lm(y ∼poly(x,3)). În ciuda simplității, regresia polinomială are mai multe dezavantaje, cel mai important fiind non-localitatea. Aceasta înseamnă că funcția ajustată la o anumită valoare x0 depinde de valorile datelor aflate la mare distanță de acel punct. Este ușor de văzut acest lucru în acțiune prin ajustarea unui polinom la un set de date și deplasarea în sus sau în jos a unuia dintre punctele de date din apropierea marginii drepte. Ca urmare, funcția ajustată se va modifica, de obicei, departe de acea coordonată x.

Considerați, în loc să ajustați un polinom global, împărțirea intervalului x în intervale mai mici, utilizând un număr arbitrar și o poziție arbitrară de puncte, τ, numite și noduri. Se poate ajusta un model simplu, continuu pe bucăți, prin definirea funcțiilor: f1(x)=1,f2(x)=x,f3(x)=(x-τ1)+,f4(x)=(x-τ2)+,…, cu „+” o funcție definită ca:

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

Ansamblul acestor funcții conduce la o funcție compusă f(x).

Definiția spline-urilor

Spline-ul metalic al desenatorului poate lua forme arbitrare, de exemplu, secțiunea transversală a unei aripi de avion sau spirala unei pompe centrifugale. Pentru aplicațiile statistice vom presupune curbe de forma f(X), adică o singură valoare y pentru fiecare x. Predictorul x poate fi o singură variabilă sau mai multe variabile. Discuția noastră se va concentra aproape în întregime pe o funcție univariată cu \(X\în \mathbb {R}\). Se definește un set de noduri τ1<…<τK în intervalul lui X. O spline f(X) va fi o funcție netedă, care satisface anumite proprietăți de diferențiabilitate menționate mai jos, astfel încât f(X) să fie un polinom de grad d. Splinele din lemn sau metal au derivate continue de toate ordinele, deoarece sunt un obiect fizic. Acest lucru nu este valabil pentru spline statistice. Mai degrabă impunem un criteriu de netezime conform căruia toate derivatele de ordin mai mic decât d sunt continue. O spline fizică este liniară dincolo de ultimul nod și putem impune o constrângere suplimentară derivatele de ordinul 2 sau mai mare sunt zero la nodurile cele mai din stânga și din dreapta; splinele cu această constrângere suplimentară sunt cunoscute sub numele de spline „restrânse” sau „naturale”. Pentru a obține curbe mai flexibile, se poate mări numărul de noduri sau gradul polinomului. Cu toate acestea, există un compromis; creșterea numărului de noduri poate duce la o supraajustare a datelor și la o creștere a varianței, în timp ce scăderea numărului de noduri poate duce la o funcție rigidă și restrictivă care are mai multe distorsiuni.

Reprezentarea prin funcții de bază

Să presupunem că funcția necunoscută f este reprezentată de o funcție spline cu secvență de noduri fixă și grad fix d. Deoarece aceste din urmă funcții formează un spațiu vectorial V, este posibil să se scrie f ca

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

unde Bk este un set de funcții de bază care definesc V și βk sunt coeficienții spline asociați. Cu k noduri există k+1 polinoame de grad d împreună cu d∗k constrângeri, ceea ce conduce la (d+1)(k+1)-d∗k=d+k+1 parametri liberi ; pentru un spline natural există k parametri liberi. Deoarece βB=(βA)(A-1B)=γB∗ pentru orice matrice nesingulară A există un număr infinit de seturi de baze posibile pentru ajustarea spline.

Reprezentarea din (2) are avantajul că estimarea lui f se reduce la estimarea coeficienților βk. Mai precis, expresia din (2) este liniară în vectorul de coeficienți β=(β1,…,βK+d+1). Prin urmare, estimarea lui f poate fi privită ca o problemă de optimizare care este liniară în variabilele transformate B1(X),…,BK+d+1(X), ceea ce permite utilizarea unor tehnici de estimare bine stabilite pentru utilizarea spline-urilor într-o gamă largă de modele de regresie multivariabilă (generalizată). În mod important, modelarea spline reduce estimarea funcțiilor f() la estimarea unui set mic de coeficienți cu valoare reală.

După cum au subliniat diverși autori (de exemplu, flexibilitatea ridicată a modelării spline vine cu prețul unui număr de parametri de reglare. Doi dintre aceștia, alegerea funcțiilor de bază B și gradul d al polinoamelor subiacente se dovedesc a avea un impact redus. De fapt, ajustările spline sunt remarcabil de robuste în ceea ce privește gradul d. Polinoamele cubice (d=3) reprezintă standardul obișnuit, deoarece acestea dau naștere la curbe care par perfect netede pentru ochiul uman. În cazul în care sunt de interes derivatele curbelor ajustate, uneori este adecvat un ordin mai mare, dar, în general, ajustările pentru d>3 sunt efectiv imposibil de distins. Ajustările cu d=1 sau d=2 au proprietăți statistice aproape identice, dar vor apărea mai zimțate. Alegerea între două seturi de baze B și B∗ nu va schimba, prin definiție, predicțiile unei ajustări și, prin urmare, se reduce la probleme de comoditate.

Cele două alegeri cheie se referă la numărul și spațierea nodurilor și la utilizarea (sau nu) a unei funcții de penalizare, de exemplu, derivata a doua integrată a splinei. Atunci când nu există nicio penalizare, crearea variabilelor transformate se poate face separat, iar noile variabile sunt pur și simplu incluse într-o potrivire standard a modelului; nu este necesară nicio modificare a procedurii de regresie subiacente. Această abordare este adesea denumită spline de regresie; flexibilitatea funcției neliniare rezultate este în întregime o funcție a numărului de noduri. Includerea unei penalizări de netezire, pe de altă parte, necesită modificarea rutinei de ajustare pentru a o adapta. Aceasta trebuie să fie inclusă în fiecare funcție de regresie în parte. Spline-urile de netezire rezultate au mai multe proprietăți dezirabile, dar complexitatea adăugată a funcției de netezire poate fi un motiv pentru care nu au fost utilizate mai des în mediile aplicate.

Deși s-au efectuat cercetări considerabile pentru a explora proprietățile matematice ale diferitelor abordări spline (a se vedea , statisticienii aplicați și analiștii de date par să nu fie aproape deloc conștienți de aceste rezultate atunci când utilizează modelarea spline în aplicații practice. De fapt, multe dintre articolele identificate în urma căutării noastre pe internet nu conțineau nicio justificare cu privire la rațiunea alegerii metodei spline utilizate.

Baze spline populare

Există numeroase opțiuni pentru definirea funcțiilor de bază Bk, unde diferitele baze spline diferă în ceea ce privește proprietățile lor numerice . În această secțiune, vom prezenta unele dintre cele mai populare baze spline, și anume baza seriei de putere trunchiată, baza B-spline și baza spline cardinală.

Serie de putere trunchiată și spline cubice

Baza seriei de putere trunchiată este definită de funcțiile de bază

$$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 avantaj al funcțiilor de bază de mai sus este interpretarea lor ușoară: Pornind de la un polinom „de bază” de grad d definit pe (prima linie a ecuației), abaterile de la polinomul de bază sunt adăugate succesiv la funcția spline din dreapta fiecăruia dintre cele K noduri (a doua linie). Un spline cu baza de putere trunchiată este de d-1 ori diferențiabil la noduri și are d+K grade de libertate. Este relativ ușor pentru utilizator să creeze o serie de putere trunchiată în R. Fie ca x să reprezinte niște observații în , atunci o bază de putere trunchiată de grad d=3 cu 5 noduri distanțate în mod egal de-a lungul intervalului lui x poate fi creată folosind Codul 1 din Fișierul suplimentar 1: Apendice (Fig. 2).

Fig. 2

Funcții de bază spline polinomiale trunchiate de gradul trei (d=3) cu cinci noduri echidistante (K=5). Grafic creat cu ajutorul Codului nr. 1 din Fișierul suplimentar 1: Appendix

O caracteristică a seriilor de putere trunchiate este că suporturile funcțiilor nu sunt locale, unele dintre Bk fiind definite pe întreaga gamă de date . Acest lucru ar putea conduce la corelații ridicate între unele spline de bază, implicând instabilități numerice în estimarea spline. Pentru baza seriei de puteri trunchiate, un exemplu este dat în , Capitolul 5.

Splines cubice sunt create prin utilizarea unui polinom cubic într-un interval între două noduri succesive. Spline-ul are patru parametri pe fiecare dintre cele K+1 regiuni minus trei constrângeri pentru fiecare nod, rezultând un număr de K+4 grade de libertate.

O funcție spline cubică, cu trei noduri (τ1,τ2,τ3) va avea 7 grade de libertate. Folosind reprezentarea dată în Ecuația 2, funcția poate fi scrisă sub forma::

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

Baza B-spline este o bază spline utilizată în mod obișnuit care se bazează pe o parametrizarea specială a unei spline cubice. Baza B-spline , se bazează pe secvența de noduri

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

unde seturile ξd+2 := τ1,…,ξd+K+1:=τK și ξd+1:=a,ξd+K+2:=b sunt denumite „noduri interioare” și, respectiv, „noduri de frontieră”. Alegerea nodurilor suplimentare ξ1,…,ξd și ξd+K+3,…,ξ2d+K+2 este în esență arbitrară. O strategie obișnuită este de a le stabili egale cu nodurile limită. Alternativ, dacă nodurile interioare și nodurile de frontieră ξd+1<…<ξd+K+2 sunt alese pentru a fi echidistante, și anume, ξk+1-ξk=δ ∀k∈{d+1,…,d+K+1}, nodurile de frontieră pot fi plasate la ξd+1-δ,…,ξd+1-d-δ și ξd+K+2+δ,…,ξd+K+2+d-δ.

Pentru d>0, funcțiile de bază B-spline de grad d (notate cu \(B_{k}^{d}(x)\)) sunt definite prin formula recursivăNota de subsol 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} $$

unde

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

și \(B_{k}^{0}(x) \equiv 0\) dacă ξk=ξk+1. B-splines au avantajul că funcțiile de bază au suport local. Mai precis, acestea sunt mai mari decât zero în intervalele cuprinse între d+2 noduri și zero în alte părți. Această proprietate duce la o stabilitate numerică ridicată și, de asemenea, la un algoritm eficient pentru construcția funcțiilor de bază, a se vedea pentru detalii.

Splines cubice și cardinale naturale

Un spline polinomial, cum ar fi un spline cubic sau un B-spline, poate fi neregulat la limitele datelor. Pentru a rezolva această problemă, splinele naturale sunt spline cubice care au constrângerile suplimentare că sunt liniare în cozile nodurilor de frontieră (-∞,a],, Capitolul 4.

În plus față de splinele naturale cu serii de puteri trunchiate, B-spline și bazele spline cardinale, există diverse alte baze – mai puțin populare. Pentru o prezentare generală, ne referim la cărțile de .

Splines penalizate

Splines prezentate până acum sunt adesea denumite splines de regresie. Pe lângă alegerea bazei spline (B-spline, serie de puteri trunchiate etc.), trebuie să se aleagă numărul de noduri și pozițiile nodurilor. Evident, acești parametri de reglare pot avea un impact important asupra formei estimate a unei funcții spline: Un număr mare de noduri implică o flexibilitate ridicată, dar poate duce, de asemenea, la o supraadaptare la datele disponibile. Dimpotrivă, un număr mic de noduri poate avea ca rezultat o estimare „suprasovăiată” care este predispusă la distorsiuni de subadaptare (a se vedea ).

O abordare populară pentru a facilita alegerea pozițiilor nodurilor în modelarea spline este utilizarea spline-urilor penalizate. Având în vedere o valoare i.i.d. eșantion de date (x1,y1),…(xn,yn), un spline penalizat este soluția la problema

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

unde lβ reprezintă log-variabilitatea (sau, în cazul regresiei Cox, log-variabilitatea parțială) și Jr este o penalizare de rugozitate care devine mică dacă funcția spline este „netedă”. În general, spline-urile penalizate se bazează pe ideea că funcția necunoscută f este modelată de o spline cu un număr mare de noduri, ceea ce permite un grad ridicat de flexibilitate. Pe de altă parte, o estimare rudimentară a splinei care are o valoare mare a lui lβ și este apropiată de valorile datelor are ca rezultat o valoare mare a lui Jβ. Prin urmare, maximizarea acestei funcții implică un compromis între netezime și ajustarea modelului care este controlat de parametrul de reglare λ≥0.

Un caz special este problema celor mai mici pătrate penalizate

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

în regresia gaussiană. Penalizarea \(J_{\beta } \,=\, \int _{a}^{b} \left (\partial ^{2} f / \partial x^{2}\right)^{2} dx\) exprimă „netezimea” unei funcții spline în termeni de derivată a doua a lui f. Pentru λ dat, se poate demonstra că soluția este o spline cubică naturală cu secvența de noduri x(1)<…<x(n), adică, pozițiile nodurilor nu trebuie să fie alese, ci sunt date „natural” de valorile ordonate ale datelor unice ale lui X. În literatura de specialitate, acest tip de spline este denumit spline de netezire . De remarcat, se poate demonstra că un smoothing spline interpolează datele dacă λ=0, în timp ce λ=∞ implică o funcție liniară. Rețineți că spline-urile de netezire sunt un caz special al clasei mai generale de spline cu plăci subțiri , care permit o extindere a criteriului din Ecuația (3) la xi cu dimensiuni mai mari (a se vedea , secțiunea 4.15], și pentru detalii).

O proprietate convenabilă a spline-urilor de netezire este că penalizarea Jβ poate fi scrisă ca β⊤Ωβ cu o matrice de penalizare Ω definită în mod corespunzător. Prin urmare, soluția la (3) este dată de estimarea celor mai mici pătrate penalizate

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

unde B este o matrice de dimensiune n×n care conține funcțiile de bază spline naturale evaluate la valorile datelor. Vectorul y conține valorile de răspuns y1,…,yn. În practică, există algoritmi foarte eficienți pentru a calcula \(\hat {\beta }\) din (4) . În loc să se specifice o bază spline naturală pentru f, este posibil să se lucreze în continuare cu o bază B-spline fără constrângeri, deoarece penalizarea din (3) impune automat constrângerile de liniaritate la nodurile x(1) și x(n) (a se vedea , capitolul 5 și , capitolul 2). În ceea ce privește baza B-spline, rezultatele estimării nu vor depinde de alegerea nodurilor limită:este posibil fie să se utilizeze x(1) și x(n) ca noduri limită, fie să se includă x(1) și x(n) în setul de noduri interioare.

Dacă n este mare și intervalul este acoperit în mod dens de datele observate, de obicei nu este necesar să se plaseze un nod la fiecare xi,i=1,…,n. În schimb, spline-ul de netezire poate fi aproximat printr-un spline de regresie penalizat care utilizează un set redus de noduri. O clasă foarte populară de spline de regresie penalizată este P-spline , care se bazează pe baza cubică B-spline și pe un set „mare” de noduri echidistante (de obicei, 10-40). În loc să se evalueze integrala din (3), P-splines se bazează pe o penalizare prin diferență de ordinul doi definită de

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

care, în cazul nodurilor uniform distanțate, se poate demonstra că este o aproximare a lui Jβ. Operatorul de diferență de ordinul doi Δ2 este definit prin Δ2βk:=(βk-βk-1)-(βk-1-βk-2). Prin urmare, penalizarea poate fi exprimată ca β⊤Pβ, unde P este definit de D⊤D cu D o matrice de diferențe. Se poate deduce cu ușurință că estimatorul rezultat al lui β are aceeași structură ca și 2, cu Ω înlocuit cu P.

O proprietate convenabilă a P-splines este că acestea sunt stabile numeric și foarte ușor de definit și implementat. În special, este mult mai ușor de configurat matricea de diferență D decât matricea Ω. De asemenea, este simplu să se extindă penalizarea Jβ (și, prin urmare, matricea D) la diferențele de ordin superior Δq cu q>2. De asemenea, este posibil să se utilizeze o secvență de noduri care nu este uniform distanțată; în acest caz, trebuie să se introducă ponderi. Deoarece P-splines cu noduri neuniform spațiate sunt rareori utilizate în practică, nu le luăm în considerare aici și ne referim în schimb la:

Smoothing splines și P-splines depășesc într-o oarecare măsură problema selecției nodurilor. Filozofia lor este de a utiliza un număr mare de noduri și apoi de a lăsa λ să controleze gradul de netezire. Acest lucru are ca rezultat un parametru de reglare suplimentar, fără un consens general cu privire la modul de reglare a acestui parametru. Unele modalități populare de determinare a valorii „optime” a lui λ utilizează validarea încrucișată generalizată (GCV), AIC sau o reprezentare cu modele mixte .

Splines în R

Pachetul de instalare de bază din R conține un set de funcții care pot ajusta spline polinomiale simple și spline de netezire. Alte funcții sunt incluse în biblioteca splines scrisă de DM Bates și WN Venables. Pachetul a fost calul de bătaie al ajustării splinelor timp de mulți ani și acum face parte din distribuția de bază a R. Există peste 100 de alte pachete care depind de splines la încărcare. Pachetul conține mai multe funcții pentru a crea baze spline, cum ar fi bs pentru B-splines și ns pentru splines naturale, care sunt utilizate pe scară largă, dar și unele funcții mai specializate pentru crearea de funcții de bază (cum ar fi periodicSpline care creează o spline de interpolare periodică) sau comenzi care sunt utile, cum ar fi comanda predict.bSpline care ar evalua o spline la noi valori ale lui X.

Valorile implicite bs vor crea o bază cubică B-spline cu două noduri de frontieră și un nod interior plasat la mediana valorilor datelor observate. Utilizatorul poate obține mai multă flexibilitate, prin creșterea plasării și a numărului de noduri și/sau prin schimbarea locațiilor acestora. Figura 3 (codul 2 din fișierul suplimentar 1: Apendice) prezintă B-spline create cu diferite opțiuni. Partea superioară prezintă splines liniare, adică polinoame de ordinul întâi (gradul este unul) conectate între ele pe noduri echidistante. Partea inferioară prezintă polinoame cubice (gradul 3).

Fig. 3

B-spline de bază folosind comanda bs din biblioteca splines. În stânga sus: Baza spline de gradul întâi cu trei grade de libertate. În dreapta sus: Baza spline de primul grad cu patru grade de libertate. În stânga jos: Baza spline cubică cu trei grade de libertate. În dreapta jos: Baza spline cubică cu patru grade de libertate. Grafice create cu ajutorul Codului #2

Trebuie remarcat faptul că B-splines create în R cu bs() sunt automat delimitate de domeniul datelor și că nodurile suplimentare (τ1,…,τd) sunt stabilite egale cu nodurile de frontieră, dând noduri multiple la ambele capete ale domeniului. Această abordare este utilă în cazurile univariate și are unele caracteristici atractive din punct de vedere computațional. Cu toate acestea, dacă se lucrează la o problemă de netezire bidimensională, folosind produse tensoriale de B-splines sau atunci când se lucrează cu P-splines, această bază este nepotrivită și poate conduce la rezultate false.

Splines naturale pot fi create în cadrul pachetului splines, folosind comanda ns. În mod implicit, dacă utilizatorul nu specifică fie gradele de libertate, fie nodurile, funcția returnează o linie dreaptă în interiorul nodurilor limită. Figura 4 (codul 3 din Fișierul suplimentar 1: Apendice prezintă spline naturale create cu diferite opțiuni.

Fig. 4

Bază de spline cubice naturale folosind comanda ns în biblioteca splines. În stânga sus: Baza spline cu două grade de libertate. În dreapta sus: Baza spline cu trei grade de libertate. Jos, stânga: Baza Spline cu patru grade de libertate. Dreapta jos: Baza Spline cu cinci grade de libertate. Creat cu Code#3

Pentru a ilustra modul în care aceste funcții pot fi utilizate în practică, luați din nou în considerare datele din secțiunea 2.0.1. Figura 5 (creată cu (codul 4 din Fișierul suplimentar 1: Apendice)) prezintă ajustările obținute prin utilizarea următoarelor comenzi: poly() pentru spline polinomice ortogonale simple, smooth.spline() pentru spline de netezire, bs() și ns() din library splines, pentru B-splines și, respectiv, splines naturale. Graficul din stânga sus prezintă o potrivire liniară simplă a datelor (linie punctată) și o potrivire polinomială de gradul trei care este capabilă să surprindă relația mai complexă dintre variabile. Graficul din colțul din dreapta sus este însă deosebit de interesant, deoarece prezintă ajustările folosind valorile implicite ale funcțiilor spline. Linia verde provine de la funcțiile poly() și ns() care, în mod implicit, ambele definesc o linie dreaptă. La cealaltă extremă, linia albastră este o ajustare din funcția smooth.spline() care, dacă nu se specifică niciun grad de libertate, tinde să subtilizeze datele, adică să producă o ajustare ondulată foarte flexibilă bazată – aici – pe 45 de grade de libertate. Se poate obține o ajustare rezonabilă din punct de vedere vizual la date atunci când se specifică patru grade de libertate (graficul din stânga jos). Se poate observa că există unele diferențe în funcție de baza aleasă. Baza polinomială (linia neagră) este un pic mai flexibilă decât restul, în special la vârste mai mari. Pe de altă parte, un spline de netezire restrâns la doar patru grade de libertate este mai rigid decât alte abordări, dar probabil că netezește prea mult datele la vârste mici, între anii 0 și 10. Între cele două extreme, B-splines și splines naturale oferă ajustări foarte similare care captează efectul vârstelor mici și tind să fie mai puțin influențate de cazurile extreme de la capătul spectrului de vârstă. În cele din urmă, graficul din dreapta jos arată cât de mult mai flexibile devin ajustările cu grade de libertate suplimentare și sugerează o potențială distorsiune de supra-ajustare datorată utilizării unui număr excesiv de grade de libertate.

Fig. 5

Un grafic al vârstei în ani față de grosimea pliului cutanat triceps pentru 892 de femei din Africa de Vest. În stânga sus: Linia punctată reprezintă o potrivire liniară simplă, linia continuă o potrivire folosind polinoame flexibile de gradul trei. Dreapta sus: Splines ajustate utilizând valorile implicite R. Linia verde este rezultatul unei spline polinomiale de gradul 1 (valoare implicită pentru funcția poly și o ajustare dintr-o spline naturală fără grade de libertate specificate (valoare implicită pentru funcțiile ns). Linia roșie provine de la o spline b cu trei grade de libertate (funcția bs și linia albastră de la o spline de netezire (din funcția smooth.spline). În stânga jos: Linia neagră este o potrivire polinomială, linia roșie o potrivire b-splines, linia verde este o potrivire natural splines și smoothing spline, toate definite cu patru grade de libertate. Dreapta jos: Aceleași funcții definite cu 10 grade de libertate. Creat cu codul #4

O notă privind gradele de libertate

În practică, este întotdeauna util să se definească o spline prin grade de libertate. Această abordare este deosebit de utilă atunci când se lucrează cu B-splines și splines naturale. B-splines au d+K, în timp ce o funcție de bază spline cubică naturală cu K noduri are K+1 grade de libertate, respectiv K+1 grade de libertate. În mod implicit, funcția bs din R creează B-splines de gradul 3 fără noduri interioare și noduri de frontieră definite la intervalul variabilei X. Ca atare, funcția creează trei funcții de bază. Luați acum în considerare următorul caz: atunci când un utilizator definește o B-spline cu un nod interior la mediana lui X (bs(x,knots=mediana(x))), software-ul va crea patru funcții (d=3 plus K=1 noduri interioare, patru grade de libertate). Cu toate acestea, dacă utilizatorul specifică în funcție nodurile de frontieră în cadrul argumentului noduri (bs(x,knots=c(min(x),median(x),max(x))))), funcția va avea șase grade de libertate (d=3 plus k=3). O precauție similară trebuie luată cu funcția ns.

Când se lucrează cu spline de netezire, nu este ușor de specificat gradele de libertate, deoarece acestea vor varia în funcție de mărimea penalizării. Cu toate acestea, în practică, spline-urile penalizate pot fi, de asemenea, restricționate la un număr maxim de grade de libertate sau la grade de libertate dorite.

Alte pachete spline

În general, lista extinsă de pachete spline conține fie abordări destul de asemănătoare cu cele prezentate aici, fie cazuri foarte specializate care vizează aplicații specifice. În tabelul 1 sunt prezentate unele dintre aceste pachete, împreună cu numărul de descărcări. Numărul se referă la numărul de ori de câte ori un pachet a fost descărcat, dar nu la utilizatorii unici. Este dincolo de scopul acestei lucrări de a descrie în detaliu toate aceste abordări.

Tabel 1 Pachete R utilizate pentru crearea de spline

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.