Bootstrap (tilastotiede)

Wikipedia
Loikkaa: valikkoon, hakuun

Bootstrap (engl. Bootstrapping) on tilastotieteessä menetelmä tai algoritmi, jolla voidaan estimoida tunnusluvun tai parametrin otantajakaumaa. Bootstrapilla voidaan johtaa arvio tunnusluvun tarkkuudelle tilanteissa, joissa se on analyyttisesti hankalaa tai mahdotonta. Bootstrap soveltuu varianssin, harhan, luottamusvälin ja P-arvon määräämiseen.

Historia[muokkaa | muokkaa wikitekstiä]

Ensimmäinen artikkeli bootstrapista on Bradley Efronin kirjoittama Bootstrap Methods: Another Look at the Jackknife vuodelta 1979. Bootstrap on kehittynyt aiemman menetelmän Jackknife pohjalta. Myöhemmin bootstrapista on kehitetty myös bayesiläinen versio.

Bootstrap-algoritmi[muokkaa | muokkaa wikitekstiä]

Bootstrap-otos[muokkaa | muokkaa wikitekstiä]

Olkoon hankittu aineisto \mathbf{X} = (x_1,...,x_n) kokoa n. Bootstrap-otos \mathbf{X}^{*}_k = (x^{*}_1,x^{*}_2,\dots,x^{*}_n), k = 1,\dots,B on aineistosta simuloitu otos havaintoja, yhteensä n kappaletta. Bootstrap-otoksen koko on siis sama kuin aineiston havaintojen lukumäärä. Bootstrap-otosta \mathbf{X}^{*}_k (merkataan tähdellä yläindeksissä) ei tule sekoittaa aineistoon \mathbf{X}. Bootstrap-otoksen havainnot on arvottu käyttäen otantamenetelmänä yksinkertaista satunnaisotantaa takaisinpalauttaen. Tällöin aineistossa vain kerran esiintyvät lukuarvot voivat esiintyä lukuisia kertoja boostrap-otoksessa. Bootstrap-otoksia tehdään algoritmilla tyypillisesti lukuisia (yleensä satoja), joten merkitään tehtyjen boostrap-otosten lukumäärä B:llä.

Algoritmi[muokkaa | muokkaa wikitekstiä]

Toistetaan askeleita 1 ja 2:

  1. Ota aineistosta bootstrap-otos (otos takaisinpalauttaen).
  2. Laske kiinnostuksen kohteena olevan tunnusluvun arvo (bootstrap-toisto) bootstrap-otoksesta. Ota tunnusluvun arvo talteen. Tuloksena saadaan toistoja tunnusluvun otantajakaumasta. Ko. bootstrap-toistojen avulla voidaan arvioida esim. todennäköisyyksiä ja luottamusvälejä.


Esimerkkejä tilanteista, joissa bootstrapia voidaan soveltaa[muokkaa | muokkaa wikitekstiä]

Teoreettinen esimerkki[muokkaa | muokkaa wikitekstiä]

Merkitään havaintoja x_1,...,x_n = \mathbf{X} ja havainnoista laskettua keskivirheen tunnuslukua se(\mathbf{X}). Tehdään B kappaletta bootstrap-otoksia (\mathbf{x}^{*}_1, \mathbf{x}^{*}_2, \dots, \mathbf{x}^{*}_n) = \mathbf{X}^{*}_k, k = 1,\dots,B, jokaisen bootstrap-otoksen koko on n. Lasketaan bootstrap-otoksista keskivirhe empiirisellä kaavalla se(\mathbf{X}^{*}_k), joten saadaan B kappaletta toistoja keskivirheestä se(\mathbf{X}^{*}_k), k = 1,\dots,B.

Ideaalinen bootstrap-estimaattori on asymptoottinen, sillä se määritellään[1] lim_{B->\infty} se(\mathbf{x}^{*}_k)_B = se{\hat{F}} mikä tarkoittaa, että B:n bootstrap-otoksen keskivirhe-estimaatti lähestyy populaatiokeskivirhettä, kun bootstrap-otosten määrä menee kohti ääretöntä. Tässä tapauksessa ”populaatio” on havainnot x_1,...,x_n ja populaation jakauma määrittyy empiirisen kertymäfunktion kautta. Tätä kutsutaan myös parametrittomaksi bootstrapiksi.

Käytännönläheinen esimerkki[muokkaa | muokkaa wikitekstiä]

Toteutetaan bootstrap käyttäen R-ohjelmistoa. Aineistona on R:ssä vapaasti saatavilla oleva 'faithful'. R-ohjelmakoodi on seuraava:

#ladataan aineisto
data(faithful)
eruptions <- faithful$eruptions
 
#bootstrap-otosten lukumäärä
n <- 10000
 
#alustetaan muuttujat, joihin sijoitetaan tulokset
mean.boot <- NULL
sd.boot <- NULL
 
#toistetaan n kertaa
for(i in 1:n) {
  #bootstrap-otos (satunnaisotos takaisinpalauttaen)
  s.int <- sample.int(length(eruptions), replace = TRUE)
 
  #lasketaan tunnusluvut keskiarvo (mean) ja keskihajonta (sd)
  mean.boot[i] <- mean(eruptions[s.int])
  sd.boot[i] <- sd(eruptions[s.int])
 
}
 
#havaintojen lukumäärä aineistossa (tarvitaan keskivirhettä varten)
n.obs <- length(eruptions)
 
#keskiarvon keskivirhe
se.mean.boot <- sd.boot/sqrt(n.obs)

Keskivirheen estimointi bootstrapilla[muokkaa | muokkaa wikitekstiä]

Keskivirheen estimointi bootstrapin avulla on luontevaa. Edellä olevassa Käytännönläheisessä esimerkissä lasketaan bootstrap-estimaatit keskiarvolle ja keskihajonnalle sekä lopussa keskivirhe. Koska keskivirhe on keskiarvon keskihajonta, niin sille voidaan laskea piste-estimaatti suoraan laskemalla keskiarvon bootstrap-toistoista keskihajonta. Keskivirheelle saadaan bootstrap-toistot käyttämällä keskivirheen kaavaa SE = \frac{s}{\sqrt{n}}, missä SE on keskivirhe, s on keskihajonta ja n on aineiston havaintojen lukumäärä (eri kuin bootstrap-otosten lkm).

Hypoteesien testaaminen bootstrapilla[muokkaa | muokkaa wikitekstiä]

Bootstrapilla voidaan testata hypoteeseja tunnusluvulle t(\mathbf{X}). Lasketaan bootstrap-toistot t(\mathbf{X^{*}_1})_{1},\dots,t(\mathbf{X^{*}_B})_{B} ko. tunnusluvulle. Jos halutaan testata poikkeaako tunnusluku nollasta, niin voidaan laskea empiirisesti todennäköisyys, että tunnusluku poikkeaa vähintään yhtä paljon bootstrap-toistojen avulla. Siis P(t(\mathbf{X}) \geq 0) = \frac{1}{B}\sum^{B}_{i=1} 1(t(\mathbf{X^{*}_i})_{i} \geq 0)

Bootstrap-menetelmiä[muokkaa | muokkaa wikitekstiä]

Parametrinen bootstrap[muokkaa | muokkaa wikitekstiä]

Parametrinen bootstrap perustuu oletukseen aineiston jakaumasta. Se on siis sensitiivinen jakaumaoletukselle, eli jos oletus on väärä, ovat tuloksetkin vääriä. Se on kuitenkin parametritonta bootstrapia tehokkaampi menetelmä, kun jakaumaoletus on tosi.[2]

Parametriton bootstrap[muokkaa | muokkaa wikitekstiä]

Parametriton bootstrap ei perustu mallioletukseen, vaan käyttää empiiristä (aineistoon perustuvaa) jakaumaa. Teoreettisemmin parametrittomasta bootstrapista on kohdassa Teoreettinen esimerkki.

Jäännösten bootstrap[muokkaa | muokkaa wikitekstiä]

Jäännösten bootstrap perustuu vahvasti olettamukseen, että käytettävä malli on oikea ja että mallin jäännökset ovat keskenään riippumattomia. Tällöin voidaan käyttää bootstrapia mallin jäännöksille. Menetelmä soveltuu erityisesti lineaariseen regressioon, koska siinä jäännökset ovat oletusten mukaan riippumattomia.

Algoritmi on seuraava:

  1. Sovita malli aineistoon eli estimoi mallin parametrit.
  2. Laske jäännökset.
  3. Tee bootstrap jäännöksille.
  4. Muodosta 'bootstrap-vasteet' jokaista jäännöstä kohden käyttäen mallioletusta, kohdassa 1. sovitettuja mallin parametreja ja kohdan 3. jäännöksiä. Bootstrap-vasteita on nyt yhtä monta kuin jäännöksiä kohdassa 3. Käytetään ko. bootstrap-vasteita yhdessä kovariaattien kanssa muodostamaan bootstrap-otos.
  5. Sovita malli kohdassa 4. saatuun bootstrap-otokseen.

Iteroimalla kohtia 3-5 päästään käsiksi mallin parametrien otantajakaumaan.

Bayes-boostrap[muokkaa | muokkaa wikitekstiä]

Bayes-bootstrapilla on bootstrap Bayesiläisittäin. Kun tavallisessa bootstrapissa simuloidaan tunnusluvun otantajakaumaa, niin Bayes-bootstrapilla simuloidaan tunnusluvun posteriorijakaumaa.[3]

Painojen laskeminen Bayes-bootstrapissa:

  1. Olkoon käytössä n havaintoa. Simuloidaan n-1 kappaletta tasajakautuneita satunnaislukuja väliltä (0,1) ja järjestetään ne suuruusjärjestykseen pienimmästä alkaen. Merkitään järjestettyjä satunnaislukuja u_{(1)},...,u_{(n-1)}. Asetetaan lisäksi u_{(0)} = 0 ja u_{(n)} = 1.
  2. Lasketaan peräkkäiset erotukset g_i=u_{(i)}-u_{(i-1)}, i = 1,...,n joita sanotaan todennäköisyyspainoiksi.

Bayes-bootstrapissa Bayes-bootstrap -otos saadaan samalla tapaa kuin tavallisessa bootstrapissa, mutta todennäköisyys saada havainto x_i bootstrap-otokseen on g_i, i = 1,\dots,n. Todennäköisyyspainot g_i arvotaan jokaisen Bayes-bootstrap -otoksen yhteydessä uudelleen.

Siloitettu bootstrap[muokkaa | muokkaa wikitekstiä]

Siloitetussa bootstrapissa bootstrap-otos simuloidaan skaalatusta ydinestimaatista \hat{g}(\mathbf{X};\hat{h}_1) eikä suoraan havainnoista.[1] lim_{B->\infty} se(\mathbf{x}^{*}_k)_B = se{\hat{F}} Skaalattu ydinestimaatti on saatu Gaussisella ydin­estimoinnilla skaalauksen jälkeen ja \hat{h}_1 on sellainen ydinestimaattorin ikkunanleveys, jolla saadaan yksimoodinen ydinestimaatti. Skaalauksella poistetaan se lisävaihtelu, jonka ydinestimointi aiheuttaa.

Bootstrap suhteessa muihin samantapaisiin menetelmiin[muokkaa | muokkaa wikitekstiä]

Jackknife[muokkaa | muokkaa wikitekstiä]

Jackknife eroa bootstrapista siten että jackknife-otoksia (vrt. bootstrap-otos) tehdään täsmälleen aineiston havaintojen lukumäärän verran ja kullakin otoksella jätetään vuorollaan kukin havainto pois jackknife-otoksesta. Tällöin saadaan havaintojen lukumäärän verran näytteitä, joista kustakin puuttuu yksi havainto. Kyseisistä näytteistä lasketaan mielenkiinnon kohteena oleva tunnusluku ja näin saadut tunnusluvut approksimoivat ko. tunnusluvun otantajakaumaa.[4]

Ristiinvalidointi[muokkaa | muokkaa wikitekstiä]

Riistinvalidoinnissa, jolla voidaan tutkia mallin sopivuutta aineistoon, on samankaltaisuuksia bootstrapin nähden. Ristiinvalidoinnissa valitaan osaotos aineistosta ja sovitetaan malli sillä. Jos osaotos on kokoa n-1 ja tehdään ilman takaisinpalautusta, niin kyseessä on jackknife. voidaan käyttää bootstrapia tai sen kaltaista menetelmää. Tällöin malli on sovitettava jokaisella bootstrap-otoksella uudelleen.

Bootstrap stokastisessa simuloinnissa[muokkaa | muokkaa wikitekstiä]

Tila-avaruusmallien estimointiin simuloimalla voidaan käyttää algoritmia hiukkassuodin (particle filter) joka on toiselta nimeltään bootstrap-suodin (bootstrap filter).[5] Kyseisessä algoritmissa yksi iteroitavista askeleista on identtinen bootstrapin kanssa.

Bagging[muokkaa | muokkaa wikitekstiä]

Bagging on estimaatin laskemista bootstrap-otoksen ylitse. Tämä on joskus järkevää ja tätä on sovellettu varsinkin päätöspuumalleissa. Päätöspuumallit ovat käytettyjä koneoppimisessa.

Puoliotokset[muokkaa | muokkaa wikitekstiä]

Puoliotokset tai puolitetut otokset (half-sampling) on erityisesti otantamenetelmissä käytetty menetelmä, jolla voidaan arvioida tunnusluvun otantaepävarmuutta (otantajakaumaa). Menetelmä pohjaa nimensä mukaan otosten puolittamiseen vaihtelun laskemiseksi ja on idealtaan lähes identtinen bootstrapiin verrattuna.[6]

Viitteet[muokkaa | muokkaa wikitekstiä]

  1. a b Efron, Bradley (1993). An Introduction to the Bootstrap. Chapman & Hall/CRC. 
  2. Efron, Bradley (1979). "Bootstrap Methods: Another Look at the Jackknife". The Annals of Statistics 7 (1): 1-26. 
  3. Rubin, Donald (1981). "The Bayesian Bootstrap". The Annals of Statistics 9: 130-134. 
  4. Penttinen, Antti. "Matemaattinen tilastotiede 1, luentomoniste, kl. 2010, versio 1, Jyväskylän yliopisto". 
  5. Vihola, Matti. "Lectures on stochastic simulation". Jyväskylän yliopisto. 
  6. Efron, Bradley. "The Jackknife, the Bootstrap and Other Resampling Plans, Techical report no. 63, December 1980, Stanford University, California".