A review of spline function procedures in R

A ‘spline’ kifejezés egy kézműves szerszámra utal, egy rugalmas, vékony fa- vagy fémszalagra, amelyet sima görbék rajzolására használnak. Többféle súlyt alkalmaznának különböző pozíciókban, így a csík ezek számának és helyzetének megfelelően hajlana meg. Ezt arra kényszerítenék, hogy áthaladjon egy sor rögzített ponton: fémcsapokon, egy hajó bordáin stb. Sík felületen ezek gyakran olyan súlyok voltak, amelyekhez kampó volt rögzítve, és így könnyen manipulálhatók voltak. A meghajlított anyag alakja természetesen egy spline görbe formáját venné fel. Hasonlóképpen a spline-okat a statisztikában is használják a rugalmas alakzatok matematikai reprodukálására. Az adattartományon belül több helyen csomópontokat helyeznek el, hogy azonosítsák azokat a pontokat, ahol a szomszédos funkcionális darabok összekapcsolódnak. Fém- vagy facsíkok helyett sima funkcionális darabokat (általában alacsony rendű polinomokat) választanak, hogy illeszkedjenek az adatokhoz két egymást követő csomópont között. A polinom típusa, valamint a csomópontok száma és elhelyezése azután meghatározza a spline típusát.

Motiváló példa

Az általánosított additív modellek (GAM) 1986-os bevezetésével a spline-modellezés a statisztikai regresszióelemzés bevett eszközévé vált. Ennek illusztrálására tekintsük egy 892 50 év alatti nőre vonatkozó, három nyugat-afrikai faluban gyűjtött adathalmaz adatait (az adatok az 1. kiegészítő fájlban: Függelék). Szeretnénk feltárni a kapcsolatot az életkor (években) és a testzsír durva mérőszáma, a tricepsz bőrredő vastagsága között. Az 1. ábra az életkor és a triceps skinfold vastagság közötti kapcsolatot mutatja logaritmikus skálán mérve. Az adatokkal kapcsolatos további információkért lásd .

1. ábra

A kor (években) és a triceps skinfold vastagság ábrázolása 892 nyugat-afrikai nő esetében . A szaggatott vonal egy egyszerű lineáris illesztést, a folytonos vonal pedig egy rugalmas harmadfokú polinomok

Az yi=β0+β1xi+ε,i=1,…,n, formájú egyszerű regressziós modell aligha adna közelítést a megfigyelt mintázatra, mivel nyilvánvaló, hogy az összefüggés nem lineáris. A modell néhány polinom segítségével kiterjeszthető a nem lineáris hatások figyelembevételére. Ekkor a nemlineáris hatásokat egy 3. fokú polinommal lehet modellezni, amely a következő módon adódik:

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

ahol u egy x függvénye, az úgynevezett bázisfüggvény, amelyet itt a következőképpen definiálunk:

$$U=\left $$

Az 1. egyenletben leírt regressziós modell még mindig egy lineáris modell, annak ellenére, hogy a prediktor változó nem lineáris függvényét adja. A modell még mindig lineáris az együtthatók tekintetében, és a szokásos legkisebb négyzetek módszerével illeszthető. Az alapot az R-ben a poly(x,3) függvény segítségével lehet létrehozni x (a változóra utaló) és p (a polinom fokára utaló) bemenetekkel. Ez egy egyszerű egyváltozós sima modellhez vezet a következő formában: yi=f(xi)+ε, ahol f() a prediktor valamilyen függvénye/transzformációja. Egy ilyen modell könnyen illeszthető R-ben a következővel: lm(y ∼poly(x,3)). Az egyszerűség ellenére a polinomiális regressziónak számos hátránya van, a legfontosabb a nem lokalitás. Ez azt jelenti, hogy az illesztett függvény egy adott x0 értéknél az adott ponttól távoli adatértékektől függ. Ezt könnyen láthatjuk a gyakorlatban, ha egy polinomot illesztünk egy adathalmazra, és a jobb széléhez közeli egyik adatpontot felfelé vagy lefelé mozgatjuk. Ennek eredményeképpen az illesztett függvény általában az adott x koordinátától távolabb változik.

A globális polinom illesztése helyett fontolja meg az x tartomány kisebb intervallumokra való felosztását, kihasználva a pontok tetszőleges számú és helyzetű τ értékét, amelyet csomópontoknak is neveznek. Egy egyszerű darabosan folytonos modell illeszthető a következő függvények definiálásával: f1(x)=1,f2(x)=x,f3(x)=(x-τ1)+,f4(x)=(x-τ2)+,…, a “+” függvényt a következőképpen definiáljuk:

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

E függvények halmaza egy összetett f(x) függvényhez vezet.

A spline-ok definíciója

A rajzoló fém spline tetszőleges formákat vehet fel, például egy repülőgépszárny keresztmetszetét vagy egy centrifugálszivattyú spirálját. A statisztikai alkalmazásokhoz f(X) alakú görbéket feltételezünk, azaz minden x-hez egyetlen y értéket. Az x prediktor lehet egyetlen változó vagy több változó. Tárgyalásunk szinte teljes egészében egy egyváltozós függvényre fog összpontosítani, amelynek \(X\in \mathbb {R}\). Definiáljuk a csomók τ1<…<τK halmazát X tartományában. Az f(X) spline egy olyan sima függvény lesz, amely kielégít bizonyos, alább említett differenciálhatósági tulajdonságokat, úgy, hogy f(X) egy d fokú polinom. A fa- vagy fémspline-oknak minden rendű folytonos deriváltjuk van, mivel fizikai tárgyról van szó. Ez nem igaz a statisztikai spline-okra. Inkább egy simasági kritériumot állítunk fel, hogy minden d-nél kisebb rendű derivált folytonos legyen. Egy fizikai spline az utolsó csomóponton túl lineáris, és egy további megkötést is előírhatunk, hogy a 2. vagy annál nagyobb rendű deriváltak a bal és a jobb szélső csomópontban nulla; az ilyen további megkötést tartalmazó spline-okat “korlátozott” vagy “természetes” spline-oknak nevezzük. A rugalmasabb görbék elérése érdekében a csomók száma vagy a polinom fokozata növelhető. A csomópontok számának növelése túlillesztheti az adatokat és növelheti a varianciát, míg a csomópontok számának csökkentése merev és korlátozó függvényt eredményezhet, amely nagyobb torzítással jár.

Reprezentáció bázisfüggvényekkel

Tegyük fel, hogy az ismeretlen f függvényt egy fix csomósorozattal és fix d fokú spline függvénnyel reprezentáljuk. Mivel az utóbbi függvények egy V vektortérséget alkotnak, az f felírható

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

ahol a Bk a V-et definiáló bázisfüggvények halmaza, βk pedig a hozzá tartozó spline együtthatók. K csomó esetén k+1 d fokú polinom van d∗k kényszerekkel együtt, ami (d+1)(k+1)-d∗k=d+k+1 szabad paraméterekhez vezet ; egy természetes spline esetében k szabad paraméter van. Mivel βB=(βA)(A-1B)=γB∗ bármely nem szinguláris A mátrixra végtelen számú lehetséges alapkészlet létezik a spline illesztéshez.

A (2) ábrázolásnak megvan az az előnye, hogy az f becslése a βk együtthatók becslésére redukálódik. Pontosabban, a (2) kifejezés lineáris a β=(β1,…,βK+d+1) együtthatóvektorban. Ezért az f becslése olyan optimalizálási problémának tekinthető, amely lineáris a B1(X),…,BK+d+1(X) transzformált változókban, ami lehetővé teszi a spline-ok használatára jól bevált becslési technikák alkalmazását a (általánosított) többváltozós regressziós modellek széles körében. Fontos, hogy a spline-modellezés az f() függvények becslését valós értékű együtthatók kis halmazának becslésére csökkenti.

Amint arra több szerző is rámutatott (pl. a spline-modellezés nagyfokú rugalmassága számos hangolási paraméter árán valósul meg. Ezek közül kettő, a B alapfüggvények megválasztása és a mögöttes polinomok d fokozata kiderül, hogy kevés hatással van. Valójában a spline illesztések figyelemre méltóan robosztusak a d fokkal szemben. A kocka polinomok (d=3) a szokásos szabvány, mivel ezek olyan görbéket eredményeznek, amelyek az emberi szem számára tökéletesen simának tűnnek. Ha az illesztett görbék deriváltjai érdekesek, néha egy magasabb rend is megfelelő, de általában d>3 esetén az illesztések gyakorlatilag megkülönböztethetetlenek. A d=1 vagy d=2-es illesztések közel azonos statisztikai tulajdonságokkal rendelkeznek, de szaggatottabbnak tűnnek. A B és B∗ két alapkészlet közötti választás definíció szerint nem változtatja meg az illesztésből származó előrejelzéseket, és így kényelmi kérdésekre korlátozódik.

A két legfontosabb választás a csomópontok száma és távolsága, valamint egy büntetőfüggvény, pl. a spline integrált második deriváltjának használata (vagy nem használata). Ha nincs büntetés, az átalakított változók létrehozása külön is elvégezhető, és az új változókat egyszerűen beillesztjük egy standard modellillesztésbe; nincs szükség a mögöttes regressziós eljárás módosítására. Ezt a megközelítést gyakran regressziós spline-oknak nevezik; az így kapott nemlineáris függvény rugalmassága teljes mértékben a csomópontok számának függvénye. Ezzel szemben a simító büntetés beépítése az illesztési rutin módosítását igényli. Ezt minden regressziós függvénybe külön-külön kell beépíteni. Az így kapott simító spline-ok számos kívánatos tulajdonsággal rendelkeznek, de a simító függvény hozzáadott bonyolultsága lehet az oka annak, hogy nem használják gyakrabban az alkalmazott környezetben.

Noha jelentős kutatásokat végeztek a különböző spline-megközelítések matematikai tulajdonságainak feltárására (lásd , az alkalmazott statisztikusok és adatelemzők úgy tűnik, alig ismerik ezeket az eredményeket, amikor a spline-modellezést gyakorlati alkalmazásokban használják. Valójában a webes keresésünk által azonosított cikkek közül sok nem tartalmazott indoklást az alkalmazott spline-módszer kiválasztásának indoklásáról.

Népszerű spline-alapok

A Bk alapfüggvények meghatározására számos lehetőség van, ahol a különböző spline-alapok numerikus tulajdonságaik tekintetében különböznek . Ebben a szakaszban bemutatunk néhányat a legnépszerűbb spline-alapok közül, nevezetesen a csonka hatványsoros alapot, a B-spline-alapot és a kardinális spline-alapot.

Csonka hatványsoros és kubikus spline

A csonka hatványsoros alapot a

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

A fenti alapfüggvények előnye, hogy könnyen értelmezhetők: A d fokú “alap” polinomból kiindulva (az egyenlet első sora), az alappolinomtól való eltéréseket egymás után adjuk hozzá a spline-függvényhez minden egyes K csomópont jobb oldalán (második sor). A csonka hatványbázisú spline d-1-szer differenciálható a csomópontokban, és d+K szabadsági fokkal rendelkezik. Legyen x néhány megfigyelést reprezentál a , akkor egy d=3 fokú csonka hatványalapot lehet létrehozni 5 csomóponttal, amelyek egyenlő távolságra vannak egymástól az x tartomány mentén, az 1. kóddal a Kiegészítő fájl 1: Függelékben (1. ábra). 2).

2. ábra

Truppos polinomok harmadfokú (d=3) spline alapfüggvényei öt egyenlő távolságra lévő csomóval (K=5). Az 1. kiegészítő fájlban található 1. kóddal létrehozott ábra: Függelék

A csonka hatványsorok jellemzője, hogy a függvények támaszai nem lokálisak, néhány Bk az adatok teljes tartományában meghatározott . Ez egyes bázis spline-ok közötti magas korrelációkhoz vezethet, ami numerikus instabilitást jelent a spline becslésében. A csonka hatványsoros alapra egy példát a , 5. fejezetben találunk.

A kubikus spline-ok úgy jönnek létre, hogy két egymást követő csomópont közötti intervallumban egy köbös polinomot használunk. A spline-nak négy paramétere van minden egyes K+1 tartományban, mínusz három megkötés minden csomópontra, ami K+4 szabadságfokot eredményez.

Egy köbös spline függvény, három csomóponttal (τ1,τ2,τ3) 7 szabadságfokkal rendelkezik. A 2. egyenletben megadott ábrázolással a függvény a következőképpen írható fel:

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

B-spline

A B-spline alap egy gyakran használt spline alap, amely a köbös spline egy speciális parametrizációján alapul. A B-spline alap , a csomószekvencián

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

ahol a halmazok ξd+2 := τ1,…,ξd+K+1:=τK és ξd+1:=a,ξd+K+2:=b “belső csomóknak”, illetve “határcsomóknak” nevezzük. A további csomók ξ1,…,ξd és ξd+K+3,…,ξ2d+K+2 kiválasztása lényegében tetszőleges. Egy gyakori stratégia az, hogy ezeket a határcsomókkal egyenlővé tesszük. Alternatív megoldásként, ha a belső csomópontokat és a határcsomópontokat ξd+1<…<ξd+K+2 egyenlő távolságra választjuk, azaz, ξk+1-ξk=δ ∀k∈{d+1,…,d+K+1}, akkor a határcsomók elhelyezhetők a ξd+1-δ,…,ξd+1-d-δ és ξd+K+2+δ,…,ξd+K+2+d-δ pontokban.

D>0 esetén a d fokú B-spline alapfüggvényeket (jelölve \(B_{k}^{d}(x)\)) a rekurzív képlettel határozzuk megLábjegyzet 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} $$

ahol

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

és \(B_{k}^{0}(x) \equiv 0\) ha ξk=ξk+1. A B-spline-ok előnye, hogy az alapfüggvények lokális támasszal rendelkeznek. Pontosabban, a d+2 csomópont által közrefogott intervallumokban nullánál nagyobbak, máshol pedig nulla. Ez a tulajdonság nagy numerikus stabilitást eredményez, valamint egy hatékony algoritmust az alapfüggvények konstruálására, lásd részletesen.

Természetes köbös és kardinális spline-ok

Egy polinomiális spline, mint például a köbös vagy a B-spline, az adatok határainál hibás lehet. Ennek a problémának a megoldására a természetes spline-ok olyan köbös spline-ok, amelyeknek az a további megkötésük, hogy a határcsomópontok (-∞,a],, 4. fejezetben lineárisak.

A csonka hatványsoros természetes spline-ok, a B-spline és a kardinális spline alapja mellett számos más – kevésbé népszerű – alap létezik. Áttekintés céljából hivatkozunk .

Penalizált spline-ok

Az eddig bemutatott spline-okat gyakran nevezik regressziós spline-oknak. A spline alapjának (B-spline, csonka hatványsor stb.) megválasztása mellett a csomók számát és a csomópozíciót is meg kell választani. Nyilvánvaló, hogy ezek a hangolási paraméterek jelentős hatással lehetnek a spline-függvény becsült alakjára: A csomók nagy száma nagy rugalmasságot jelent, de az adott adatok túlzott illeszkedését is eredményezheti. Ezzel szemben a kis számú csomópont “túlsimított” becslést eredményezhet, amely hajlamos az alulilleszkedési torzításra (lásd ).

A spline-modellezésben a csomópozíció kiválasztásának megkönnyítésére szolgáló népszerű megközelítés a büntetett spline-ok használata. Adott egy i.i.d. adatminta (x1,y1),…(xn,yn), egy büntetett spline a probléma megoldása

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

ahol lβ a log-likelihoodot (ill, Cox-regresszió esetén a részleges log-likelihood), Jr pedig egy durvasági büntetés, amely akkor lesz kicsi, ha a spline-függvény “sima”. Általában a büntetett spline-ok azon az elképzelésen alapulnak, hogy az ismeretlen f függvényt egy nagyszámú csomóponttal rendelkező spline-nal modellezzük, ami nagyfokú rugalmasságot tesz lehetővé. Másrészt egy durva spline-becslés, amely nagy lβ értékkel rendelkezik és közel van az adatértékekhez, nagy Jβ értéket eredményez. E függvény maximalizálása tehát kompromisszumot jelent a simaság és a modellilleszkedés között, amelyet a λ≥0 hangolási paraméter vezérel.

Egy speciális eset a büntetett legkisebb négyzetek problémája

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

a Gauss-regresszióban. A büntetés \(J_{\beta } \,=\, \int _{a}^{b} \left (\partiális ^{2} f / \partiális x^{2}\right)^{2} dx\) egy spline függvény “simaságát” fejezi ki f második deriváltjával. adott λ esetén megmutatható, hogy a megoldás egy természetes köbös spline csomósorozattal x(1)<…<x(n), azaz, a csomópozíciókat nem kell megválasztani, hanem “természetesen” az X rendezett egyedi adatértékei adják meg. A szakirodalomban az ilyen típusú spline-t simító spline-nak nevezik. Megjegyzendő, hogy megmutatható, hogy a simító spline interpolálja az adatokat, ha λ=0, míg λ=∞ lineáris függvényt feltételez. Megjegyezzük, hogy a simító spline-ok a vékonylemezes spline-ok általánosabb osztályának egy speciális esete , amelyek lehetővé teszik a (3) egyenletben szereplő kritérium kiterjesztését magasabb dimenziós xi-re (lásd , 4.15. szakasz], és a részletekért).

A simító spline-ok kényelmes tulajdonsága, hogy a büntetés Jβ felírható β⊤Ωβ-ként egy megfelelően definiált Ω büntetési mátrix segítségével. Ezért (3) megoldását a büntetett legkisebb négyzetek becslése adja

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

ahol B egy n×n dimenziós mátrix, amely az adatértékeken kiértékelt természetes spline alapfüggvényeket tartalmazza. Az y vektor az y1,…,yn válaszértékeket tartalmazza. A gyakorlatban nagyon hatékony algoritmusok léteznek a (4) \(\hat {\beta }\) kiszámítására. Ahelyett, hogy egy természetes spline-alapot adnánk meg az f-hez, lehetőség van arra is, hogy korlátlan B-spline-alapokkal dolgozzunk, mivel a (3)-ban szereplő büntetés automatikusan megköveteli a linearitást az x(1) és x(n) csomópontoknál (lásd , 5. fejezet, és , 2. fejezet). A B-spline alapot tekintve a becslési eredmények nem függnek a határcsomópontok megválasztásától: vagy x(1) és x(n) használható határcsomópontként, vagy x(1) és x(n) felvehető a belső csomópontok halmazába.

Ha n nagy, és az intervallumot sűrűn lefedik a megfigyelt adatok, általában nem szükséges minden xi,i=1,…,n-nél csomópontot elhelyezni. Ehelyett a simító spline közelíthető egy büntetett regressziós spline-nal, amely csökkentett csomóhalmazt használ. A büntetett regressziós spline-ok nagyon népszerű osztálya a P-spline-ok, amelyek a köbös B-spline alapon és az egyenlő távolságra lévő csomók “nagy” halmazán (általában 10-40) alapulnak. A (3) integrál kiértékelése helyett a P-spline-ok egy másodrendű differenciabüntetésen alapulnak, amelyet a

$$$J^{*}_{\beta} = \sum\limits_{k=3}^{K+4} definíció határoz meg. \left(\Delta^{2} \beta_{k} \right)^{2} \,, $$

ami egyenletes távolságú csomók esetén megmutatható, hogy Jβ közelítése. A Δ2 másodrendű differenciaoperátor a következőképpen definiálható: Δ2βk:=(βk-βk-1)-(βk-1-βk-2). A büntetés tehát β⊤Pβ-ként fejezhető ki, ahol P a D⊤D definícióval határozható meg, ahol D a különbségek mátrixa. Könnyen levezethető, hogy a β eredő becslője ugyanolyan szerkezetű, mint a 2, azzal, hogy Ω helyébe P lép.

A P-spline-ok kényelmes tulajdonsága, hogy numerikusan stabilak és nagyon könnyen definiálhatók és implementálhatók. Különösen a D differenciamátrixot sokkal egyszerűbb felállítani, mint az Ω mátrixot. Emellett a Jβ büntetést (és így a D mátrixot is) egyszerűen kiterjeszthetjük magasabb rendű Δq különbségekre, ahol q>2. Lehetséges olyan csomósorozatot is használni, amely nem egyenletesen elosztott; ebben az esetben súlyokat kell bevezetni. Mivel a gyakorlatban ritkán használnak P-spline-okat nem egyenetlenül elosztott csomókkal, itt nem foglalkozunk velük, és helyette a

Smoothing splines és a P-spline-ok bizonyos mértékig megoldják a csomóválasztás problémáját. Filozófiájuk az, hogy nagyszámú csomót használnak, majd hagyják, hogy λ szabályozza a simítás mértékét. Ez egy extra hangolási paramétert eredményez, és nincs általános konszenzus arról, hogy hogyan hangoljuk ezt a paramétert. Néhány népszerű módszer a λ “optimális” értékének meghatározására az általánosított keresztellenőrzést (GCV), az AIC-t vagy a vegyes modell reprezentációt használja.

Splines in R

Az R alap telepítési csomagja tartalmaz egy sor olyan függvényt, amelyekkel egyszerű polinomiális spline-ok és simító spline-ok illeszthetők. További függvényeket tartalmaz a DM Bates és WN Venables által írt splines könyvtár. A csomag hosszú évek óta a spline-illesztés munkagépe, és ma már az R alapdisztribúciójának része. Több mint 100 másik csomag van, amelyek betöltése a splines-tól függ. A csomag számos, széles körben használt függvényt tartalmaz a spline-alapok létrehozására, mint például a bs a B-spline-okhoz és az ns a természetes spline-okhoz, de tartalmaz néhány speciálisabb függvényt is az alapfüggvények létrehozására (mint például a periodicSpline, amely periodikus interpolációs spline-okat hoz létre) vagy olyan hasznos parancsokat, mint a predict parancs.bSpline, amely egy spline-t értékelne ki X új értékeinél.

Az alapértelmezett bs értékek egy köbös B-spline alapot hoznak létre két határcsomóval és egy belső csomóval, amely a megfigyelt adatértékek mediánjánál helyezkedik el. A felhasználó nagyobb rugalmasságot érhet el a csomópontok elhelyezésének és számának növelésével és/vagy helyük megváltoztatásával. A 3. ábra (2. kód az 1. kiegészítő fájlban: Függelék) különböző opciókkal létrehozott B-spline-okat mutat. A felső rész lineáris spline-okat, azaz első rendű (egyfokú) polinomokat mutat, amelyek egyenlő távolságra lévő csomópontokon kapcsolódnak egymáshoz. Az alsó rész köbös polinomokat mutat be (3. fok).

3. ábra

B-spline alap a library splines bs parancsával. Balra fent: Első fokú spline alap három szabadsági fokkal. Jobbra fent: Elsőfokú Spline-alap négy szabadsági fokkal. Balra lent: Kubikus spline-alap három szabadsági fokkal. Jobbra lent: Kubikus spline-alap négy szabadsági fokkal. A #2

kóddal létrehozott grafikonok Megjegyzendő, hogy az R-ben a bs() segítségével létrehozott B-spline-ok automatikusan az adatok tartományával vannak behatárolva, és a további csomópontok (τ1,…,τd) a határcsomópontokkal egyenlők, így a tartomány mindkét végén több csomópontot kapunk. Ez a megközelítés hasznos az egyváltozós esetekben, és rendelkezik néhány számítási szempontból vonzó tulajdonsággal. Ha azonban kétdimenziós simítási problémán dolgozunk, B-spline-ok tenzortermékeivel, vagy ha P-spline-okkal dolgozunk, ez az alap nem megfelelő, és téves eredményekhez vezethet.

A természetes spline-ok létrehozhatók a splines csomagon belül, az ns parancs segítségével. Alapértelmezés szerint, ha a felhasználó nem adja meg sem a szabadságfokokat, sem a csomópontokat, a függvény egy egyenest ad vissza a határcsomópontokon belül. A 4. ábra (3. kód a Additional file 1: Appendix-ben) különböző opciókkal létrehozott természetes spline-okat mutat.

4. ábra

Naturális köbös spline alapja az ns parancs használatával a splines könyvtárban. Balra fent: Spline alap két szabadsági fokkal. Jobbra fent: Spline-alap három szabadsági fokkal. Balra lent: Spline-alap négy szabadsági fokkal. Jobbra lent: Spline-alap öt szabadsági fokkal. Created with Code#3

Azért, hogy szemléltessük, hogyan használhatók ezek a függvények a gyakorlatban, tekintsük újra a 2.0.1. szakasz adatait. Az 5. ábra (amelyet a (4. kód az 1. kiegészítő fájlban: Függelék) készített) a következő parancsok használatával kapott illesztéseket mutatja: poly() az egyszerű ortogonális polinomikus spline-okhoz, smooth.spline() a simító spline-okhoz, bs() és ns() a library splines-okból a B-spline-okhoz, illetve a természetes spline-okhoz. A bal felső grafikon egy egyszerű lineáris illesztést mutat az adatokra (szaggatott vonal) és egy harmadfokú polinomiális illesztést, amely képes megragadni a változók közötti összetettebb kapcsolatot. A jobb felső sarokban lévő grafikon azonban különösen érdekes, mivel a spline-függvények alapértelmezett értékeit használó illesztéseket mutatja be. A zöld vonal a poly() és ns() függvényekből származik, amelyek alapértelmezés szerint mindkettő egyenes vonalat határoz meg. A másik véglet, a kék vonal a smooth.spline() függvény illesztése, amely, ha nincs szabadsági fok megadva, hajlamos alulsimítani az adatokat, azaz egy nagyon rugalmas, kacskaringós illesztést produkál, amely itt 45 szabadsági fokon alapul. Négy szabadsági fok megadásával -látványosan- elfogadható illeszkedés érhető el az adatokhoz (bal alsó grafikon). Látható, hogy a választott alaptól függően vannak különbségek. A polinomiális alap (fekete vonal) egy kicsit rugalmasabb, mint a többi, különösen a magasabb életkoroknál. Másrészt a mindössze négy szabadsági fokra korlátozott simító spline merevebb, mint a többi megközelítés, de valószínűleg túlsimítja az adatokat a kis életkoroknál, a 0. és 10. év között. A két véglet között a B-spline-ok és a természetes spline-ok nagyon hasonló illesztést biztosítanak, amelyek megragadják a kis életkorok hatását, és általában kevésbé befolyásolják őket az életkori spektrum végén lévő szélsőséges esetek. Végül a jobb alsó grafikon azt mutatja, hogy az illesztések mennyivel rugalmasabbá válnak a további szabadsági fokok növelésével, és a túlzott szabadsági fokok használatából eredő esetleges túlillesztési torzításra utal.

5. ábra

A nyugat-afrikai 892 nő esetében az életkor és a triceps skinfold vastagságának ábrázolása években kifejezve. Balra fent: A szaggatott vonal egyszerű lineáris illesztést, a folytonos vonal rugalmas harmadfokú polinomokat alkalmazó illesztést jelent. Jobbra fent: Splines illesztés alapértelmezett R értékek használatával. A zöld vonal egy 1. fokú polinomiális spline eredménye (a poly függvény alapértelmezett értéke, és egy természetes spline illesztése szabadsági fokok megadása nélkül (az ns függvények alapértelmezett értéke). A piros vonal egy három szabadsági fokú b-spline-ból származik (bs függvény), a kék vonal pedig egy simító spline-ból (smooth.spline függvényből). Balra lent: A fekete vonal polinomiális illesztés, a piros vonal b-splines illesztés, a zöld vonal természetes splines illesztés és simító spline, mindegyiket négy szabadsági fokkal definiálva. Jobbra lent: Ugyanezek a függvények 10 szabadsági fokkal definiálva. Created with Code #4

Egy megjegyzés a szabadságfokokról

A gyakorlatban mindig hasznos egy spline-t szabadságfokok szerint definiálni. Ez a megközelítés különösen hasznos, amikor B-spline-okkal és természetes spline-okkal dolgozunk. A B-spline-oknak d+K, míg egy természetes köbös spline alapfüggvénynek K csomóval K+1 szabadságfoka van. Alapértelmezés szerint az R-ben a bs függvény 3. fokú B-spline-okat hoz létre belső csomópontok nélkül és az X változó tartományában meghatározott határcsomópontokkal. A függvény így három alapfüggvényt hoz létre. Tekintsük most a következő esetet: ha a felhasználó egy B-spline-t definiál egy belső csomóval az X mediánjánál (bs(x,knots=median(x))), akkor a szoftver négy függvényt hoz létre (d=3 plusz K=1 belső csomó, négy szabadsági fok). Ha azonban a felhasználó a függvényben megadja a határcsomópontokat a csomópontok argumentumon belül (bs(x,knots=c(min(x),median(x),max(x))))), akkor a függvény hat szabadságfokot kap (d=3 plusz k=3). Hasonló óvatossággal kell eljárni az ns függvény esetében is.

A simító spline-okkal való munka során nem könnyű megadni a szabadságfokokat, mivel azok a büntetés nagyságától függően változnak. A gyakorlatban azonban a büntetett spline-ok is korlátozhatók a szabadságfokok maximális számára vagy a kívánt szabadságfokokra.

Más spline-csomagok

A spline-csomagok bővített listája nagyjából vagy az itt bemutatottakhoz nagyon hasonló megközelítéseket tartalmaz, vagy nagyon speciális, speciális alkalmazásokat célzó eseteket. Az 1. táblázatban néhány ilyen csomagot mutatunk be a letöltések számával együtt. A számok a csomag letöltéseinek számára vonatkoznak, de nem az egyedi felhasználókra. E munka keretein túlmutat az összes ilyen megközelítés részletes ismertetése.

1. táblázat A spline-ok létrehozásához használt R-csomagok

Táblázat

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.