TEKNILLINEN KORKEAKOULU Teknillisen fysiikan ja matematiikan koulutusohjelma Mat-.108 Sovelletun matematiikan erikoistyöt 13.11.001 Havaintoaineiston trimmauksen vaikutus otoskeskiarvoon Kalle Soukka 4193W
Sisällysluettelo Sisällysluettelo... 1 1 Johdanto... 1.1 Tavoitteet... 1. Tutkimusmenetelmät... Havaintoaineiston tunnusluvut... 4.1 Otoskeskiarvon luottamusväli... 4. Tilastollinen testaus... 5 3 Trimmaus...7 3.1 Havaintoaineiston generointi... 7 3.1.1 Satunnaislukugeneraattori... 7 3. Havaintoaineiston trimmaus... 8 3.3 Trimmatun havaintoaineiston keskiarvon luottamusväli... 9 4 Tulokset... 10 4.1 Trimmauksen vaikutus keskiarvon jakaumaan... 10 4. 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. Tutkimusmenetelmät Havaintoaineiston trimmausta tutkittiin simuloimalla normaalijakautuneita satunnaisotoksia, jotka trimmattiin ja joista laskettiin otoskeskiarvon jakaumaa kuvaavia suureita.
Havaintoaineiston generointi ja laskenta suoritettiin Matlab-ohjelmistolla. Simulointien nopeuttamiseksi Matlab-koodi käännettiin C-kielelle Matlab:in C-kääntäjällä. 3
Havaintoaineiston tunnusluvut Ilmiötä mitattaessa tuloksena saadaan n kappaletta havaintoja. Havainnoista lasketaan haluttuja tunnuslukuja. Yleisimmät ovat otoskeskiarvo [Milton ja Arnold 1990, s.188] x x = 1 + x +... + x n ja otosvarianssi S = n ( x x) i= 1 i n 1 n = n i= 1 x / n i x, 1 x,..., x n (.1). (.) Otosvarianssista saadaan otoskeskihajonta.1 Otoskeskiarvon luottamusväli S = S. 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.1 [Milton ja Arnold 1990, s.15]: Olkoon x 1, x,..., x n n havaintoa normaalijakautuneesta jakaumasta, jonka keskiarvo on µ ja varianssi σ. Tällöin x σ on normaalijakautunut keskiarvolla µ ja varianssilla. n Olemme kiinnostuneet kuinka varmasti x on lähellä µ x :a. Tätä varten määritellään luottamusväli Määritelmä.1 (luottamusväli): 100(1-α )%:n luottamusväli parametrille θ on väli [, ] L L siten, että 1 [ θ L ] P L α. (.3) 1 1 x µ Satunnaismuuttuja on siis (0,1) normaalijakautunut. Teoreeman.1 ja Määritelmän σ / n.1 perusteella x :n luottamusväliksi tulee väli, joka toteuttaa ehdon 4
x µ σ P zα/ zα/ = 1 α. x :n luottamusväli on siis x ± zα /. σ / n 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 S :llä, mutta tällöin satunnaismuuttuja x µ S/ n ei ole enää normaalijakautunut. Voidaan osoittaa, että muuttuja n S σ on ( 1) / χ - jakautunut vapausasteella n 1. Tämän perusteella päästään seuraavaan teoreemaan. Teoreema. [Milton ja Arnold 1990, s.40]: Olkoon x 1, x,..., x n n havaintoa normaalijakautuneesta jakaumasta. jonka keskiarvo on µ ja varianssi σ. Tällöin muuttuja x µ t = (.4) S/ n noudattaa T-jakaumaa vapausasteella n 1. Nyt x :n 100(1-α )%:n luottamusväli saadaan kaavalla S x ± tα / (.5) n. 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 H 0. Vaihtoehtoinen hypoteesi on, että oletus ei pidä paikkaansa. Merkitsemme tätä mahdollisuutta H 1 :llä. Testattavana voi olla esimerkiksi keskiarvon suuruus. Tällöin testi kirjoitetaan muotoon: H0 : µ = µ 0 H : µ µ 1 0 (.6) jossa µ 0 on oletettu keskiarvon suuruus. Testausta varten mitatusta aineistosta lasketaan (.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 1 α /, joka 5
toteuttaa [ ] PT t α = α, on meidän hylättävä hypoteesi, ja tiedämme, että n 1 1 / / todennäköisyydellä 1 α johtopäätös on oikea. H 0 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 (.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. 4:n (0,1)-tasajakautuneen satunnaisluvun summa on (1,)-normaalijakautunut [Glyn 1996, s.888]: 4 i= 1 x = y, i y ~ N(1,), kunx ~ T(0,1) i Jakauma muutetaan vielä (0,1)-normaalijakautuneeksi seuraavasti: ' y (3.1) = ( y 1) / (3.) ' y :n arvoja generoimalla tuotettiin otoksia, joiden otoskoot ovat 10, 0, 30 ja 50 havaintoa. 3.1.1 Satunnaislukugeneraattori Työssä käytettiin Matlab:in versio 6.1 (release 1.1) satunnaislukugeneraattoria, joka ohjelmiston käyttöohjeen mukaan [Using Matlab 000] tuottaa tasajakautuneita lukuja välillä,1 53 53 luvun jälkeen. 149. Käyttöoppaan mukaan teoriassa sarja alkaa toistaa itseään :n generoidun Matlab:in satunnaislukugeneraattoria testattiin khiin neliön testillä [Sedgewick 1990, s517]. Testiä varten generoidaan N satunnaista kokonaislukua f i välillä 1-r. Näin oletettaisiin saatavan noin N / r kappaletta jokaista arvoa. Esiintymistaajuuksien ei kuitenkaan tule olla 7
täysin samat. Silloin generaattorin tuottamat luvut eivät olisi satunnaisia. Testissä luvuista lasketaan testisuure r i= 0 χ = ( f N / r) i N / r (3.3) N:n tulee olla suurempi kuin 10 r. Mikäli testisuure on lähellä r:ää, satunnaisluvut ovat testin mukaan satunnaisia. Arvon katsotaan olevan lähellä r:ää, jos poikkeama on korkeintaan r. Testauksessa käytettiin arvoja N = 100000 ja r = 100. Viisi ajokertaa antoivat tuloksiksi 10.590, 99.740, 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. 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 α 1 1 Xα = Fn () t d 1 α 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 x1,..., xn, järjestetään havainnot ensin suuruusjärjestykseen, jolloin havaintojoukko on ' ' x1,..., xn. Kun aineistosta trimmataan k suurinta ja pienintä arvoa, saadaan x,..., 1 x ' ' k+ n k. k-trimmatun aineiston keskiarvoksi saadaan x tk n k 1 = xi n (3.5) k i= k+ 1 8
3.3 Trimmatun havaintoaineiston keskiarvon luottamusväli Kun havaintoaineistoa on trimmattu, se ei enää ole otos normaalijakaumasta. Näin ei tunnusluku (.4) noudattaa jotain muuta kuin t-jakaumaa. Nimitämme laskettua tunnuslukua z :lla: x µ z =, (3.6) S/ n jossa x on havaintoaineiston otoskeskiarvo ja S otoskeskihajonta. Simulointien avulla selvitetään z :n jakauman muutosta trimmauksen funktiona. 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, 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 z :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 z :n voidaan katsoa kuvaavan satunnaismuuttujan tiheysfunktiota. Kuvan punainen käyrä on t-jakauman kuvaaja vapausasteella ν = n 1= 9. Kuva 4-1. z:n histogrammikuvaajat otoskoolla 10. Trimmauksina 1, ja 3. 10
Kuvaan 4-1 piirretty trimmaamattomista otoksista laskettujen z -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 [ ] ( PZ z = p) laskettiin siten, että z -arvot järjestettiin, jolloin arvoista voitiin poimia α α pisteet, joiden ulkopuolelle jäi haluttu määrä eli ( 1 α)100% havainnoista. Näiden arvojen itseisarvojen keskiarvo on t-jakauman pistettä vastaava arvo. Tulokset ovat alla olevassa taulukossa. Trimmaus 0 1 3 Luottamusvälin α 0.975.73 3.0651 4.88 6.9766 0.95 1.8399.4417 3.59 4.978 0.9 1.3849 1.8076.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-. PT [ t] 9 = 0.9 kun t = 1.383 0. α :n arvoja 0.95 ja 0.975 vastaavat pisteet ovat 1.8331 ja.6. 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.5/ = 1.5% 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 ν=9 ν=49 0.90 1.3830 1.377 1.3114 1.991 0.95 1.8331 1.791 1.6991 1.6766 0.975.6.0930.045.0096 Taulukko 4-. t-jakauman vertailupisteet. 11
Kuvissa 4-, 4-3 ja 4-4 ovat tilanteet otoskoon ollessa 0, 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-. z:n histogrammikuvaajat otoskoolla 0. Trimmauksina 1, ja 3. Trimmaus 0 1 3 Luottamusvälin α 0.975.1005.4807.8533 3.669 0.95 1.7334.0416.335.6608 0.9 1.394 1.561 1.7799.0166 Taulukko 4-3. Eri luottamusvälejä vastaavat z-jakauman pisteet otoskoolla 0. 1
Kuva 4-3. z:n histogrammikuvaajat otoskoolla 30. Trimmauksina 1, ja 3. Kuva 4-4. z:n histogrammikuvaajat otoskoolla 50. Trimmauksina 1, ja 3. 13
Trimmaus 0 1 3 Luottamusvälin α 0.975.0507.304.5613.8036 0.95 1.70 1.98.101.3177 0.9 1.314 1.485 1.6311 1.7796 Taulukko 4-4. Eri luottamusvälejä vastaavat z-jakauman pisteet otoskoolla 30. Trimmaus 0 1 3 Luottamusvälin α 0.975.0105.1917.3414.4847 0.95 1.6777 1.876 1.957.0711 0.9 1.997 1.4145 1.5111 1.6015 Taulukko 4-5. Eri luottamusvälejä vastaavat z-jakauman pisteet otoskoolla 50. 4. 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ä (.6) todennäköisyyttä α vastaava jakauman arvo on suurempi. Jos olisimme testaamassa hypoteesia H 0 1 : µ = 0 H : µ 0 (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. 000 17
Liite A Matlab M-tiedosto Satunnaislukugeneraattorin testaukseen käytetty % 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 end f(rvalues(i)) = f(rvalues(i)) + 1; t = 0; for I=1:r end t = t + f(i)^; 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.5' ); conf_points(z(:,1),.5) conf_points(z(:,),.5) conf_points(z(:,3),.5) conf_points(z(:,4),.5) fprintf(1,'trim_1000000_10.mat 5.0' ); conf_points(z(:,1), 5) conf_points(z(:,), 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(:,), 10) conf_points(z(:,3), 10) conf_points(z(:,4), 10) z=trim_loop(1000000,0,3); save trim_1000000_0.mat z fprintf(1,'trim_1000000_0.mat.5' ); conf_points(z(:,1),.5) conf_points(z(:,),.5) conf_points(z(:,3),.5) conf_points(z(:,4),.5) fprintf(1,'trim_1000000_0.mat 5.0' ); conf_points(z(:,1), 5) conf_points(z(:,), 5) conf_points(z(:,3), 5) conf_points(z(:,4), 5) fprintf(1,'trim_1000000_0.mat 10.0' ); conf_points(z(:,1), 10) conf_points(z(:,), 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.5' ); conf_points(z(:,1),.5)
conf_points(z(:,),.5) conf_points(z(:,3),.5) conf_points(z(:,4),.5) fprintf(1,'trim_1000000_30.mat 5.0' ); conf_points(z(:,1), 5) conf_points(z(:,), 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(:,), 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.5' ); conf_points(z(:,1),.5) conf_points(z(:,),.5) conf_points(z(:,3),.5) conf_points(z(:,4),.5) fprintf(1,'trim_1000000_50.mat 5.0' ); conf_points(z(:,1), 5) conf_points(z(:,), 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(:,), 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 4 (0,1)-tasajakautuneen satunnaisluvun summana. %4:n (0,1)-tasajakautuneen satunnaisluvun summa on %(1,)-normaalijakautunut. function x = normal_sample(sample_size) x = zeros(sample_size,1); load seed.mat s; rand('state', s); for i = 1:sample_size end x(i) = (sum(rand(4,1))-1)/; 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(:s-1); s = s-; 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,) = data_sorted(point+1); x(i,3) = data_sorted(data_size-point-1); x(i,4) = (abs(x(i,))+abs(x(i,3)))/; end