new teknillinen korkeakoulu teknillisen fysiikan ja...
TRANSCRIPT
TEKNILLINEN KORKEAKOULU
Teknillisen fysiikan ja matematiikan koulutusohjelma
Mat-2.108 Sovelletun matematiikan erikoistyöt
13.11.2001
Havaintoaineiston trimmauksen vaikutus otoskeskiarvoon
Kalle Soukka
41932W
Sisällysluettelo
Sisällysluettelo ...................................................................................................................... 1
1 Johdanto ........................................................................................................................ 2
1.1 Tavoitteet .................................................................................................................. 2
1.2 Tutkimusmenetelmät................................................................................................. 2
2 Havaintoaineiston tunnusluvut...................................................................................... 4
2.1 Otoskeskiarvon luottamusväli................................................................................... 4
2.2 Tilastollinen testaus .................................................................................................. 5
3 Trimmaus ...................................................................................................................... 7
3.1 Havaintoaineiston generointi .................................................................................... 7
3.1.1 Satunnaislukugeneraattori......................................................................................... 7
3.2 Havaintoaineiston trimmaus ..................................................................................... 8
3.3 Trimmatun havaintoaineiston keskiarvon luottamusväli .......................................... 9
4 Tulokset....................................................................................................................... 10
4.1 Trimmauksen vaikutus keskiarvon jakaumaan....................................................... 10
4.2 Tilastollinen testaus trimmatulla aineistolla ........................................................... 14
5 Johtopäätökset............................................................................................................. 16
Lähteet................................................................................................................................. 17
1
1 Johdanto
Useita ilmiöitä tutkitaan tekemällä niistä mittauksia. Esimerkiksi fysikaalista ilmiötä voidaan
havainnoida toistamalla sama tilanne useita kertoja ja mittaamalla kiinnostavien suureiden
arvot. Mittausten perusteella tutkittavaa ilmiötä voidaan pyrkiä karakterisoimaan.
Mittaustulosten keskiarvolla voidaan mallintaa ilmiön odotusarvoa. Tietyillä oletuksilla
ilmiön tilastollisesta käyttäytymisestä (ilmiön tulee olla normaalijakautunut, jotta voimme
käyttää t-testiä) voidaan suorittaa tilastollisia testejä esimerkiksi uuden havainnon
kuulumisesta tiettyyn joukkoon. Testauksella voidaan siis selvittää onko aineistosta laskettu
parametri tietyllä tilastollisella todennäköisyydellä juuri se arvo, jonka sen arvellaan olevan.
Lisäksi saamme tilastollisen todennäköisyyden testin perusteella tehdyn päätelmän
todenmukaisuudesta.
Usein mittaukset sisältävät virheellisiä havaintoja satunnaisista mittausvirheistä johtuen.
Tämän vuoksi käytettyjen tilastollisten menetelmien tulisi olla mahdollisimman robusteja eli
mittausvirhesietoisia. Tällöin yksittäiset poikkeamat mittaustuloksissa eivät pääse
vaikuttamaan testien perusteella tehtyihin johtopäätöksiin.
1.1 Tavoitteet
Tässä erikoistyössä tutkitaan havaintoaineiston trimmauksen vaikutusta aineiston arvoista
laskettuun otoskeskiarvoon. Trimmauksella tarkoitetaan havaintoaineiston suurimpien ja
pienimpien arvojen poistamista. Trimmauksella t poistetaan aineistosta t kappaletta
suurimpia ja t kappaletta pienimpiä havaintoja. Trimmaus on perusteltua, koska satunnaiset
mittausvirheet ovat todennäköisesti outliereitä ja samalla aineiston ääriarvoja. Trimmatusta
aineistosta laskettu tilastollinen tunnusluku sietää paremmin virheellisiä havaintoja.
Trimmatusta otoksesta lasketaan keskiarvo ja sitä vastaava tilastollinen suure, jonka avulla
voidaan määrittää keskiarvon tilastollinen tiettyä todennäköisyyttä vastaava luottamusväli.
Työn tarkoitus on tutkia trimmauksen vaikutusta tähän suureeseen. Normaalijakautuneella
trimmaamattomalla aineistolla jakaumaa kutsutaan t-jakaumaksi.
1.2 Tutkimusmenetelmät
Havaintoaineiston trimmausta tutkittiin simuloimalla normaalijakautuneita satunnaisotoksia,
jotka trimmattiin ja joista laskettiin otoskeskiarvon jakaumaa kuvaavia suureita.
2
Havaintoaineiston generointi ja laskenta suoritettiin Matlab-ohjelmistolla. Simulointien
nopeuttamiseksi Matlab-koodi käännettiin C-kielelle Matlab:in C-kääntäjällä.
3
2 Havaintoaineiston tunnusluvut
Ilmiötä mitattaessa tuloksena saadaan n kappaletta havaintoja . Havainnoista
lasketaan haluttuja tunnuslukuja. Yleisimmät ovat otoskeskiarvo [Milton ja Arnold 1990,
s.188]
nxxx ...,,, 21
∑=
=+++
=n
ii
n nxn
xxxx
1
21 /...
(2.1)
ja otosvarianssi
( )∑= −
−=
n
i
i
nxx
S1
22
1. (2.2)
Otosvarianssista saadaan otoskeskihajonta 2SS = .
2.1 Otoskeskiarvon luottamusväli
Havaintoaineistosta laskettu keskiarvo ei ole sama kuin mitatun ilmiön teoreettinen keskiarvo
xµ . x kuvaa ainoastaan kyseessä olevien havaintojen keskiarvoa. Tuloksena on yksittäinen
arvo. Jotta tietäisimme onko se edes lähellä teoreettista keskiarvoa, on tarpeen selvittää x :n
jakauma.
Teoreema 2.1 [Milton ja Arnold 1990, s.215]: Olkoon n havaintoa
normaalijakautuneesta jakaumasta, jonka keskiarvo on
nxxx ...,,, 21
µ ja varianssi 2σ . Tällöin x
on normaalijakautunut keskiarvolla µ ja varianssilla 2
nσ .
Olemme kiinnostuneet kuinka varmasti x on lähellä xµ :a. Tätä varten määritellään
luottamusväli
Määritelmä 2.1 (luottamusväli): 100(1-α )%:n luottamusväli parametrille θ on väli
[ ]1 2,L L siten, että
[ ]1 2 1P L Lθ α≤ ≤ − . (2.3)
Satunnaismuuttuja /x
nµ
σ− on siis (0,1) normaalijakautunut. Teoreeman 2.1 ja Määritelmän
2.1 perusteella x :n luottamusväliksi tulee väli, joka toteuttaa ehdon
4
/ 2 / 2 1/xP z z
nα αµ α
σ−− ≤ ≤ = −
. x :n luottamusväli on siis / 2x z
nασ
± .
Edellä esitetty luottamusväli perustuu oletukseen, että ilmiön varianssi on tunnettu. Tämä ei
ole realistinen oletus. Usein havaintoaineistoa mitataan tarkoituksena tutkia ennalta
tuntematonta ilmiötä, jolloin ilmiön keskiarvo tai varianssi eivät ole tunnettuja. Voimme
korvata σ :n havaintoaineistosta estimoidulla :llä, mutta tällöin satunnaismuuttuja S/xS n
µ−
ei ole enää normaalijakautunut. Voidaan osoittaa, että muuttuja 2( 1) /n S 2σ− on 2χ -
jakautunut vapausasteella . Tämän perusteella päästään seuraavaan teoreemaan. 1n −
Teoreema 2.2 [Milton ja Arnold 1990, s.240]: Olkoon n havaintoa
normaalijakautuneesta jakaumasta. jonka keskiarvo on
nxxx ...,,, 21
µ ja varianssi 2σ . Tällöin
muuttuja
/xtS n
µ−= (2.4)
noudattaa T-jakaumaa vapausasteella 1n − .
Nyt x :n 100(1-α )%:n luottamusväli saadaan kaavalla
/ 2Sx tnα± (2.5)
2.2 Tilastollinen testaus
Useimmiten havainnoitavan ilmiön luonteesta ei ole ennalta tietoa. Tilastollisella testauksella
voidaan selvittää, onko lasketun parametrin arvo hypoteesin mukainen. Tämä hypoteesi on
. Vaihtoehtoinen hypoteesi on, että oletus ei pidä paikkaansa. Merkitsemme tätä
mahdollisuutta :llä. Testattavana voi olla esimerkiksi keskiarvon suuruus. Tällöin testi
kirjoitetaan muotoon:
0H
1H
0
1 0
::
HH
0µ µµ µ=≠
(2.6)
jossa 0µ on oletettu keskiarvon suuruus. Testausta varten mitatusta aineistosta lasketaan
(2.4):n mukainen arvo t sijoittamalla kaavaan 0µ µ= . Tätä arvoa verrataan t-jakauman
arvoon haluttua todennäköisyyttä vastaavaan arvoon. Jos t on suurempi kuin t , joka 1 / 2α−
5
toteuttaa [ ]1 1 / 2 / 2nP T t α α− −≥ = , on meidän hylättävä hypoteesi , ja tiedämme, että
todennäköisyydellä 1
0H
α− johtopäätös on oikea.
6
3 Trimmaus
Trimmausta tutkitaan generoimalla normaalijakautuneita satunnaisotoksia, joiden voitaisiin
ajatella olevan mittaustuloksia tutkittavasta ilmiöstä. Otosta trimmataan ja lasketaan sekä
alkuperäisestä että trimmatusta otoksesta tunnuslukuja; tässä erikoistyössä otoskeskiarvo ja –
keskihajonta. Näistä lasketaan kaavan (2.4) mukainen tunnusluku, joka trimmaamattomalla
otoksella noudattaa t-jakaumaa. Otoksen generointi toistetaan riittävän monta kertaa, jolloin
saadaan muodostettua jakauma trimmattujen otosten tapauksessa. Otoskeskiarvolle laskettu
luottamusväli muuttuu siis trimmauksen funktiona.
3.1 Havaintoaineiston generointi
Simulointeja varten tarvitaan (0,1)-normaalijakautuneita satunnaislukuja. Lukujen
generoinnissa käytetään hyväksi Matlab:in satunnaislukugeneraattorin tuottamia (0,1)-
tasajakautuneita satunnaislukuja. 24:n (0,1)-tasajakautuneen satunnaisluvun summa on
(12,2)-normaalijakautunut [Glyn 1996, s.888]: 24
1
,
~ (12,2), ~ (0,1
ii
i
x y
y N kun x T=
=∑)
(3.1)
Jakauma muutetaan vielä (0,1)-normaalijakautuneeksi seuraavasti: ' ( 12) / 2y y= − (3.2) 'y :n arvoja generoimalla tuotettiin otoksia, joiden otoskoot ovat 10, 20, 30 ja 50 havaintoa.
3.1.1 Satunnaislukugeneraattori
Työssä käytettiin Matlab:in versio 6.1 (release 12.1) satunnaislukugeneraattoria, joka
ohjelmiston käyttöohjeen mukaan [Using Matlab 2000] tuottaa tasajakautuneita lukuja välillä
. Käyttöoppaan mukaan teoriassa sarja alkaa toistaa itseään 2 :n generoidun
luvun jälkeen.
53 532 ,1 2− − −1492
Matlab:in satunnaislukugeneraattoria testattiin khiin neliön testillä [Sedgewick 1990, s517].
Testiä varten generoidaan N satunnaista kokonaislukua if välillä 1-r. Näin oletettaisiin
saatavan noin kappaletta jokaista arvoa. Esiintymistaajuuksien ei kuitenkaan tule olla /N r
7
täysin samat. Silloin generaattorin tuottamat luvut eivät olisi satunnaisia. Testissä luvuista
lasketaan testisuure
( )2
2 0/
/
r
ii
f N r
N rχ =
−=∑
(3.3)
N:n tulee olla suurempi kuin 10 . Mikäli testisuure on lähellä r:ää, satunnaisluvut ovat testin
mukaan satunnaisia. Arvon katsotaan olevan lähellä r:ää, jos poikkeama on korkeintaan
r
2 r . Testauksessa käytettiin arvoja 100000N = ja 100r = . Viisi ajokertaa antoivat
tuloksiksi 102.5920, 99.2740, 100.7700, 106.4060 ja 96.4460 Testin perusteella generaattori
antaa siis riittävän satunnaisia lukuja. Testauksessa käytetty Matlab M-tiedosto on liitteessä
A.
Jokaisen otoksen generoinnin jälkeen generaattorin siemenluku talletettiin tiedostoon, josta
se taas luettiin seuraavan otoksen generointia varten. Näin varmistettiin, etteivät generoidut
otokset ole samoja simuloinnin eri ajokerroilla.
3.2 Havaintoaineiston trimmaus
Trimmauksen tarkoituksena on poistaa havaintoaineistosta satunnaisen mittausvirheen
aiheuttamia poikkeavia havaintoja, jotka muuten vääristäisivät aineistosta laskettuja
tunnuslukuja. Jatkuvalla jakaumalla α -trimmattu keskiarvo on [Huber 1981, s.9]: 1
11 ( )1 2 nX F t d
α
ααα
−−=
− ∫ t (3.4)
Tässä työssä tarkastellaan kuitenkin diskreettiä joukkoa havaintoja, jolloin kaava (3.4)
voidaan kirjoittaa erilaiseen muotoon. Generoiduista otoksista tuotettiin uusia otoksia
järjestämällä havainnot suuruusjärjestykseen ja poistamalla niistä n kappaletta suurimpia ja
pienimpiä havaintoja. Jos alkuperäinen otos on 1,..., nx x
'1,..., n
, järjestetään havainnot ensin
suuruusjärjestykseen, jolloin havaintojoukko on 'x x
'n k
. Kun aineistosta trimmataan k
suurinta ja pienintä arvoa, saadaan '1,...,kx x+ − . k-trimmatun aineiston keskiarvoksi saadaan
1
12
n k
tk ii k
x xn k
−
= +
=− ∑ (3.5)
8
3.3 Trimmatun havaintoaineiston keskiarvon luottamusväli
Kun havaintoaineistoa on trimmattu, se ei enää ole otos normaalijakaumasta. Näin ei
tunnusluku (2.4) noudattaa jotain muuta kuin t-jakaumaa. Nimitämme laskettua tunnuslukua
:lla: z
/xzS n
µ−= , (3.6)
jossa x on havaintoaineiston otoskeskiarvo ja S otoskeskihajonta. Simulointien avulla
selvitetään :n jakauman muutosta trimmauksen funktiona. z
9
4 Tulokset
Havaintoaineistojen generointi ja trimmaus toteutettiin Matlab-ohjelmistolla edellä esitetyllä
tavalla. Simulointia varten tehdyt Matlab M-tiedostot löytyvät liitteestä B. Ajojen
nopeuttamiseksi M-tiedostot käännettiin Matlab:in C-kääntäjällä exe-tiedostoiksi. Tämä
mahdollisti riittävän suuren määrän toistoja (N=1000000), eli halutun kokoinen
havaintoaineisto generoitiin ja trimmattiin N kertaa. Trimmauksen suuruuksina käytettiin 1, 2
ja 3. Alkuperäisestä ja trimmatuista otoksista laskettiin tunnusluku (3.6). Trimmatusta
aineistosta laskettu luku noudattaa eri jakaumaa kuin alkuperäisestä otoksesta laskettu, koska
trimmattu otos ei enää edusta otosta normaalijakaumasta. Tuloksista selviää mikä
trimmauksen vaikutus on. Tuloksena saatiin 1000000 arvoa jokaisella valitulla otoskoolla ja
trimmauksella.
4.1 Trimmauksen vaikutus keskiarvon jakaumaan
Seuraavassa on kuvattu :n arvot histogrammeina trimmaamattomalla ja trimmatuilla
aineistoilla otoskoon ollessa 10. Käyrien ja koordinaatiston x-akselin väliin jäävä pinta ala on
skaalattu arvoon 1, jolloin :n voidaan katsoa kuvaavan satunnaismuuttujan tiheysfunktiota.
Kuvan punainen käyrä on t-jakauman kuvaaja vapausasteella
z
z
1 9nν = − = .
Kuva 4-1. z:n histogrammikuvaajat otoskoolla 10. Trimmauksina 1, 2 ja 3.
10
Kuvaan 4-1 piirretty trimmaamattomista otoksista laskettujen -arvojen histogrammi kulkee
hyvin lähellä t-jakauman kuvaajaa, kuten pitääkin. Tämän voidaan katsoa osoittavan että
simulointi antaa luotettavia tuloksia. Kuvasta nähdään, että jakauman huipukkuus pienenee
trimmauksen kasvaessa. Tästä seuraa, että keskiarvon luottamusväli on trimmatulla
aineistolla suurempi. Histogrammeista lasketut eri luottamusvälejä vastaavat pisteet
(
z
[ ]P Z z pα α≤ = ) laskettiin siten, että -arvot järjestettiin, jolloin arvoista voitiin poimia
pisteet, joiden ulkopuolelle jäi haluttu määrä eli (
z
1 )100%α− havainnoista. Näiden arvojen
itseisarvojen keskiarvo on t-jakauman pistettä vastaava arvo. Tulokset ovat alla olevassa
taulukossa.
Trimmaus
0 1 2 3
Luottamusvälin α 0.975 2.2723 3.0651 4.2288 6.9766
0.95 1.8399 2.4417 3.2592 4.9782
0.9 1.3849 1.8076 2.3475 3.3333
Taulukko 4-1. Eri luottamusvälejä vastaavat z-jakauman pisteet otoskoolla 10.
Aluksi voimme verrata trimmaamattoman aineiston pisteitä t-jakauman vastaaviin pisteisiin.
T-jakauman pisteet löytyvät taulukosta 4-2. [ ]9 0.9P T t≤ = kun 1.383t = 0. α :n arvoja 0.95
ja 0.975 vastaavat pisteet ovat 1.8331 ja 2.2622. Arvojen voidaan katsoa olevan riittävän
lähellä t-jakauman arvoja. Suurin ero tulee α :n arvolla 0.975, jolloin laskettu arvo poikkeaa
0.01 oikeasta arvosta. Tämä arvo on kaikkein vaikein simuloitava, koska kumpaankin
häntäjakaumaan jää vain 2.5/2 = 1.25% havainnoista. Lisäksi otoskoko 10 on suhteellisen
pieni. Todennäköisyyksiä 0.95 ja 0.9 vastaavat arvot ovat huomattavasti lähempänä t-
jakauman arvoja.
P ν=9 ν=19 ν=29 ν=49
0.90 1.3830 1.3277 1.3114 1.2991
0.95 1.8331 1.7291 1.6991 1.6766
0.975 2.2622 2.0930 2.0452 2.0096
Taulukko 4-2. t-jakauman vertailupisteet.
11
Kuvissa 4-2, 4-3 ja 4-4 ovat tilanteet otoskoon ollessa 20, 30 ja 50. Otoskoon kasvaessa
huipukkuuden pieneneminen on vähäisempää. Tämä oli odotettavissa, koska suuremmalla
otoskoolla trimmaus vähentää havaintojen määrää suhteellisesti vähemmän. Kuten n=10
tapauksessa, trimmaamattomista havainnoista laskettujen arvojen jakauma noudattaa t-
jakaumaa tarkasti.
Luottamusvälejä 0.9, 0.95 ja 0.975 vastaavat jakaumien pisteet ovat taulukoissa 4-3, 4-4 ja 4-
5. Suuremmilla otoskoon arvoilla myös luottamusvälejä vastaavat pisteet ovat tarkemmin
yhteneviä t-jakauman vastaavien arvojen kanssa.
Kuva 4-2. z:n histogrammikuvaajat otoskoolla 20. Trimmauksina 1, 2 ja 3.
Trimmaus
0 1 2 3
Luottamusvälin α 0.975 2.1005 2.4807 2.8533 3.2669
0.95 1.7334 2.0416 2.3352 2.6608
0.9 1.3294 1.5612 1.7799 2.0166
Taulukko 4-3. Eri luottamusvälejä vastaavat z-jakauman pisteet otoskoolla 20.
12
Kuva 4-3. z:n histogrammikuvaajat otoskoolla 30. Trimmauksina 1, 2 ja 3.
Kuva 4-4. z:n histogrammikuvaajat otoskoolla 50. Trimmauksina 1, 2 ja 3.
13
Trimmaus
0 1 2 3
Luottamusvälin α 0.975 2.0507 2.3204 2.5613 2.8036
0.95 1.7022 1.9228 2.1201 2.3177
0.9 1.3124 1.4825 1.6311 1.7796
Taulukko 4-4. Eri luottamusvälejä vastaavat z-jakauman pisteet otoskoolla 30.
Trimmaus
0 1 2 3
Luottamusvälin α 0.975 2.0105 2.1917 2.3414 2.4847
0.95 1.6777 1.8276 1.9527 2.0711
0.9 1.2997 1.4145 1.5111 1.6015
Taulukko 4-5. Eri luottamusvälejä vastaavat z-jakauman pisteet otoskoolla 50.
4.2 Tilastollinen testaus trimmatulla aineistolla
Trimmattua aineistoa vastaava z-jakauma on tulosten perusteella leveämpi ja matalampi kuin
trimmaamattoman otoksen tapauksessa. Samaa todennäköisyyttä vastaavat keskiarvon
luottamusvälin pisteet ovat suurempia eli etäämmällä keskiarvosta, joka kaikilla
simuloiduilla aineistoilla on nolla. Tämä on seurausta pienemmästä otoskoosta ja
keskihajonnasta. Etäisyys on sitä suurempi, mitä enemmän aineistoa on trimmattu.
Havaintoaineiston trimmaus muuttaa tilastollista testausta. Koska tiettyä todennäköisyyttä
vastaava z-jakauman arvo on suurempi kuin t-jakauman arvo, saamme suuremman
varmuuden hypoteesin hylkäämisen tai hyväksymisen oikeellisuudesta. Esimerkiksi testissä
(2.6) todennäköisyyttä α vastaava jakauman arvo on suurempi. Jos olisimme testaamassa
hypoteesia
0
1
: 0: 0
HH
µµ=≠
(4.1)
jossa µ on otoksen keskiarvo, pitäisi otoskeskiarvon poiketa nollasta paljon enemmän kuin
trimmaamattoman havaintoaineiston tapauksessa, jotta voisimme hylätä nollahypoteesin.
Tämä ilmiö vahvistuu trimmauksen kasvaessa.
14
Trimmatulla otoksella keskiarvon testaus on turvallista, koska havaintoja on poistettu yhtä
paljon keskiarvon molemmin puolin. Sen sijaan esimerkiksi otoksen keskihajonnan
laskeminen antaisi vääristyneitä tuloksia. Trimmauksen käyttöä tulisikin harkita aina
tilanteesta riippuen.
15
5 Johtopäätökset
Trimmauksella saatiin parannettua havaintoaineistosta estimoitujen parametrien tarkkuutta.
Tilastollinen testaus onnistui kuten trimmaamattomallakin aineistolla. z-jakauman pisteet
vain poikkesivat t-jakauman vastaavista pisteistä. Kuten edellisessä luvussa todettiin, sopii
trimmaus vain tiettyjen parametrien estimointiin ja testaukseen. Tämä tulee muistaa ennen
kuin aineistoa trimmataan. Trimmaus voi vääristää merkittävästi joidenkin parametrien
arvoja ja tuottaa niihin harhaa.
Trimmaukseen tulisi olla selvä syy. Näin on esimerkiksi jos on aihetta epäillä että aineistossa
todella on mukana satunnaisia mittausvirheitä. Useimmiten kannattaa käyttää tietämystä
mitattavasta ilmiöstä hyväkseen. Ihmisaivojen hahmontunnistus on hyvä keino karsia
poikkeavia havaintoja pois aineistosta. Tämä pätee kuitenkin vain kun tutkittava aineisto on
suhteellisen pieni ja yksinkertainen. Lisäksi tulee muistaa, ettei täydellisiä tuloksia
tavoitteleva tutkija saisi valita haluamiaan havaintoja ja näin vaikuttaa tekemiensä analyysien
lopputulokseen. Tervettä maalaisjärkeä pitää aina käyttää.
Erikoistyön teossa on oletettu koko ajan, että havainnoitava ilmiö on normaalijakautunut.
Tämä ei useinkaan pidä tarkalleen paikkaansa. Joissakin tapauksissa ilmiön voidaan olettaa
olevan normaalijakautunut, mutta ehdon ulkopuolelle jää suuri osa ilmiöistä. Tämän vuoksi
olisi mielenkiintoista tutkia trimmauksen vaikutusta ei-normaalijakautuneilla
havaintoaineistoilla. Tutkimus tulisi suorittaa kiinnittämällä taustajakauma ja simuloida
trimmausta tämän erikoistyön simulointien tapaan.
Eräs vaihtoehto simulointien suoritukseen olisi käyttää bootstrap-simulointia. Tällöin
generoidusta havaintoaineistosta muodostettaisiin satunnaisia havaintojen alijoukkoja, joista
jokaisesta lasketaan haluttu parametri, esimerkiksi keskiarvo. Alijoukon generointi toistetaan
useita kertoja. Sopiva luku voisi olla 10000 kertaa. Näin parametrista voidaan muodostaa
jakauma. Bootstrap on riippuvainen (generoidusta) alkuperäisestä otoksesta. Pienillä
otoskoon arvoilla tulokset saattaisivat olla vääristyneitä. Eräänä vaihtoehtona voisi olla tässä
työssä esitetyn simuloinnin ja bootstrapin yhdistelmä. Tietyn kokoisen otoksen voisi
generoida n kertaa, ja jokaista otosta bootstrap-simuloitaisiin m kertaa.
16
Lähteet
Huber, Peter J.: Robust Statistics, John Wiley & Sons 1981
James, Glyn: Modern Engineering Mathematics, second edition, Addison-Wesley 1996
Milton, J.S, Arnold, Jesse C.: Introduction to Probability and Statistics, second edition,
McGraw-Hill 1990
Sedgewick, Robert: Algorithms in C, Addison-Wesley 1990
Using Matlab: The Language of Technical Computing, fifth printing, The MathWorks, Inc.
2000
17
Liite A Satunnaislukugeneraattorin testaukseen käytetty
Matlab M-tiedosto
% Lasketaan khiin neliön arvo generoiduille satunnaisluvuille
% N: generoitavien satunnaislukujen määrä
% r: generoitavat arvot skaalataan välille 1-r
function x = rand_chisq(N, r)
load seed.mat s;
rand('state', s);
f = zeros(r,1);
rvalues = ceil(rand(N,1)*r);
s = rand('state');
save seed.mat s;
for I=1:N
f(rvalues(I)) = f(rvalues(I)) + 1;
end
t = 0;
for I=1:r
t = t + f(I)^2;
end
x = (r*t/N) - N;
Liite B Simuloinneissa käytetyt Matlab M-tiedostot
Pääajo, joka suorittaa havaintoaineistojen generoinnin ja laskee eri luottamusvälien
päätepisteet.
function main_batch
z=trim_loop(1000000,10,3);
save trim_1000000_10.mat z
fprintf(1,'trim_1000000_10.mat 2.5' );
conf_points(z(:,1), 2.5)
conf_points(z(:,2), 2.5)
conf_points(z(:,3), 2.5)
conf_points(z(:,4), 2.5)
fprintf(1,'trim_1000000_10.mat 5.0' );
conf_points(z(:,1), 5)
conf_points(z(:,2), 5)
conf_points(z(:,3), 5)
conf_points(z(:,4), 5)
fprintf(1,'trim_10000000_10.mat 10.0' );
conf_points(z(:,1), 10)
conf_points(z(:,2), 10)
conf_points(z(:,3), 10)
conf_points(z(:,4), 10)
z=trim_loop(1000000,20,3);
save trim_1000000_20.mat z
fprintf(1,'trim_1000000_20.mat 2.5' );
conf_points(z(:,1), 2.5)
conf_points(z(:,2), 2.5)
conf_points(z(:,3), 2.5)
conf_points(z(:,4), 2.5)
fprintf(1,'trim_1000000_20.mat 5.0' );
conf_points(z(:,1), 5)
conf_points(z(:,2), 5)
conf_points(z(:,3), 5)
conf_points(z(:,4), 5)
fprintf(1,'trim_1000000_20.mat 10.0' );
conf_points(z(:,1), 10)
conf_points(z(:,2), 10)
conf_points(z(:,3), 10)
conf_points(z(:,4), 10)
z=trim_loop(1000000,30,3);
save trim_1000000_30.mat z
fprintf(1,'trim_1000000_30.mat 2.5' );
conf_points(z(:,1), 2.5)
conf_points(z(:,2), 2.5)
conf_points(z(:,3), 2.5)
conf_points(z(:,4), 2.5)
fprintf(1,'trim_1000000_30.mat 5.0' );
conf_points(z(:,1), 5)
conf_points(z(:,2), 5)
conf_points(z(:,3), 5)
conf_points(z(:,4), 5)
fprintf(1,'trim_1000000_30.mat 10.0' );
conf_points(z(:,1), 10)
conf_points(z(:,2), 10)
conf_points(z(:,3), 10)
conf_points(z(:,4), 10)
z=trim_loop(1000000,50,3);
save trim_1000000_50.mat z
fprintf(1,'trim_1000000_50.mat 2.5' );
conf_points(z(:,1), 2.5)
conf_points(z(:,2), 2.5)
conf_points(z(:,3), 2.5)
conf_points(z(:,4), 2.5)
fprintf(1,'trim_1000000_50.mat 5.0' );
conf_points(z(:,1), 5)
conf_points(z(:,2), 5)
conf_points(z(:,3), 5)
conf_points(z(:,4), 5)
fprintf(1,'trim_1000000_50.mat 10.0' );
conf_points(z(:,1), 10)
conf_points(z(:,2), 10)
conf_points(z(:,3), 10)
conf_points(z(:,4), 10)
Havaintoaineiston luonti yhdelle otoskoolle.
%luo loop_size kertaa sample_size -kokoisen normaalijakautuneen aineiston ja
%trimmaa siitä max_trim kertaa suurimman ja pienimmän arvon pois.
%*Tuloksena saadaan v-jakauman arvot taulukossa (jonka koko on max_trim+1 x loop_size)
function x = trim_loop(loop_size,sample_size,max_trim)
x = zeros(loop_size,max_trim+1);
for i = 1:loop_size
x(i,1:max_trim+1) = trim_sample(normal_sample(sample_size),max_trim)';
end
Yhden otoksen generointi.
%x = normal_sample(sample_size)
%Generoidaan vektori, jossa on sample_size kpl (0,1)-normaalijakautunutta
%lukua. Luvut generoidaan 24 (0,1)-tasajakautuneen satunnaisluvun summana.
%24:n (0,1)-tasajakautuneen satunnaisluvun summa on
%(12,2)-normaalijakautunut.
function x = normal_sample(sample_size)
x = zeros(sample_size,1);
load seed.mat s;
rand('state', s);
for i = 1:sample_size
x(i) = (sum(rand(24,1))-12)/2;
end
s = rand('state');
save seed.mat s;
Yhden otoksen trimmaus.
%Trimmaa havaintoaineiston data, ja laskee arvon mean(x)/(std_dev(x)*sqrt(size(x))),
%joka trimmaamattomalla otoksella, jonka havainnot ovat normaalijakautuneita,
%noudattaa t-jakaumaa.
function v_values = trim_sample(data,max_trim)
data = sort(data);
s = size(data);
s = s(1);
v_values = zeros(max_trim,1);
for i = 0:max_trim
v_values(i+1) = mean(data)/(std(data)/sqrt(s));
data = data(2:s-1);
s = s-2;
end
Halutun luottamusvälin päätepisteiden haku.
%Lasketaan aineistosta conf prosentin aluetta vastaavat pisteet, eli joiden
%ulkopuolelle jää conf % aineistosta.
function x = conf_points(data, conf)
data_sorted = sort(data);
data_size = size(data);
data_size = data_size(1);
x = conf;
conf_size = size(conf);
for I = 1:conf_size(1)
point=floor(data_size*conf(I)/100);
x(I,2) = data_sorted(point+1);
x(I,3) = data_sorted(data_size-point-1);
x(I,4) = (abs(x(I,2))+abs(x(I,3)))/2;
end