A review of spline function procedures in R

Termi ’spline’ viittaa käsityöläisen työkaluun, joustavaan ohueen puu- tai metalliliuskaan, jota käytetään sileiden käyrien laatimiseen. Useita painoja käytettäisiin eri kohdissa, jotta liuska taipuisi niiden lukumäärän ja sijainnin mukaan. Se pakotettaisiin kulkemaan kiinteiden pisteiden läpi: metallitappien, veneen kylkiluiden jne. läpi. Tasaisella pinnalla nämä olivat usein painoja, joihin oli kiinnitetty koukku, joten niitä oli helppo käsitellä. Taivutetun materiaalin muoto olisi luonnollisesti spline-käyrän muotoinen. Vastaavasti splineja käytetään tilastotieteessä joustavien muotojen matemaattiseen toistamiseen. Solmuja sijoitetaan useisiin paikkoihin aineistossa, jotta voidaan tunnistaa kohdat, joissa vierekkäiset funktionaaliset kappaleet yhdistyvät toisiinsa. Metalli- tai puuraitojen sijasta valitaan sileitä funktionaalisia kappaleita (yleensä matalan kertaluvun polynomeja), jotka sopivat dataan kahden peräkkäisen solmun välissä. Polynomin tyyppi sekä solmujen lukumäärä ja sijoittelu määrittelevät sitten splinen tyypin.

Motivoiva esimerkki

Yleistettyjen additiivisten mallien (GAM-mallien) käyttöönoton myötä vuonna 1986 splinemallinnuksesta on tullut vakiintunut työkalu tilastollisessa regressioanalyysissä. Tämän havainnollistamiseksi tarkastellaan tietoja 892:sta alle 50-vuotiaasta naisesta, jotka on kerätty kolmessa kylässä Länsi-Afrikassa (tiedot saatavilla Additional file 1: Appendix). Haluaisimme tutkia iän (vuosina) ja karkean ruumiinrasvamittarin, triceps skinfoldin paksuuden, välistä suhdetta. Kuvassa 1 esitetään iän ja triceps skinfold-paksuuden välinen suhde logaritmisella asteikolla mitattuna. Katkoviiva edustaa yksinkertaista lineaarista sovitusta, yhtenäinen viiva sovitusta, jossa käytetään joustavia kolmannen asteen polynomeja

Yksinkertainen regressiomalli muotoa yi=β0+β1xi+ε,i=1,…,n, tuskin antaisi likimainkaan havaittua kuviota, koska on ilmeistä, että suhde ei ole lineaarinen. Mallia voidaan laajentaa epälineaaristen vaikutusten huomioon ottamiseksi käyttämällä joitakin polynomeja. Tällöin epälineaariset vaikutukset voitaisiin mallintaa polynomilla, jonka aste on 3 ja joka saadaan seuraavasti:

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

jossa u on x:stä riippuvainen funktio, jota kutsutaan nimellä perusväyläfunktio (basis function), ja se on määritelty seuraavasti:

$$U=\left $$

Yhtälössä 1 kuvattu regressiomalli on edelleen lineaarinen malli huolimatta siitä, että se antaa epälineaarisen funktion ennustemuuttujasta. Malli on edelleen lineaarinen kertoimien osalta, ja se voidaan sovittaa tavallisilla pienimmän neliösumman menetelmillä. Perusta voidaan luoda R:ssä käyttämällä funktiota poly(x,3), jonka syötteet ovat x (viittaa muuttujaan) ja p (viittaa polynomin asteeseen). Tämä johtaa yksinkertaiseen yksimuuttujaiseen sileään malliin, joka on muotoa: yi=f(xi)+ε, jossa f() on jokin ennustajan funktio/muunnos. Tällainen malli voidaan helposti sovittaa R:ssä käyttämällä: lm(y ∼poly(x,3)). Yksinkertaisuudestaan huolimatta polynomiregressiolla on useita haittoja, joista tärkein on epälokaalisuus. Se tarkoittaa, että sovitettu funktio tietyssä arvossa x0 riippuu kaukana tästä pisteestä sijaitsevista data-arvoista. Tämä on helppo nähdä käytännössä sovittamalla polynomi datajoukkoon ja siirtämällä yhtä datapistettä lähellä oikeaa reunaa ylös- tai alaspäin. Tämän seurauksena sovitettu funktio muuttuu yleensä kaukana kyseisestä x-koordinaatista.

Harkitse globaalin polynomin sovittamisen sijasta x:n alueen jakamista pienempiin väleihin käyttämällä mielivaltaista pistemäärää ja sijaintia τ, jota kutsutaan myös solmuiksi. Yksinkertainen paloittain jatkuva malli voidaan sovittaa määrittelemällä funktiot: f1(x)=1,f2(x)=x,f3(x)=(x-τ1)+,f4(x)=(x-τ2)+,…, jossa ”+” funktio määritellään seuraavasti:

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

Näiden funktioiden joukko johtaa yhdistettyyn funktioon f(x).

Splinesin määritelmä

Piirustuksen metallinen spline voi saada mielivaltaisia muotoja, esimerkiksi lentokoneen siiven poikkileikkauksen tai keskipakopumpun spiraalin. Tilastollisia sovelluksia varten oletamme käyrät muodoltaan f(X), eli yksi y-arvo jokaiselle x:lle. Ennustaja x voi olla yksi muuttuja tai useita muuttujia. Keskustelumme keskittyy lähes kokonaan yksimuuttujaiseen funktioon, jonka \(X\in \mathbb {R}\). Määritellään solmujen joukko τ1<…<τK alueella X. Spline f(X) on sileä funktio, joka täyttää tietyt jäljempänä mainitut differentioituvuusominaisuudet ja joka on sellainen, että f(X) on polynomi, jonka aste on d. Puu- tai metallisilla splineillä on jatkuvat derivaatat kaikissa järjestysasteissa, koska ne ovat fysikaalinen kohde. Tämä ei päde tilastollisiin splineihin. Pikemminkin asetamme tasaisuuskriteerin, jonka mukaan kaikki derivaatat, joiden järjestys on pienempi kuin d, ovat jatkuvia. Fysikaalinen spline on lineaarinen viimeisen solmun jälkeen, ja voimme asettaa lisärajoituksen, jonka mukaan derivaatat, joiden järjestys on vähintään 2, ovat nolla vasemman- ja oikeanpuoleisimmissa solmuissa; splineja, joilla on tämä lisärajoitus, kutsutaan ”rajoitetuiksi” tai ”luonnollisiksi” splineiksi. Joustavampien käyrien saamiseksi solmujen lukumäärää tai polynomin astetta voidaan lisätä. Solmujen lukumäärän lisääminen saattaa sovittaa datan liikaa ja lisätä varianssia, kun taas solmujen lukumäärän vähentäminen voi johtaa jäykkään ja rajoittavaan funktioon, jossa on enemmän harhaa.

Esitys perusfunktioiden avulla

Asettakaamme, että tuntematon funktio f esitetään spline-funktiolla, jolla on kiinteä solmujakso ja kiinteä aste d. Koska jälkimmäiset funktiot muodostavat vektoriavaruuden V, on mahdollista kirjoittaa f seuraavasti:

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

jossa Bk on joukko V:n määritteleviä perusfunktioita ja βk ovat niihin liittyvät spline-kertoimet. Kun solmuja on k, on olemassa k+1 polynomia, joiden aste on d, sekä d∗k rajoituksia, mikä johtaa (d+1)(k+1)-d∗k=d+k+1 vapaaseen parametriin ; luonnolliselle splinelle on k vapaata parametria. Koska βB=(βA)(A-1B)=γB∗ mille tahansa ei-singulaariselle matriisille A on ääretön määrä mahdollisia perusjoukkoja spline-sovitusta varten.

Kohdan (2) esitystavan etuna on, että f:n estimointi pelkistyy kertoimien βk estimointiin. Tarkemmin sanottuna lauseke (2) on lineaarinen kerroinvektorin β=(β1,…,βK+d+1) suhteen. Näin ollen f:n estimointia voidaan tarkastella optimointiongelmana, joka on lineaarinen muunnetuissa muuttujissa B1(X),…,BK+d+1(X), mikä mahdollistaa vakiintuneiden estimointitekniikoiden käyttämisen splinien käyttöön monissa (yleistetyissä) monimuuttujaisissa regressiomalleissa. Tärkeää on, että spline-mallinnus pelkistää funktioiden f() estimoinnin pienen joukon reaaliarvoisten kertoimien estimoinniksi.

Kuten useat kirjoittajat ovat huomauttaneet (esim. spline-mallinnuksen suuri joustavuus tulee useiden viritysparametrien hinnalla. Näistä kahdella, perusfunktioiden B valinnalla ja taustalla olevien polynomien asteella d, osoittautuu olevan vain vähän vaikutusta. Kuutiopolynomit (d=3) ovat tavanomainen standardi, koska ne johtavat käyrille, jotka näyttävät ihmissilmälle täysin sileiltä. Jos sovitettujen käyrien derivaatat ovat kiinnostavia, korkeampi aste on joskus tarkoituksenmukainen, mutta yleensä sovitukset d>3:lla ovat käytännössä erottamattomia. Sovituksilla d=1 tai d=2 on lähes identtiset tilastolliset ominaisuudet, mutta ne näyttävät epätasaisemmilta. Valinta kahden perusjoukon B ja B∗ välillä ei määritelmän mukaan muuta sovituksesta saatavia ennusteita, joten kyse on mukavuuskysymyksistä.

Kaksi keskeistä valintaa ovat solmujen lukumäärä ja solmuväli sekä rangaistusfunktion, esim. splinen integroidun toisen derivaatan, käyttö (tai käyttämättä jättäminen). Kun rangaistusfunktiota ei käytetä, muunnettujen muuttujien luominen voidaan tehdä erikseen ja uudet muuttujat yksinkertaisesti sisällytetään tavanomaiseen mallin sovitukseen; taustalla olevaa regressiomenettelyä ei tarvitse muuttaa. Tätä lähestymistapaa kutsutaan usein regressiosplineiksi; tuloksena syntyvän epälineaarisen funktion joustavuus riippuu täysin solmujen lukumäärästä. Tasoitusrangaistuksen sisällyttäminen edellyttää sitä vastoin sovitusrutiinin muuttamista sen huomioon ottamiseksi. Tämä on sisällytettävä kuhunkin regressiofunktioon erikseen. Tuloksena syntyvillä tasoittavilla splineilla on useita toivottavia ominaisuuksia, mutta tasoittavan funktion tuoma ylimääräinen monimutkaisuus voi olla syy siihen, että niitä ei käytetä useammin soveltavissa sovelluksissa.

Vaikka eri spline-lähestymistapojen matemaattisten ominaisuuksien selvittämiseksi on tehty huomattavia tutkimuksia (ks. , soveltavat tilastotieteilijät ja data-analyytikot tuskin tuntuvat olevan tietoisia näistä tuloksista, kun he käyttävät spline-mallinnusta käytännöllisissä sovelluksissa. Itse asiassa monet verkkohaun avulla löydetyistä artikkeleista eivät sisältäneet minkäänlaisia perusteluja käytetyn spline-menetelmän valintaan.

Suosittu spline-pohja

Pohjafunktioiden Bk määrittelyyn on lukuisia vaihtoehtoja, joissa eri spline-pohjat eroavat toisistaan numeeristen ominaisuuksiensa suhteen . Tässä jaksossa esitellään joitakin suosituimpia splinepohjia, nimittäin typistetyn potenssisarjan pohja, B-splinepohja ja kardinaalisplinepohja.

Typistetty potenssisarja ja kuutio-splinit

Typistetyn potenssisarjan pohja määritellään perusfunktioilla

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

Yllämainittujen perusvälifunktioiden etuna on, että niitä on helppo tulkita: Lähtökohtana on asteen d ”perus” polynomi, joka on määritelty (yhtälön ensimmäinen rivi), ja poikkeamat peruspolynomista lisätään peräkkäin spline-funktioon kunkin K solmun oikealle puolelle (toinen rivi). Lyhennetty potenssipohjainen spline on d-1 kertaa differentioituva solmujen kohdalla ja sillä on d+K vapausastetta. Käyttäjän on suhteellisen helppoa luoda typistetty potenssisarja R:ssä. Olkoon x joitakin havaintoja vuonna , niin typistetty potenssipohja, jonka aste on d=3 ja jossa on 5 solmua tasaisin välimatkoin pitkin x:n aluetta, voidaan luoda käyttämällä koodia 1, joka on Additional file 1: Appendix (Kuva 1). 2).

Kuva 2

Kolmannen asteen (d=3) typistettyjen polynomien spline-perusfunktiot, joissa on viisi tasaisin välimatkoin olevaa solmua (K=5). Kuvaaja luotu käyttäen koodia #1 Additional file 1: Appendix

Karsittujen potenssisarjojen ominaispiirre on, että funktioiden tuet eivät ole paikallisia, vaan osa Bk:sta on määritelty koko data-alueella . Tämä saattaa johtaa suuriin korrelaatioihin joidenkin perussplineiden välillä, mikä merkitsee numeerista epävakautta spline-estimoinnissa. Lyhennettyjen potenssisarjojen perustasta annetaan esimerkki luvussa , luku 5.

Kuutiolliset splinit luodaan käyttämällä kuutiopolynomia kahden peräkkäisen solmun välissä. Splinellä on neljä parametria jokaisella K+1 alueella miinus kolme rajoitusta kullekin solmulle, jolloin saadaan K+4 vapausastetta.

Kuutiollisella splinifunktiolla, jossa on kolme solmua (τ1,τ2,τ3), on 7 vapausastetta. Kun käytetään yhtälössä 2 annettua esitystä, funktio voidaan kirjoittaa seuraavasti:

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

B-spline-pohja on yleisesti käytetty splinepohja, joka perustuu kuutiosplineen erityiseen parametrisointiin. B-spline-pohja , perustuu solmusekvenssiin

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

missä joukot ξd+2 := τ1,…,ξd+K+1:=τK ja ξd+1:=a,ξd+K+2:=b kutsutaan vastaavasti ”sisäsolmuiksi” ja ”rajasolmuiksi”. Lisäsolmujen ξ1,…,ξd ja ξd+K+3,…,ξ2d+K+2 valinta on periaatteessa mielivaltainen. Yleinen strategia on asettaa ne samoiksi kuin rajasolmut. Vaihtoehtoisesti, jos sisäiset solmut ja rajasolmut ξd+1<…<ξd+K+2 valitaan yhtä kaukaisiksi, ts, ξk+1-ξk=δ ∀k∈{d+1,…,d+K+1}, reunasolmut voidaan sijoittaa ξd+1-δ,…,ξd+1-d-δ ja ξd+K+2+δ,…,ξd+K+2+d-δ.

Jos d>0, asteen d B-spline-perusfunktiot (merkitään \(B_{k}^{d}(x)\)) määritellään rekursiivisella kaavallaAlaviite 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} $$

missä

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

ja \(B_{k}^{0}(x) \equiv 0\) jos ξk=ξk+1. B-splinien etuna on, että perusfunktioilla on paikallinen tuki. Tarkemmin sanottuna ne ovat nollaa suurempia d+2 solmun kattamilla väleillä ja nolla muualla. Tämä ominaisuus johtaa suureen numeeriseen stabiilisuuteen ja myös tehokkaaseen algoritmiin perusfunktioiden konstruoimiseksi, ks. tarkemmin.

Luonnolliset kuutio- ja kardinaalisplinit

Polynomisplini, kuten kuutio- tai B-splini, voi olla epäsäännöllinen datan rajoilla. Tämän ongelman ratkaisemiseksi luonnolliset splinit ovat kuutiollisia splineja, joilla on lisärajoitteena se, että ne ovat lineaarisia rajasolmujen (-∞,a],, Luku 4.

Katkotun potenssisarjan luonnollisten splinien, B-spline- ja kardinaalisplinepohjien lisäksi on olemassa useita muita – vähemmän suosittuja – pohjia. Yleiskatsauksen saamiseksi viitataan kirjoihin.

Penetetyt splinit

Tähän mennessä esiteltyjä splineja kutsutaan usein regressiosplineiksi. Splinepohjan valinnan (B-spline, typistetty potenssisarja jne.) lisäksi on valittava solmujen lukumäärä ja solmujen sijainti. Näillä viritysparametreilla voi luonnollisesti olla merkittävä vaikutus splinifunktion estimoituun muotoon: Suuri solmujen määrä merkitsee suurta joustavuutta, mutta se voi myös johtaa siihen, että käsillä olevaan dataan sovitetaan liikaa. Vastaavasti pieni määrä solmuja voi johtaa ”ylisileään” estimaattiin, joka on altis alipitävyysvirheille (ks. ).

Suosittu lähestymistapa solmujen sijainnin valinnan helpottamiseksi spline-mallinnuksessa on rangaistujen splinejen käyttö. Annettuna i.i.d. otos datasta (x1,y1),…(xn,yn), rangaistusspline on ratkaisu ongelmaan

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

jossa lβ tarkoittaa log-likelihoodia (tai, Cox-regression tapauksessa osittaista log-likelihoodia) ja Jr on karkeusrangaistus, josta tulee pieni, jos spline-funktio on ”sileä”. Yleensä rangaistut splinit perustuvat ajatukseen, että tuntematon funktio f mallinnetaan splinillä, jossa on suuri määrä solmuja, mikä mahdollistaa suuren joustavuuden. Toisaalta karkea spline-estimaatti, jolla on suuri lβ-arvo ja joka on lähellä data-arvoja, johtaa suureen Jβ-arvoon. Tämän funktion maksimointi merkitsee siis kompromissia tasaisuuden ja mallin sopivuuden välillä, jota ohjataan viritysparametrilla λ≥0.

Erikoistapaus on rangaistujen pienimmän neliösumman ongelma

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

Gaussin regressiossa. Rangaistus \(J_{\beta } \,=\, \int _{a}^{b} \left (\partial ^{2} f / \partial x^{2}\right)^{2} dx\) ilmaisee splinifunktion ”sileyden” f:n toisen derivaatan suhteen. Annetuille λ:lle voidaan osoittaa, että ratkaisu on luonnollinen kuutiomainen splini, jonka solmusekvenssi x(1)<…<x(n), ts, solmujen paikkoja ei tarvitse valita, vaan ne annetaan ”luonnollisesti” X:n järjestetyistä ainutkertaisista data-arvoista. Kirjallisuudessa tämäntyyppistä splinea kutsutaan tasoittavaksi splineksi . Huomattakoon, että voidaan osoittaa, että tasoittava spline interpoloi dataa, jos λ=0, kun taas λ=∞ merkitsee lineaarista funktiota. Huomattakoon, että tasoittavat splinit ovat erikoistapaus yleisemmästä luokasta ohutlevysplinit , jotka mahdollistavat yhtälön (3) kriteerin laajentamisen korkeampiulotteisempiin xi:iin (ks. , jakso 4.15], ja yksityiskohdat).

Tasoittavien splinien kätevä ominaisuus on se, että rangaistussakko Jβ voidaan kirjoittaa muotoon β⊤Ωβ, kun rangaistussakko on sopivasti määritelty rangaistussakkomatriisi Ω. Näin ollen (3) ratkaisu saadaan rangaistulla pienimmän neliösumman estimaatilla

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

jossa B on dimensioltaan n×n oleva matriisi, joka sisältää datan arvoilla evaluoidut luonnolliset splinen perusfunktiot. Vektori y sisältää vastearvot y1,…,yn. Käytännössä on olemassa erittäin tehokkaita algoritmeja (4) kohdan \(\hat {\beta }\) laskemiseksi. Sen sijaan, että f:lle määritettäisiin luonnollinen splinepohja, voidaan käyttää myös rajoittamatonta B-splinepohjaa, koska (3):n rangaistus asettaa automaattisesti lineaarisuusrajoitukset solmujen x(1) ja x(n) kohdalla (ks. , luku 5 ja , luku 2). B-spline-pohjan osalta estimointitulokset eivät riipu rajasolmujen valinnasta: voidaan joko käyttää x(1) ja x(n) rajasolmuina tai sisällyttää x(1) ja x(n) sisempien solmujen joukkoon.

Jos n on suuri ja havainnoitu aineisto peittää tiheästi intervallin, ei yleensä ole tarpeellista sijoittaa solmua jokaiseen xi,i=1,…,n. Sen sijaan tasoittavaa splinea voidaan approksimoida rangaistulla regressiosplineella, joka käyttää suppeampaa joukkoa solmuja. Erittäin suosittu rangaistujen regressiosplinesien luokka ovat P-splines , jotka perustuvat kuutiomaiseen B-spline-perustaan ja ”suureen” joukkoon tasavälisiä solmuja (yleensä 10-40). Sen sijaan, että arvioitaisiin integraalia (3), P-splinit perustuvat toisen asteen erorangaistukseen, joka määritellään seuraavasti:

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

, jonka voidaan osoittaa olevan tasaisten solmujen tapauksessa approksimaatio Jβ:lle. Toisen kertaluvun erooperaattori Δ2 määritellään seuraavasti: Δ2βk:=(βk-βk-1)-(βk-1-βk-2). Rangaistus voidaan siis ilmaista muodossa β⊤Pβ, jossa P on määritelty kaavalla D⊤D, jossa D on erotusmatriisi. On helppo johtaa, että tuloksena saatava β:n estimaattori on rakenteeltaan samanlainen kuin 2, kun Ω on korvattu P:llä.

P-splinien kätevä ominaisuus on, että ne ovat numeerisesti stabiileja ja erittäin helppoja määritellä ja toteuttaa. Erityisesti differenssimatriisi D on paljon helpompi määrittää kuin matriisi Ω. Lisäksi on suoraviivaista laajentaa rangaistus Jβ (ja siten matriisi D) korkeamman kertaluvun differensseihin Δq, kun q>2. On myös mahdollista käyttää solmusekvenssiä, joka ei ole tasaisin välein; tällöin on otettava käyttöön painot. Koska P-splineja, joissa solmut ovat epätasaisin välein, käytetään käytännössä harvoin, emme käsittele niitä tässä ja viittaamme niiden sijaan.

Smoothing splines ja P-splines poistavat jossain määrin solmujen valintaan liittyvän ongelman. Niiden filosofia on käyttää suurta määrää solmuja ja antaa λ:n kontrolloida sileyden määrää. Tämä johtaa yhteen ylimääräiseen viritysparametriin, jonka virittämisestä ei ole yleistä yksimielisyyttä. Jotkut suositut tavat määrittää λ:n ”optimaalinen” arvo käyttävät yleistettyä ristiinvalidointia (GCV), AIC:tä tai sekamalliesitystä .

Splines in R

R:n perusasennuspaketti sisältää joukon funktioita, joilla voidaan sovittaa yksinkertaisia polynomisia splineja ja tasoittavia splineja. Lisää funktioita on DM Batesin ja WN Venablesin kirjoittamassa kirjastossa splines. Paketti on ollut splinien sovittamisen työjuhta monien vuosien ajan, ja se on nyt osa R:n perusjakelua. On yli 100 muuta pakettia, jotka latautuessaan ovat riippuvaisia splinesista. Paketti sisältää useita funktioita splinepohjien luomiseen, kuten bs B-splineille ja ns luonnollisille splineille, jotka ovat laajalti käytettyjä, mutta myös joitakin erikoistuneempia funktioita perusfunktioiden luomiseen (kuten periodicSpline, joka luo jaksollisen interpolointisplinesin) tai komentoja, jotka ovat hyödyllisiä, kuten komento predict.bSpline, joka arvioisi splinen uusilla X:n arvoilla.

Bs:n oletusarvot luovat kuutiomaisen B-spline-pohjan, jossa on kaksi rajasolmua ja yksi sisäsolmu, joka on sijoitettu havaittujen data-arvojen mediaaniin. Käyttäjä voi lisätä joustavuutta lisäämällä solmujen sijoittelua ja lukumäärää ja/tai muuttamalla niiden sijaintia. Kuvassa 3 (koodi 2 lisätiedostossa 1: lisäys) esitetään eri vaihtoehdoilla luotuja B-splineja. Ylemmässä osassa esitetään lineaariset splinit eli ensimmäisen kertaluvun polynomit (aste on yksi), jotka on yhdistetty toisiinsa yhtä kaukaisilla solmuilla. Alemmassa osassa esitetään kuutiopolynomeja (aste 3).

Kuva 3

B-spline-pohja käyttäen bs-komentoa kirjastossa splines. Ylhäällä vasemmalla: Ensimmäisen asteen splinepohja, jossa on kolme vapausastetta. Ylhäällä oikealla: Ensimmäisen asteen splinepohja neljällä vapausasteella. Alhaalla vasemmalla: Kuutiosplinepohja kolmella vapausasteella. Alhaalla oikealla: Kuutiosplinepohja neljällä vapausasteella. Koodilla #2

luodut kuvaajat

On huomattava, että R:ssä bs()-ohjelmalla luodut B-splinet rajoittuvat automaattisesti datan alueeseen ja että lisäsolmut (τ1,…,τd) asetetaan yhtä suuriksi kuin rajasolmut, jolloin saadaan useampia solmuja molempiin päihin aluetta. Tämä lähestymistapa on hyödyllinen yksimuuttujaisissa tapauksissa, ja sillä on joitakin laskennallisesti houkuttelevia ominaisuuksia. Jos kuitenkin työstetään kaksiulotteista tasoitusongelmaa, käytetään B-splinesin tensorituotteita tai työskenneltäessä P-splinesin kanssa, tämä perusta ei sovellu ja voi johtaa virheellisiin tuloksiin.

Luonnolliset splinit voidaan luoda splines-paketissa komennolla ns. Oletusarvoisesti, ellei käyttäjä määritä joko vapausasteita tai solmuja, funktio palauttaa suoran viivan rajasolmujen sisällä. Kuvassa 4 (koodi 3 Additional file 1: Appendix) on esitetty eri vaihtoehdoilla luotuja luonnollisia splineja.

Kuva 4

Luonnollisen kuutiollisen splinen perusta käyttämällä komentoa ns kirjastossa splines. Ylhäällä vasemmalla: Splinepohja kahdella vapausasteella. Ylhäällä oikealla: Splinepohja kolmella vapausasteella. Alhaalla vasemmalla: Spline-pohja neljällä vapausasteella. Alhaalla oikealla: Spline-pohja viidellä vapausasteella. Created with Code#3

Jotta voidaan havainnollistaa, miten näitä funktioita voidaan käyttää käytännössä, tarkastellaan jälleen kohdan 2.0.1 tietoja. Kuvassa 5 (luotu (koodi 4 lisätiedostossa 1: lisäys)) esitetään sovitukset, jotka on saatu käyttämällä seuraavia komentoja: poly() yksinkertaisille ortogonaalisille polynomisille splineille, smooth.spline() tasoittaville splineille, bs() ja ns() kirjaston splines-ohjelmista B-splineille ja luonnollisille splineille. Vasemmassa yläkulmassa on yksinkertainen lineaarinen sovitus dataan (katkoviiva) ja kolmannen asteen polynomisovitus, joka pystyy kuvaamaan muuttujien monimutkaisemman suhteen. Oikean yläkulman kuvaaja on kuitenkin erityisen mielenkiintoinen, koska siinä esitetään sovitukset käyttäen spline-funktioiden oletusarvoja. Vihreä viiva on peräisin funktioista poly() ja ns(), jotka molemmat määrittelevät oletusarvoisesti suoran viivan. Toisessa ääripäässä sininen viiva on sovitus funktiosta smooth.spline(), joka, jos vapausasteita ei ole määritetty, pyrkii alipehmeyttämään dataa, eli tuottamaan hyvin joustavan, kiemurtelevan sovituksen, joka perustuu – tässä tapauksessa – 45 vapausasteeseen. Silmämääräisesti järkevä sovitus dataan saadaan, kun määritetään neljä vapausastetta (vasen alempi kuvaaja). Voidaan nähdä, että valitusta perustasta riippuen on joitakin eroja. Polynomiperusta (musta viiva) on hieman joustavampi kuin muut, erityisesti korkeammissa ikäryhmissä. Toisaalta vain neljään vapausasteeseen rajoitettu tasoittava spline on jäykempi kuin muut lähestymistavat, mutta se todennäköisesti tasoittaa tietoja liikaa pienissä ikäluokissa, vuosien 0 ja 10 välillä. Näiden kahden ääripään välissä B-splinit ja luonnolliset splinit tuottavat hyvin samankaltaisia sovituksia, jotka vangitsevat pienten ikävuosien vaikutuksen ja joihin ikähaarukan loppupäässä olevat ääritapaukset vaikuttavat yleensä vähemmän. Vasemmalla ylhäällä: Katkoviiva edustaa yksinkertaista lineaarista sovitusta, yhtenäinen viiva sovitusta, jossa käytetään joustavia kolmannen asteen polynomeja. Ylhäällä oikealla: Splines-sovitus käyttäen R:n oletusarvoja. Vihreä viiva on tulosta asteen 1 polynomisplinestä (oletusarvo funktiolle poly) ja luonnollisen splinen sovituksesta, jossa ei ole määritetty vapausasteita (oletusarvo funktioille ns). Punainen viiva tulee b-splinestä, jossa on kolme vapausastetta (funktio bs) ja sininen viiva tasoittavasta splinestä (funktiosta smooth.spline). Vasemmalla alhaalla: Musta viiva on polynomisovitus, punainen viiva b-splinesovitus, vihreä viiva on luonnollinen splinesovitus ja tasoittava spline, kaikki määritelty neljällä vapausasteella. Alhaalla oikealla: Samat funktiot määritelty 10 vapausasteella. Created with Code #4

Huomautus vapausasteista

Käytännössä on aina hyödyllistä määritellä spline vapausasteiden mukaan. Tämä lähestymistapa on erityisen hyödyllinen, kun työskennellään B-splinien ja luonnollisten splinien kanssa. B-splineilla on d+K, kun taas luonnollisella kuutiollisella splinen perusfunktiolla, jossa on K solmua, on vastaavasti K+1 vapausastetta. Oletusarvoisesti R:n funktio bs luo asteen 3 B-splineja, joissa ei ole sisäisiä solmuja ja joiden rajasolmut on määritelty X-muuttujan alueelle. Näin ollen funktio luo kolme perusfunktiota. Tarkastellaan nyt seuraavaa tapausta: kun käyttäjä määrittelee B-splinen, jossa sisäinen solmu on X:n mediaanissa (bs(x,knots=median(x)), ohjelma luo neljä funktiota (d=3 plus K=1 sisäinen solmu, neljä vapausastetta). Jos käyttäjä kuitenkin määrittää funktiossa rajasolmut knots-argumentin sisällä (bs(x,knots=c(min(x),mediaani(x),max(x))))), funktiossa on kuusi vapausastetta (d=3 plus k=3). Samanlaista varovaisuutta on noudatettava myös funktion ns kanssa.

Työskenneltäessä tasoittavien splinien kanssa ei ole helppoa määrittää vapausasteita, koska ne vaihtelevat rangaistuksen suuruudesta riippuen. Käytännössä voidaan kuitenkin myös rangaistussplineja rajoittaa maksimivapausasteiden määrään tai haluttuihin vapausasteisiin.

Muut splinepaketit

Laaja-alaisemmin sanottuna laajennettu luettelo splinepaketeista sisältää joko lähestymistapoja, jotka ovat melko samankaltaisia kuin tässä esitetyt, tai hyvin erikoistuneita tapauksia, jotka kohdistuvat tiettyihin sovelluksiin. Taulukossa 1 on esitetty joitakin näistä paketeista ja niiden latausten määrä. Luvut viittaavat siihen, kuinka monta kertaa paketti on ladattu, mutta eivät yksittäisiin käyttäjiin. Tämän työn puitteissa ei ole mahdollista kuvata yksityiskohtaisesti kaikkia näitä lähestymistapoja.

Taulukko 1 Splinien luomiseen käytetyt R-paketit

.

Vastaa

Sähköpostiosoitettasi ei julkaista.