Pasi Väkeväinen Ohjeita tilastollisen tutkimuksen toteuttamiseksi MATLAB-ohjelmiston avulla TAMPEREEN YLIOPISTO INFORMAATIOTIETEIDEN YKSIKÖN RAPORTTEJA 63/2018 TAMPERE 2018
TAMPEREEN YLIOPISTO INFORMAATIOTIETEIDEN YKSIKÖN RAPORTTEJA 63/2018 SYYSKUU 2018 Pasi Väkeväinen Ohjeita tilastollisen tutkimuksen toteuttamiseksi MATLAB-ohjelmiston avulla ISBN 978-952-03-0871-1 (pdf) ISSN-L 1799-8158 ISSN 1799-8158
Aluksi Tässä oppaassa on Matlab-toteutukset Raija Leppälän oppaan Ohjeita tilastollisen tutkimuksen toteuttamiseksi IBM SPSS Statistics -ohjelmiston avulla esimerkeistä sekä yleisiä ohjeita ohjelmistoon liittyen. MATLAB on The MathWorks -yhtiön ylläpitämä numeeriseen laskentaan tarkoitettu tietokoneohjelmisto sekä siinä käytettävä ohjelmointikieli. Tampereen yliopiston lisenssisopimuksella yliopiston opiskelijat ja henkilökuntaan kuuluvat voivat ladata ja käyttää Matlabia maksutta myös omilla tietokoneillaan (ohjeet). Siinä missä SPSS on ns. point and click -tyyppinen ohjelma ja R varsin puhtaasti ohjelmointiin perustuva, Matlabissa on piirteitä molemmista. Kuten R:n, myös Matlabin edistyneempien toimintojen käyttö vaatii jonkin verran ohjelmointiosaamista, mutta aiempaa kokemusta ohjelmoinnista tämän oppaan lukijalta ei oleteta. Tässä oppaassa käytössä oleva Matlab-versio on R2017b (9.3). Lukijalta oletetaan perusosaamista tilastotieteestä ja käytettävien menetelmien tuntemista, sillä tämä opas keskittyy toteutukseen Matlab-ohjelmistolla. Aluksi tutustutaan yleisemmin Matlab-ympäristöön ja syntaksiin, sen jälkeen aineiston käsittelyyn ja lopuksi analysointimenetelmiin. Opas on kirjoitettu siten, että parhaan hyödyn siitä saa toistamalla esimerkkejä järjestyksessä alusta alkaen. Tampereella 10. syyskuuta 2018 Pasi Väkeväinen 1
Sisällysluettelo Matlab-työtila 3 Muuttuja, sijoitusoperaatio ja tietotyypit... 3 Funktio... 6 Aineiston tuonti... 6 Aineiston ja työtilan tallennus... 7 Aineiston käsittely, jakaumat ja plottaus 7 Muuttujien muunnokset laskutoimituksilla... 7 Ehdollistaminen... 8 Histogrammi... 9 Pylväsdiagrammi... 9 Muuttujan luokittelu... 11 Ehdolliset frekvenssihistogrammit... 13 Tunnusluvut... 16 Ehdolliset tunnusluvut... 17 Laatikkojanakuvio... 17 Pisteparvi ja korrelaatio... 18 Analysointimenetelmiä 19 χ 2 -riippumattomuustesti... 19 Riippumattomien otosten t-testi... 20 Levenen testi varianssien yhtäsuuruudelle... 21 Varianssianalyysi... 22 Kaksisuuntainen varianssianalyysi... 26 Regressioanalyysi... 29 Linkkejä 31 2
Matlab-työtila Matlab-työtila Käynnistettäessä Matlab avautuu oheinen näkymä. Ikkunassa keskellä on komentoikkuna (Command Window), oikealla työtila-ikkuna (Workspace) ja vasemmalla tietoa kansioista. Command Window Workspace Variables Current Folder Details Komentoikkuna, komentojen suorittamiseen. Listaus työtilan muuttujista. Ikkuna, jossa näkee muuttujien sisällön ja voi muuttaa yksittäisiä arvoja. Aukeaa kaksoisklikkaamalla muuttujaa Workspace-ikkunassa. Kansio, jossa on tallennettuja työtiloja sekä muita tiedostoja. Klikkaamalla työtila-tiedostoa Current Folder -ikkunassa, tähän avautuu listaus kyseisen tiedoston muuttujista. Muuttuja, sijoitusoperaatio ja tietotyypit Matlabissa tietoa tallennetaan muuttujiin. Ohjelmointiympäristössä muuttuja tarkoittaa nimettyä tietovarastoa, johon tietoa voidaan kirjoittaa ja josta tietoa voidaan hakea. Muuttujassa siis nimen takaa löytyy arvo, joka voi olla esimerkiksi yksittäinen numeerinen arvo, merkkijono tai totuusarvo, vektori tai koko havaintomatriisi. Sijoitusoperaatiolla tarkoitetaan arvon kirjoittamista muuttujaan. Muuttujan voi luoda suoraan sijoitusoperaatiolla: >> Nimi = Arvo 3
Komennon alkuun kirjoitetaan muuttujan nimi, joka voi sisältää isoja ja pieniä kirjaimia, numeroita ja alaviivoja. Ensimmäisen merkin on oltava kirjain. Muuttujan nimen jälkeen kirjoitetaan yhtäsuuruusmerkki, joka on Matlabissa sijoitusoperaattori. Tämän jälkeen kirjoitetaan arvo, joka muuttujaan halutaan sijoittaa. Komento suoritetaan painamalla Enteriä. Suoritettaessa sijoitusoperaatiota Matlab tulostaa muuttujan arvon komentoikkunaan, ellei komennon loppuun lisätä puolipistettä. Tässä oppaassa komennon tunnistaa kahdesta >-merkistä rivin alussa. Nämä ovat Matlabin komentoikkunassa valmiina, eikä niitä tarvitse itse kirjoittaa. Yksittäisen numeerisen arvon sijoitus muuttujaan: >> x = 5 x = 5 Desimaalit erotetaan pisteellä: >> x = 3.14 x = 3.14 Kun vanhaan muuttujaan sijoitetaan uusi arvo, vanha arvo katoaa. Kannattaa siis varoa tärkeiden tietojen, kuten havaintomatriisin päälle tallentamista. Vektori, eli järjestetty yksiulotteinen joukko arvoja, muodostetaan ilmoittamalla arvot hakasulkeissa välilyönnillä erotettuna. >> x = [1 2 3 4 5] x = 1 2 3 4 5 Vektorin kertominen skalaarilla: >> y = 2*x y = 2 4 6 8 10 Vektorin muunnos sarakevektoriksi: >> x' 1 2 3 4 5 Matriisin voidaan ajatella koostuvan vektoreista: havaintomatriisin jokainen sarakevektori kuvaa tietyn muuttujan havaintoarvoja, ja jokainen rivivektori yhden tilastoyksikön havaintoarvoja eri muuttujista. 4
Taulukko (table) on matriisin tapainen rakenne, joka koostuu riveistä ja sarakkeista. Taulukon eri sarakkeet voivat sisältää eri tietotyypin arvoja, minkä vuoksi se on paras vaihtoehto havaintomatriisin tallentamiseen. Sarakevektoreiden yhdistäminen taulukoksi: >> z = table(x', y') z = 5 2 table Var1 Var2 1 2 2 4 3 6 4 8 5 10 Mikäli muuttuja sisältää useita arvoja (kuten vektori tai taulukko), yksittäistä arvoa kutsutaan alkioksi. Taulukosta voidaan valita alkioita ilmoittamalla rivi- ja sarakenumerot sulkeissa. Mikäli käytetään kaarisulkeita, saadaan vastaus taulukkomuotoisena, ja aaltosulkeilla vektorimuotoisena. >> z(4,2) table Var2 8 >> z{4,2} 8 Kokonainen rivi tai sarake voidaan valita korvaamalla toinen numeroista kaksoispisteellä. >> z(:,2)... >> z{:,2}... Monet Matlabin ongelmatilanteista johtuvat vääränlaisten sulkeiden käytöstä. Ongelmia selvittäessä kannattaakin varmistaa, että käyttää tilanteeseen sopivia sulkeita. Matlabilla on useita erilaisia tyylejä desimaalilukujen ilmaisemiseen. Tässä oppaassa käytettävän tyylin saa käyttöön suorittamalla komennon >> format shortg 5
Funktio Funktio on prosessi, joka suorittaa tietyn toiminnon. Usein funktiolle annetaan syötteenä (input) yksi tai useampi parametri, eli tieto, joita funktio käyttää toimintonsa suorittamiseen. Matlabissa parametrit ilmoitetaan kaarisulkeissa pilkulla erotettuna. Usein funktio myös palauttaa (output) jotakin. Esimerkiksi mean-funktiolle annetaan syötteenä joukko lukuja esimerkiksi vektorina, ja funktio palauttaa lukujen keskiarvon. Vastaavasti funktio var laskee syötelukujen varianssin. >> mean(x) 3 >> var(x) 2.5 Tietoa funktioista ja niiden käytöstä löytyy klikkaamalla Matlabin yläreunassa näkyvää kysymysmerkkiä ja hakemalla hakukentästä funktion nimellä dokumentaatiota. Näin saa selville mm. funktion käyttötarkoituksen, tarvittavat parametrit ja esimerkkejä käytöstä. Lisäksi samasta hakukentästä voi hakea avainsanojen avulla funktiota jollekin toiminnolle. Aineiston tuonti Matlab ei osaa lukea SPSS:n.sav-tiedostoja. Tästä oppaasta löytyy linkit käytettäviin aineistoihin.xls-muotoisina. Tiedosto voidaan lukea Matlab-työtilaan yläpalkin Import Data-toiminnon avulla. Import Data > Valitse tiedosto > Valitse aineistolle tietotyyppi (Output Type) > Varmista, että muuttujien tyypit ovat oikeita (Number / Categorical ) > Valitse koko havaintomatriisi (Muuttujien nimiä ei tarvitse valita) > Rasvaprosentti-aineisto voidaan tuoda Matlabiin seuraavasti: Import Data > rasvaprosentti.xls > Taulukko-tietotyyppi (Table) > Kaikki muuttujat numeerisia (Number) > Valittu alue (Range) A2:O253 > Havaintomatriisin manuaalinen luominen: 1. Luo uusi taulukko komennolla >> HavaintomatriisinNimi = table(); 2. Kaksoisklikkaa taulukkoa Workspace-ikkunassa, jolloin se avautuu Variables-ikkunaan. 3. Syötä havaintoarvot. Muuttujat voi nimetä kaksoisklikkaamalla sarakkeen yläreunassa näkyvää nimeä. 6
Aineiston ja työtilan tallennus Aineiston voi tallentaa tekstitiedostoon writetable-funktiolla. Syötteenä annetaan tallennettava taulukko ja tiedostosijainti, johon tallennetaan. Oletuksena funktio käyttää erottimena pilkkua, mutta sitä voi muuttaa Delimeter-parametrin avulla. Rasvaprosentti-aineiston tallennus K-asemalle.txt-tiedostona, jossa havaintoarvot on erotettu välilyönnillä: >> writetable(rasvaprosentti, 'K:/rasvaprosentti.txt', 'Delimiter', ' ') Annettaessa Matlabin funktioille ylimääräisiä parametreja, kuten tässä tapauksessa välimerkkiä, noudatetaan kaavaa >> funktio(..., 'Parametrin nimi', Arvo) Ensin ilmoitetaan parametrin nimi heittomerkeissä ja sen jälkeen arvo. Myös arvo ilmoitetaan heittomerkeissä, mikäli se on merkkijono- tai kategorinen arvo. Numeerisen arvon kanssa ei käytetä heittomerkkejä. Näistä nimi-arvo -pareista löytyy tietoa funktioiden dokumentaatioista. Matlabin työtilan voi tallentaa Save Workspace -painikkeella. Tällöin kaikki Workspaceikkunassa näkyvät muuttujat tallentuvat. Tallennetun työtilan saa otettua käyttöön kaksoisklikkaamalla.mat-tiedostoa Current Folder -ikkunassa. Aineiston käsittely, jakaumat ja plottaus Muuttujien muunnokset laskutoimituksilla Esimerkki 1 Rasvaprosentti-aineistossa pituus on mitattu tuumina ja paino nauloina. Muutetaan nämä metrijärjestelmään ja lasketaan painoindeksi. Luodaan uudet muuttujat laskutoimituksilla: >> painokg = rasvaprosentti{:, 4} * 0.454; >> pituusm = rasvaprosentti{:, 5} * 0.0254; >> painoindeksi = painokg./ (pituusm.* pituusm); Matriiseilla, vektoreilla ja taulukoilla laskettaessa käytetään pistettä ennen operaattoria silloin kun halutaan suorittaa laskutoimitukset alkioittain, eikä perinteisiä matriisilaskutoimituksia. Muuttujat voi liittää rasvaprosentti-taulukkoon komennolla >> rasvaprosentti = [rasvaprosentti table(painokg, pituusm, painoindeksi)]; Hakasulkeiden avulla yhdistetään alkuperäinen rasvaprosentti-taulukko ja uusista muuttujista luotava taulukko. Muuttujat voi liittää myös manuaalisesti: 7
Kaksoisklikkaa uutta muuttujaa Workspace-ikkunassa, jolloin se aukeaa Variables-ikkunaan. Valitse koko sarake ja kopioi. Siirry rasvaprosentti-taulukkoon, valitse tyhjän sarakkeen ylin solu ja liitä. Nimeä muuttuja halutulla tavalla kaksoisklikkaamalla sarakkeen yläreunassa näkyvää nimeä. Ehdollistaminen Aineistosta voi valita tietyn joukon havaintoja omaan taulukkomuuttujaansa. Tämä tapahtuu komennolla: >> uusiaineisto = vanhaaineisto( ehto, : ); >> nuoret = rasvaprosentti(rasvaprosentti{:,3} < 25, :); Tässä esimerkissä rasvaprosentti{:,3} < 25 vertaa rasvaprosentti-taulukon kolmannen sarakkeen eli ikä-muuttujan alkioita arvoon 25 ja palauttaa vektorin, jossa on totuusarvo (logical) 1 niiden havaintojen kohdalla, joiden ikä on pienempi kuin 25, ja totuusarvo 0, mikäli ikä on 25 tai suurempi. Tällöin uuteen taulukkomuuttujaan saadaan ne havainnot, joiden kohdalla on arvo 1. Koska sarakeindeksien paikalla on kaksoispiste, uuteen taulukkoon otetaan kaikki sarakkeet. Jos halutaan valita vain osa sarakkeista, ne ilmoitetaan hakasulkeissa välilyönnillä erotettuna: >> nuoret = rasvaprosentti(rasvaprosentti{:,3} < 25, [1 2 4 8]); Taulukon alusta voidaan tulostaa rivejä head-funktiolla: >> head(nuoret, 4) 4 4 table tiheys rasvapro paino vyota 1.0708 12.3 154.25 85.2 1.0853 6.1 173.25 83 1.0414 25.3 154 87.9 1.034 28.7 184.25 100 Loogiset operaattorit: Operaattori Kuvaus < pienempi kuin <= pienempi tai yhtäsuuri kuin > suurempi kuin >= suurempi tai yhtäsuuri kuin == yhtäsuuri kuin ~= erisuuri kuin ~x ei x x y x tai y x & y x ja y 8
Histogrammi Histogrammin piirtäminen histogram-funktiolla yleisessä muodossa: >> histogram( Muuttuja ) Esimerkki 2 Painoindeksin frekvenssihistogrammin piirtäminen. >> histogram(rasvaprosentti{:,18}) Edit > Axes Properties: Akseleiden nimeämiseen ja otsikon lisäämiseen (X Label, Y Label, Title). Pylväsdiagrammi Pylväsdiagrammin piirtäminen numeerisesta muuttujasta yleisessä muodossa: >> frekvenssijakauma = tabulate( Numeerinen muuttuja ) >> bar( frekvenssijakauma( :, 2 ) ) Muuttujan arvot on siis ensin taulukoitava tabulate-funktiolla. Tästä taulukosta saadaan pylväsdiagrammi bar-funktion avulla. Frekvenssijakauman voi nimetä haluamallaan tavalla. Esimerkki 3 Huoneiden lukumäärän pylväsdiagrammi Asunnot2006-aineistossa. Aineiston tuonti: Import Data > Asunnot_2006.xls > Taulukko (Table) > Kategorisia muuttujia SAUNA, POSTI, KAUPUNKI ja Alue > Valittu alue A2:I230 > 9
Muodostetaan ensin frekvenssitaulukko: >> frekvenssijakauma = tabulate(asunnot2006{:,3}) frekvenssijakauma = 1 31 13.537 2 114 49.782 3 71 31.004 4 10 4.3668 5 2 0.87336 6 1 0.43668 Taulukon ensimmäisessä sarakkeessa on taulukoidun muuttujan arvo, toisessa sarakkeessa kyseisen arvon frekvenssi ja kolmannessa sarakkeessa prosentuaalinen osuus. Muodostetaan pylväsdiagrammi taulukon toisesta sarakkeesta: >> bar(frekvenssijakauma(:,2)) Kategorisella muuttujalla edellinen kaava ei toimi Matlabin funktioiden ja tietotyyppien ominaisuuksien vuoksi. Kategorisesta muuttujasta saadaan pylväsdiagrammi seuraavalla komennolla: >> bar( countcats( Kategorinen muuttuja ) ) countcats-funktio laskee muuttujan arvojen frekvenssit ja palauttaa ne vektorina, joka vastaa tabulate-funktion taulukon toista saraketta. Tästä vektorista voidaan muodostaa pylväsdiagrammi samalla tavalla bar-funktion avulla. Pylväsdiagrammi asuntojen sijainnista: >> bar( countcats(asunnot2006{:,9}) ) X-akselilla näkyviä arvoja voidaan muuttaa: Edit > Axes Properties > X Axis > Ticks > Labels-sarakkeeseen Locations-saraketta vastaavat arvot > OK 10
Muuttujan tyypin voi tarkistaa iscategorical-funktiolla. Funktio antaa totuusarvon (logical) 1, mikäli syötemuuttuja on kategorinen ja 0, mikäli muuttuja ei ole kategorinen. >> iscategorical(asunnot2006{:,9}) logical 1 Vastaavasti funktio isnumeric kertoo, onko muuttuja numeerinen: >> isnumeric(asunnot2006{:,9}) logical 0 Muuttujan luokittelu 1. Kopioi luokiteltavan muuttujan arvot uuteen muuttujaan: >> uusimuuttuja = vanhamuuttuja; 2. Muuta uuden muuttujan arvoja: >> uusimuuttuja( ehto1 ) = uusiarvo1; >> uusimuuttuja( ehto2 ) = uusiarvo2;... 3. Muuta uusi muuttuja kategoriseksi muuttujaksi, jotta Matlab ei käsittele arvoja numeerisina: 11
>> uusimuuttuja = categorical( uusimuuttuja ); 4. Tarkista, että muunnokset onnistuivat halutulla tavalla esimerkiksi tabulate-funktion avulla: >> tabulate( uusimuuttuja ) 5. Liitä uusi muuttuja havaintomatriisiin komennolla: Esimerkki 4 >> Aineisto = [Aineisto table( uusimuuttuja )]; Asunnot2006-aineiston luokittelu huonelukumäärän mukaan yksiöihin, kaksioihin ja kaksioita suurempiin. Kopioidaan ensin vanhan HUONEITA-muuttujan arvot uuteen huoneisto-muuttujaan. >> huoneisto = Asunnot2006{:,3}; Tämän jälkeen tehdään muunnokset arvoihin: valitaan ne havainnot, joiden arvo on suurempi kuin 3 ja sijoitetaan niiden paikalle arvo 3. >> huoneisto(huoneisto > 3) = 3; Muutetaan muuttuja kategoriseksi: >> huoneisto = categorical(huoneisto); Taulukointi tabulate-funktiolla: >> tabulate(huoneisto) Value Count Percent 1 31 13.54% 2 114 49.78% 3 84 36.68% Tämän jälkeen uusi muuttuja voidaan liittää Asunnot2006-aineistoon. >> Asunnot2006 = [Asunnot2006 table(huoneisto)]; Esimerkki 5 Painoindeksin luokittelu lihavuus-muuttujaksi. Kopioidaan luokiteltavan muuttujan arvot uuteen muuttujaan: >> lihavuus = rasvaprosentti{:,18}; Luokitellaan arvoiksi 1 4: >> lihavuus( rasvaprosentti{:,18} < 25 ) = 1; >> lihavuus( rasvaprosentti{:,18} >= 25 & rasvaprosentti{:,18} < 30 ) = 2; >> lihavuus( rasvaprosentti{:,18} >= 30 & rasvaprosentti{:,18} < 35 ) = 3; >> lihavuus( rasvaprosentti{:,18} >= 35 ) = 4; Muutetaan kategoriseksi: >> lihavuus = categorical(lihavuus); 12
Taulukoidaan uuden muuttujan arvot: >> tabulate(lihavuus) Value Count Percent 1 125 49.80% 2 102 40.64% 3 21 8.37% 4 3 1.20% Liitetään uusi muuttuja aineistoon: >> rasvaprosentti = [rasvaprosentti table(lihavuus)]; Esimerkki 6 Kaksioiden neliöhintojen tutkiminen. Neliöhinta-muuttujan luominen vektorilaskutoimituksella: >> neliohinta = Asunnot2006{:,6}./ Asunnot2006{:,5}; Liitetään muuttuja Asunnot2006-aineistoon: >> Asunnot2006 = [Asunnot2006 table(neliohinta)]; Valitaan kaksiot omaan taulukkoonsa: >> kaksiot = Asunnot2006( Asunnot2006{:,3} == 2, : ); Eri alueiden kaksiot omiin taulukoihinsa >> keskustakaksiot = kaksiot( kaksiot{:,9} == '1', : ); >> lansikaksiot = kaksiot( kaksiot{:,9} == '2', : ); >> itakaksiot = kaksiot( kaksiot{:,9} == '3', : ); Koska Alue-muuttuja on kategorinen, sen arvoja verrataan heittomerkkien avulla. Mikäli muuttujaa ei oltaisi aineistoa tuotaessa muutettu kategoriseksi vaan se olisi edelleen numeerinen muuttuja, heittomerkkejä ei tarvittaisi. Ehdolliset frekvenssihistogrammit Samaan kuvaan saa piirrettyä useamman plotin subplot-funktion avulla. Kaksi ensimmäistä parametria kertovan plottausikkunan rivien ja sarakkeiden määrän (kuinka monta plottia päällekkäin ja vierekkäin) ja kolmas parametri kertoo, mihin ruutuun piirretään seuraavaksi. Histogrammifunktion BinWidth-parametrilla valitaan yksittäisen pylvään leveys histogrammissa. >> subplot(3,1,1) >> histogram(keskustakaksiot{:,11}, 'BinWidth', 500/3) >> subplot(3,1,2) >> histogram(lansikaksiot{:,11}, 'BinWidth', 500/3) >> subplot(3,1,3) >> histogram(itakaksiot{:,11}, 'BinWidth', 500/3) Edit > Axes Properties > Valitaan yksi histogrammeista kerrallaan klikkaamalla valkoista aluetta histogrammin sisällä ja asetetaan X Limits -arvoiksi 900 ja 4100, ja vastaavasti 13
Y Limits 0 ja 20. Annetaan histogrammeille otsikot (Title) Keskusta, Länsi ja Itä. Lisätään alimpaan histogrammiin X-akselin selitteeksi Neliöhinta ja keskimmäiseen histogrammiin Y-akselin selitteeksi Frekvenssi. Saadaan oheinen lopputulos: Esimerkki 7 Huoneisto-muuttujan jakauma alueittain. Otetaan ensin eri alueiden asunnot omiin muuttujiinsa: >> keskusta = Asunnot2006( Asunnot2006{:,9} == '1', : ); >> lansi = Asunnot2006( Asunnot2006{:,9} == '2', : ); >> ita = Asunnot2006( Asunnot2006{:,9} == '3', : ); Tämän jälkeen voidaan taulukoida tabulate-funktiolla: >> tabulate(keskusta{:,10}) Value Count Percent 1 13 12.62% 2 58 56.31% 3 32 31.07% >> tabulate(lansi{:,10}) Value Count Percent 1 4 11.76% 2 18 52.94% 3 12 35.29% >> tabulate(ita{:,10}) Value Count Percent 1 14 15.22% 2 38 41.30% 3 40 43.48% 14
Esimerkki 8 Pylväsdiagrammin piirtäminen huoneistotyyppijakaumasta alueittain. Tallennetaan edellisen esimerkin taulukot muuttujiin: >> tab1 = tabulate(keskusta{:,10}); >> tab2 = tabulate(lansi{:,10}); >> tab3 = tabulate(ita{:,10}); Valitaan näistä prosenttiosuudet. Uuden taulukon voi muodostaa ilmoittamalla hakasulkeissa välilyönneillä erotettuna muodostettavan taulukon sarakkeet. Koska taulukoitu huoneisto-muuttuja on kategorinen, tabulate-funktio muodostaa cell-tyyppisen taulukon. Funktio cell2mat muuttaa tämän numeeriseksi matriisiksi. >> osuudet = cell2mat( [tab1(:,3) tab2(:,3) tab3(:,3)] ) osuudet = 12.621 11.765 15.217 56.311 52.941 41.304 31.068 35.294 43.478 Funktio barh vastaa aiemmin käytettyä bar-funktiota, mutta se piirtää diagrammin vaakatasoon. Parametrilla stacked funktio pinoaa syötematriisin jokaisen rivin omaan pylvääseensä. Koska prosenttiosuuksien matriisista halutaan pinota sarakkeet, annetaan barh-funktiolle syötteenä sen transpoosi. Matriisin transpoosissa rivit on muutetu sarakkeiksi ja päinvastoin. Transpoosi saadaan lisäämällä matriisin nimen perään heittomerkki: >> osuudet' 12.6214 56.3107 31.0680 11.7647 52.9412 35.2941 15.2174 41.3043 43.4783 >> barh(osuudet', 'stacked') >> legend('yksiö', 'Kaksio', 'Kaksiota suurempi') 15
Selitelaatikon siirtäminen kuvion ulkopuolelle: Edit > Figure Properties > klikkaa selitelaatikkoa > Location Alueiden nimeäminen Y-akselilla: Edit > Axes Properties > Y Axis > Ticks > Labels Tunnusluvut Tunnusluvut saadaan omilla funktioillaan: Funktio max mean median min mode std var Kuvaus suurin arvo keskiarvo mediaani pienin arvo useimmin esiintyvä arvo keskihajonta varianssi Esimerkki 9 Esimerkkejä funktioiden käytöstä: >> max(rasvaprosentti{:,18}) 48.955 16
Funktiot mean, median, std ja var eivär pysty käsittelemään puuttuvia arvoja, ja antavat vastauksen NaN, mikäli syötemuuttujasta puuttuu arvoja. Funktioille on korvaajat nanmean, nanmedian, nanstd ja nanvar, jotka laskevat vastaavat tunnusluvut huomioimatta puuttuvia arvoja. >> nanmean(rasvaprosentti{:,18}) 25.409 >> std(asunnot2006{:,3}) 0.82346 >> mode(asunnot2006{:,3}) 2 Ehdolliset tunnusluvut Ehdolliset tunnusluvut voidaan laskea grpstats-funktiolla. Yleisessä muodossa: >> grpstats( Numeerinen muuttuja, Kategorinen muuttuja, 'funktio' ) Funktion paikalle annetaan halutun tunnusluvun määrittävä funktio. Mikäli funktiota ei ilmoita, grpstats laskee oletuksena ryhmäkeskiarvot. Esimerkki 10 Neliöhinnan keskiarvot eri alueilla: >> grpstats(asunnot2006{:,11}, Asunnot2006{:,9}) 2397.6 1414.3 1536.1 Keskihajonnat: >> grpstats(asunnot2006{:,11}, Asunnot2006{:,9}, 'std') 408.02 260.4 341.69 Laatikkojanakuvio Laatikkojanan piirtäminen yleisessä muodossa: >> boxplot( Numeerinen muuttuja, Kategorinen muuttuja ) Neliöhinta eri alueilla: >> boxplot(asunnot2006{:,11}, Asunnot2006{:,9}) 17
Pisteparvi ja korrelaatio Pisteparven piirtäminen yleisessä muodossa: >> scatter( X-akselin muuttuja, Y-akselin muuttuja ) Esimerkki 11 Rasvaprosentin ja vyötärönympäryksen pisteparvi: >> scatter(rasvaprosentti{:,2}, rasvaprosentti{:,8}) 18
Korrelaatiokertoimen laskeminen corrcoef-funktiolla yleisessä muodossa: >> corrcoef( Numeerinen muuttuja 1, Numeerinen muuttuja 2 ) Rasvaprosentin ja vyötärönympäryksen välinen korrelaatio: >> corrcoef(rasvaprosentti{:,2}, rasvaprosentti{:,8}) 1 0.81343 0.81343 1 Analysointimenetelmiä χ 2 -riippumattomuustesti χ 2 -riippumattomuustesti crosstab-funktiolla yleisessä muodossa: >> [tab chi2 p] = crosstab(kategorinen muuttuja 1, Kategorinen muuttuja 2) Jotta funktio antaa frekvenssitaulukon lisäksi χ 2 -testisuureen ja p-arvon, funktion paluuarvot on sijoitettava kolmeen muuttujaan (hakasulkeissa, välilyönnillä erotettuina). Esimerkki 12 Huoneiston ja Alueen välisen riippuvuuden testaus Asunnot_2006 -aineistossa. H0: Huoneiston tyypin ja alueen välillä ei ole riippuvuutta H1: Huoneiston tyypin ja alueen välillä on riippuvuutta >> [tab chi2 p] = crosstab(asunnot2006{:,10}, Asunnot2006{:,9}) tab = 13 4 14 58 18 38 32 12 40 chi2 = 4.6742 p = 0.32239 Muuttujat voi nimetä haluamallaan tavalla, mutta järjestys on oltava sama: ensimmäiseen muuttujaan sijoitetaan frekvenssitaulukko, toiseen testisuure ja kolmanteen p-arvo. Testisuureen arvoksi saadaan 4,6742 ja p-arvo 0,3224. H0 hyväksytään. Esimerkki 13 Opintojakson työläyden ja opiskelijan opintosuunnan välisen riippuvuuden testaus. Arvio-aineiston tuonti: Import Data > arvio.xls > Taulukko (Table) > OPSUUNTA kategoriseksi muuttujaksi > Valittu alue A2:G66 > Opintosuunnan ja opintojakson työläyden välisen riippuvuuden testaus: 19
H0: Opintojakson työläyden ja opiskelijan opintosuunnan välillä ei ole riippuvuutta H1: Opintojakson työläyden ja opiskelijan opintosuunnan välillä on riippuvuutta >> [tab chi2 p] = crosstab(arvio{:,1}, arvio{:,7}) tab = 13 5 1 16 15 15 chi2 = 7.668 p = 0.021623 Saadaan testisuureen arvo 7,668 ja p-arvo 0,021623. Nollahypoteesi hylätään 5 % riskitasolla, mutta 2 % tai pienemmällä riskitasolla H0 voidaan hyväksyä. Riippumattomien otosten t-testi T-testi funktiolla ttest2. Funktiolle annetaan syötteenä kaksi vektoria, joissa on yhden numeerisen muuttujan havaintoarvot eri populaatioista. Testaus yleisessä muodossa: >> [h p ci stats] = ttest2( Havaintovektori 1, Havaintovektori 2 ) Funktion arvo sijoitetaan neljään muuttujaan. Ensimmäinen muuttujista kertoo, kumpi hypoteesi valitaan 5 % riskitasolla (h = 0 jos valitaan nollahypoteesi ja h = 1 jos vaihtoehtoinen hypoteesi). Toinen muuttuja kertoo testin p-arvon. Kolmas muuttuja antaa luottamusvälin odotusarvojen erotukselle. Viimeiseen, stats-muuttujaan, sisältyy testisuure, vapausasteet ja keskihajonta. Esimerkki 14 Keskustan ja keskustan ulkopuolisten asuntojen keskineliöhintojen yhtäsuuruuden testaus t-testillä. Muodostetaan ensin havaintovektorit. Keskusta-vektoriin otetaan 11. sarakkeen arvot eli neliöhinnat niiltä havainnoilta, joiden 8. sarakkeen eli KAUPUNKI-muuttujan arvo on 1. Vastaavasti italansi-vektoriin valitaan 11. sarakkeen arvot niiltä, joiden 8. sarakkeen arvo on 0. >> keskusta = Asunnot2006{Asunnot2006{:,8} == '1', 11}; >> italansi = Asunnot2006{Asunnot2006{:,8} == '0', 11}; Suoritetaan testaus ttest2-funktiolla. H0: Neliöhinnan odotusarvot yhtäsuuria keskustassa ja keskustan ulkopuolella H1: Neliöhinnan odotusarvot eivät yhtäsuuria >> [h p ci stats] = ttest2(keskusta, italansi) h = 1 p = 4.5602e-47 ci = 798.86 989.84 stats = 20
struct with fields: tstat: 18.455 df: 227 sd: 364.82 Saadaan testisuureelle arvo 18,455 ja p-arvo 4,5602 10 47. Nollahypoteesi hylätään. Testi olettaa varianssit yhtäsuuriksi, ellei lisätä parametreja: >> [h p ci stats] = ttest2(keskusta, italansi, 'Vartype', 'unequal') Levenen testi varianssien yhtäsuuruudelle Varianssien yhtäsuuruutta voidaan testata Levenen testillä. Matlabissa tämä testi suoritetaan vartestn-funktiolla: >> [p stats] = vartestn( Numeerinen muuttuja, Kategorinen muuttuja, 'Testtype', 'LeveneAbsolute' ) Levenen testissä ei käytetä samoja havaintovektoreita kuin t-testissä, vaan annetaan koko sarakkeet havaintomatriisista. Funktio palauttaa p-arvon, testisuureen ja vapausasteet sekä avaa uusiin ikkunoihin tiivistelmän testituloksista ja piirretyn laatikkojanakuvion. Neliöhinnan varianssien yhtäsuuruus keskustassa ja keskustan ulkopuolella: H0: Neliöhinnan varianssit yhtäsuuria populaatioissa H1: Neliöhinnan varianssit eivät yhtäsuuria >> [p stats] = vartestn(asunnot2006{:,11}, Asunnot2006{:,8}, 'Testtype', 'LeveneAbsolute') Testisuureeksi saadaan 1,2352, vapausasteita 1 ja 227, p-arvo 0,2676. H0 hyväksytään ja varianssit voidaan olettaa yhtäsuuriksi. Esimerkki 15 Neliömäärien odotusarvojen yhtäsuuruuden testaus keskustan ulkopuolisissa ja keskustan kaksioissa. Testataan ensin varianssien yhtäsuuruutta Levenen testillä: H0: Kaksioiden neliömäärien varianssit yhtäsuuria populaatioissa H1: Kaksioiden neliömäärien varianssit eivät yhtäsuuria >> [p stats] = vartestn(kaksiot{:,5}, kaksiot{:,8}, 'Testtype', 'LeveneAbsolute') 21
Saadaan testisuure 0,0256 ja p-arvo 0,8731. Varianssit voidaan olettaa yhtäsuuriksi. Otetaan neliömäärät omiin vektoreihinsa: >> keskustakaksiot = kaksiot{kaksiot{:,8} == '1', 5}; >> italansikaksiot = kaksiot{kaksiot{:,8} == '0', 5}; Testaus ttest2-funktiolla: H0: Neliömäärien odotusarvot yhtäsuuria keskustassa ja keskustan ulkopuolella H1: Neliömäärien odotusarvot eivät yhtäsuuria >> [h p ci stats] = ttest2(italansikaksiot, keskustakaksiot) h = 0 p = 0.15603 ci = -0.6459 3.9806 stats = struct with fields: tstat: 1.4281 df: 112 sd: 6.2318 Saadaan testisuure 1,4281 ja p-arvo 0,15603. Nollahypoteesi hyväksytään. Varianssianalyysi Yksisuuntainen varianssianalyysi anova1-funktiolla yleisessä muodossa: >> [p tbl stats] = anova1( Numeerinen muuttuja, Kategorinen muuttuja ) Ryhmien väliset vertailut voidaan suorittaa multcompare-funktiolla. Tälle annetaan syötteeksi stats-muuttuja varianssianalyysin tuloksista. >> multcompare( stats ) Funktio laskee oletusarvoisesti p-arvot käyttäen Tukey s Honestly Significant Difference -korjausmenetelmää. Muista vaihtoehdoista löytyy tietoa funktion dokumentoinnista. 22
Esimerkki 16 Neliöhinnan ja Alueen välisen riippuvuuden testaus varianssianalyysillä: H0: Neliöhinnan odotusarvot samoja kaikilla alueilla H1: Neliöhinnan odotusarvot eivät samoja kaikilla alueilla >> [p tbl stats] = anova1(asunnot2006{:,11}, Asunnot2006{:,9}) Testisuureen arvoksi saadaan 173,03 ja p-arvo 2,6456 10 46. Nollahypoteesi hylätään. Ryhmien väliset vertailut: >> multcompare(stats) 1 2 814.87 983.32 1151.8 9.5606e-10 1 3 739.3 861.47 983.65 9.5606e-10 2 3-292.78-121.85 49.087 0.21652 Tulosteessa kaksi ensimmäistä saraketta kertovat vertailtavat ryhmät, kolmas sarake alarajan odotusarvojen erotuksen luottamusvälille, neljäs sarake keskiarvojen erotuksen, viides sarake luottamusvälin ylärajan ja viimeinen sarake ryhmien välisen p-arvon. Ryhmien välisestä vertailusta nähdään, että keskustan (1) asuntojen neliöhinnan odotusarvo poikkeaa sekä lännen (2) että idän (3) neliöhintojen odotusarvoista, mutta lännen ja idän välillä ei vaikuta olevan eroa. Levenen testi varianssien yhtäsuuruudelle H0: Neliöhinnan varianssit yhtäsuuria kaikilla alueilla H1: Neliöhinnan variansseissa eroa alueiden välillä >> [p stats] = vartestn(asunnot2006{:,11}, Asunnot2006{:,9}, 'Testtype', 'LeveneAbsolute') Varianssit voidaan olettaa yhtäsuuriksi p-arvolla 0,1477. 23
Esimerkki 17 Huoneistotyypin vaikutus keskimääräiseen neliöhintaan keskustan asunnoissa ja keskustan ulkopuolisissa asunnoissa. Otetaan keskustan ja keskustan ulkopuolisten asuntojen huoneisto- ja neliöhinta-muuttujat omiin taulukoihinsa. >> keskusta = Asunnot2006(Asunnot2006{:,8} == '1', [10 11]); >> italansi = Asunnot2006(Asunnot2006{:,8} == '0', [10 11]); Varianssianalyysi keskustan ulkopuolisilla asunnoilla: H0: Neliöhinnan odotusarvot samoja huoneistotyypeittäin H1: Neliöhinnan odotusarvot eivät kaikki yhtä suuria >> [p tbl stats] = anova1(italansi{:,2}, italansi{:,1}) Testisuureen arvoksi saadaan 17,47 ja p-arvo 2,09572 10 7. Nollahypoteesi hylätään. Ryhmien väliset vertailut: >> multcompare(stats) 1 2 256.21 440.01 623.8 6.1179e-08 1 3 244.93 430.43 615.94 1.6208e-07 2 3-140.21-9.5736 121.06 0.98387 Kaksioiden ja kaksioita suurempien asuntojen neliöhintojen välillä ei näytä olevan eroa, mutta yksiöiden neliöhinnan odotusarvo poikkeaa molemmista ryhmistä. Levenen testi varianssien yhtäsuuruudelle: >> [p stats] = vartestn(italansi{:,2}, italansi{:,1}, 'Testtype', 'LeveneAbsolute') Varianssit voidaan olettaa yhtäsuuriksi. Samat testit keskustan asunnoille: >> [p tbl stats] = anova1(keskusta{:,2}, keskusta{:,1}) 24
>> multcompare(stats) >> [p stats] = vartestn(keskusta{:,2}, keskusta{:,1}, 'Testtype', 'LeveneAbsolute') Esimerkki 18 Kaksisuuntainen varianssianalyysi huoneistotyypin ja sijainnin yhdysvaikutuksesta keskimääräiseen neliöhintaan. Tarkastellaan ensin ryhmäkeskiarvoja graafisesti. Muodostetaan uusi taulukko, johon valitaan Asunnot2006-aineistosta kaupunki-, huoneisto- ja neliöhinta-muuttujat. >> asunnot = Asunnot2006(:, [8 10 11]); Ryhmäkeskiarvot saadaan grpstats-funktiolla. Kun funktiolle annetaan syötteenä koko aineisto ja luokittelevien muuttujien (KAUPUNKI ja huoneisto) indeksit, se laskee ehdolliset tunnusluvut kaikille muille muuttujille (neliohinta). >> tab = grpstats(asunnot, [1 2]) tab = 6 4 table KAUPUNKI huoneisto GroupCount mean_neliohinta 0_1 0 1 18 1876.5 0_2 0 2 56 1436.4 0_3 0 3 52 1446 1_1 1 1 13 2768.7 1_2 1 2 58 2339.6 1_3 1 3 32 2352 Ryhmäkeskiarvojen tarkastelu graafisesti. Jaetaan ryhmäkeskiarvotaulukko KAUPUNKImuuttujan mukaan kahteen taulukkoon, johon otetaan toisen luokittelevan muuttujan (huoneisto) ja keskineliöhinnan arvot. >> keskusta = tab(tab{:,1} == '1', [2 4]); >> italansi = tab(tab{:,1} == '0', [2 4]); Plot-funktio piirtää xy-koordinaatistoon viivoja. Kun syötteenä on enemmän kuin 2 muuttujaa, viivoja piirretään syötemuuttujille pareittain. >> plot(italansi{:,1}, italansi{:,2}, keskusta{:,1}, keskusta{:,2}) >> legend('ei keskustassa', 'Keskustassa') 25
Kaksisuuntainen varianssianalyysi Kaksisuuntainen varianssianalyysi anovan-funktiolla yleisessä muodossa: >> anovan( Numeerinen muuttuja, { Kategorinen muuttuja 1, Kategorinen muuttuja 2 } ) Neliöhinnan odotusarvon riippuvuus sijainnista keskustassa ja huoneistotyypistä. Lisäämällä anovan-funktioon parametri interaction, saadaan mukaan myös yhdysvaikutus. H0: Yhdysvaikutusta ei ole H1: Yhdysvaikutusta on >> anovan(asunnot2006{:,11}, {Asunnot2006{:,8}, Asunnot2006{:,10}}, 'interaction') Yhdysvaikutuksen testisuure on tulosteessa 0. Tämä on kuitenkin vain pyöristetty arvo. Testin p-arvo on 0,9954. H0 hyväksytään. 26
Esimerkki 19 Rakennusajankohdan ja keskustasijainnin yhdysvaikutus neliöhintaan. Aloitetaan VUOSImuuttujan luokittelulla rakennusajankohta-muuttujaksi. Kopioidaan luokiteltava VUOSImuuttuja: >> rakennusajankohta = Asunnot2006{:,2}; Luokitellaan arvoiksi 1 4 >> rakennusajankohta(asunnot2006{:,2} < 1964) = 1; >> rakennusajankohta(asunnot2006{:,2} >= 1964 & Asunnot2006{:,2} < 1972) = 2; >> rakennusajankohta(asunnot2006{:,2} >= 1972 & Asunnot2006{:,2} < 1977) = 3; >> rakennusajankohta(asunnot2006{:,2} >= 1977) = 4; Muutetaan muuttuja kategoriseksi >> rakennusajankohta = categorical(rakennusajankohta); Tarkistetaan luokittelu taulukoimalla >> tabulate(rakennusajankohta) Value Count Percent 1 64 27.95% 2 57 24.89% 3 54 23.58% 4 54 23.58% Liitetään uusi muuttuja aineistoon: >> Asunnot2006 = [Asunnot2006 table(rakennusajankohta)]; Luodaan uusi asunnot-taulukko kolmesta muuttujasta: >> asunnot = Asunnot2006(:, [8 11 12]); Ehdolliset keskiarvot. Luokitellaan 1. ja 3. sarakkeen, eli KAUPUNKI- ja rakennusajankohta-muuttujien mukaan. >> tab = grpstats(asunnot, [1 3]) tab = 8 4 table KAUPUNKI rakennusajankohta GroupCount mean_neliohinta 0_1 0 1 12 1823.6 0_2 0 2 35 1377.7 0_3 0 3 41 1383.2 0_4 0 4 38 1647.2 1_1 1 1 52 2325.5 1_2 1 2 22 2297 1_3 1 3 13 2371.7 1_4 1 4 16 2791.4 Jaetaan taulukko jälleen kaupunki-muuttujan mukaan kahteen osaan. Sarakkeista valitaan rakennusajankohta ja keskineliöhinta, joita kuvataan graafisesti: >> keskusta = tab(tab{:,1} == '1', [2 4]); >> italansi = tab(tab{:,1} == '0', [2 4]); 27
Graafinen tarkastelu: >> plot(italansi{:,1}, italansi{:,2}, keskusta{:,1}, keskusta{:,2}) >> legend('ei keskustassa', 'Keskustassa') Tutkitaan yhdysvaikutusta kaksisuuntaisella varianssianalyysillä: H0: Yhdysvaikutusta ei ole H1: Yhdysvaikutusta on >> anovan(asunnot2006{:,11}, {Asunnot2006{:,8}, Asunnot2006{:,12}}, 'interaction') Yhdysvaikutuksen testisuure 7,04 ja p-arvo 0,0002. H0 hylätään. Esimerkki 20 Korrelaation testaus. Kun corrcoef-funktiosta otetaan arvo kahteen muuttujaan, saadaan myös p-arvo korrelaatiokertoimelle. Rasvaprosentin ja vyötärön ympäryksen välisen korrelaation testaus: 28
H0: Populaatiossa muuttujien välinen korrelaatiokerroin on nolla H1: Populaatiossa muuttujien välinen korrelaatiokerroin ei ole nolla. >> [R P] = corrcoef(rasvaprosentti{:,2}, rasvaprosentti{:,8}) R = 1 0.81343 0.81343 1 P = 1 9.0901e-61 9.0901e-61 1 H0 hylätään p-arvolla 9,0901 10 61. Regressioanalyysi Regressiomallin muodostamisessa luodaan ensin uusi taulukko. Taulukon viimeinen sarake on selitettävä muuttuja, ja sitä edeltävät muuttujat selittäjiä. >> tbl = aineisto( :, [ sarakkeet ] ); Lineaarinen malli sovitetaan fitlm-funktiolla. Syötteeksi annetaan edellä muodostettu taulukko. >> fitlm(tbl) Esimerkki 21 Rasvaprosentin selittäminen vyötärön ympärysmitan avulla. Valitaan ensin rasvaprosentti-aineistosta vyota- ja rasvapro-muuttujat. Selitettävä muuttuja viimeiseen sarakkeeseen: >> tbl = rasvaprosentti(:, [8 2]); Sovitetaan lineaarinen regressiomalli ja testataan hypoteeseja: H0: β i = 0 H1: β i 0 >> fitlm(tbl) Linear regression model: rasvapro ~ 1 + vyota Estimated Coefficients Estimate SE tstat pvalue (Intercept) -39.28 2.6603-14.765 6.7179e-36 vyota 0.6313 0.028551 22.112 9.0901e-61 Number of observations: 252, Error degrees of freedom: 250 Root Mean Squared Error: 4.88 R-squared: 0.662, Adjusted R-Squared 0.66 F-statistic vs. constant model: 489, p-value = 9.09e-61 29
Vakiotermin testisuureeksi saadaan 14,765 ja p-arvo 6,7179 10 36. Nollahypoteesi hylätään. Vastaavasti vyötärönympäryksen testisuure on 22,112 ja p-arvo 9,0901 10 61. Myös tämä nollahypoteesi hylätään. Saadaan regressiomalli Rasvaprosentti Selitysasteeksi saadaan R 2 = 0,662. Esimerkki 22 = 39,28 + 0,6313 Vyötärön ympärys (cm) Rasvaprosentti kahdella selittävällä muuttujalla. Muodostetaan taulukko vyötärön ympäryksestä, painosta kilogrammoina ja rasvaprosentista. Selitettävä muuttuja eli rasvaprosentti sijoitetaan viimeiseen sarakkeeseen. >> tbl = rasvaprosentti(:, [8 16 2]); Muodostetaan lineaarinen regressiomalli ja testataan hypoteeseja: H0: β i = 0 H1: β i 0 >> fitlm(tbl) Linear regression model: rasvapro ~ 1 + vyota + painokg Estimated Coefficients Estimate SE tstat pvalue (Intercept) -45.952 2.605-17.64 9.7903e-46 vyota 0.9895 0.056716 17.447 4.4866e-45 painokg -0.326 0.045836-7.1123 1.2071e-11 Number of observations: 252, Error degrees of freedom: 249 Root Mean Squared Error: 4.46 R-squared: 0.719, Adjusted R-Squared 0.717 F-statistic vs. constant model: 318, p-value = 2.53e-69 Vakiotermin testisuureeksi saadaan 17,64 ja p-arvo 9,7903 10 46. Nollahypoteesi hylätään. Vyötärönympäryksen testisuure on nyt 17,447 ja p-arvo 4,4866 10 45. Myös tämä nollahypoteesi hylätään. Painon testisuure on 7,1123 ja p-arvo 1,2071 10 11. Tämäkin nollahypoteesi hylätään. Saadaan regressiomalli Rasvaprosentti = 45,952 + 0,9895 Vyötärön ympärys (cm) 0,326 Paino (kg) Selitysaste on R 2 = 0,719. Yhteistestauksessa hypoteesille H0: β 1 = β 2 = 0 H1: ainakin jokin β i 0 saadaan F-testisuure 318 ja p-arvo 2,53 10 69. Nollahypoteesi hylätään. 30
Linkkejä Ohjeita tilastollisen tutkimuksen toteuttamiseksi IBM SPSS Statistics -ohjelmiston avulla, Raija Leppälä, 2017 http://tampub.uta.fi/bitstream/handle/10024/101613/ohjeita_tilastollisen_tutkimuksen_2017.pdf Ohjeet Matlabin asennukseen Tampereen yliopiston opiskelijoille ja henkilökunnalle https://intra.uta.fi/portal/fi_fi/group/tietopankki/lisenssivalitys#matlab Rasvaprosentti-aineisto http://www.sis.uta.fi/tilasto/tiltp_aineistoja/rasvaprosentti.xls Asunnot_2006-aineisto http://www.sis.uta.fi/tilasto/tiltp_aineistoja/asunnot_2006.xls Arvio-aineisto http://www.sis.uta.fi/tilasto/tiltp_aineistoja/arvio.xls 31