806118P JOHDATUS TILASTOTIETEESEEN Mikroluokkaharjoitus 2/3, kevät 2019, viikko 6 Käynnistä R-ohjelma valinnoilla Start -> Programs -> R -> R x64 3.4.2. Käytämme tässä harjoituksessa R-ohjelmaa pääasiassa R-Commanderin kautta. Ota R-Commander käyttöön komennolla library(rcmdr) Tässä harjoituksessa käsitellään 1. luokkaharjoituksessa kerättyä aineistoa. Syötetään aluksi ohjelman muistiin 14 biologiaa pääaineenaan opiskelevan miehen neljän arvotun irtokarkin yhteispainon punnitustulokset (grammoina). Aineisto on seuraava (R:n runko-lehti- esityksenä): The decimal point is 1 digit(s) to the right of the 2 3667 3 089 4 012266 5 6 8 Aineiston syöttäminen tapahtuu R Commanderissa seuraavasti: valitse valikosta Data -> New data set... ja määrittele avautuvassa ikkunassa syötettävälle aineistolle nimi (esim. karkit) ja paina OK. Klikkaa hiirellä avautuvassa Data Editor -ikkunassa ruutua V1 ja vaihda muuttujan nimeksi paino. Lisää havaintomatriisiin Add row -napilla tarvittava määrä rivejä (14) ja syötä aineisto tämän jälkeen painomuuttujalle varatulle sarakkeelle. Sulje aineistoikkuna lopuksi OK-napilla. 1. Aineiston kuvailua Ladataan aluksi karkit-aineiston muuttujanimet R:n muistiin kirjoittamalla R-Commanderin ylempään osioon (ns. Script-ikkunaan) komento attach(karkit) Maalaa edellinen komento hiirellä (myös pelkkä kursorin oleminen suoritettavalla rivillä riittää) ja suorita komento painamalla R-Commanderin Submit-nappia. Esitetään tämän jälkeen havaitut yhteispainot pistekuviona suorittamalla Script-ikkunassa komento stripchart(paino) Komennon aikaansaama tulostus näkyy R:n grafiikkaikkunassa (RGui-ikkunan sisällä). Käy lisäämässä Script-ikkunassa edelliseen komentoon yksi lisämääre: method= stack : stripchart(paino, method="stack") Suorita komento Submit-nappia painamalla ja katso mitä annettu lisämääre sai kuvassa aikaan. Suorita vielä lopuksi edellä esitelty komento muodossa (kirjoita koko komento yhdelle riville) stripchart(paino, method="stack", main="karkkiaineisto pistekuviona", xlab="yhteispaino (g)") 1
Karkkiaineisto pistekuviona 30 40 50 60 30 40 50 60 Yhteispaino (g) Syötetään seuraavaksi R:n muistiin luokkaharjoituksen 3 tehtävän 1 b) havaintoaineisto. Tehtävässä vertailtiin kahden auton nopeusmittarien (A ja B) toimintaa harhattomuuden ja tarkkuuden suhteen. Kummallakin autolla ajettiin 6 kertaa tarkasti kalibroituun tutkaan siten, että auton nopeusmittari osoitti 100 km/h. Auton todellisen nopeudet (km/h) mittauspisteessä olivat seuraavat: Auto A: 104.4, 105.0, 104.6, 104.5, 104.8 104.6. Auto B: 99.0, 98.5, 102.0, 101.8, 100.5, 98.2. Valitse aineiston (12 riviä) syöttämistä varten valikosta Data -> New data set... ja nimeä aineisto esim. nimellä vertailu. Tarvitset nyt kaksi muuttujaa eli saraketta: auto (numeerinen muuttuja; käytä koodeja auto A = 1 ja auto B = 2) ja nopeus (numeerinen muuttuja). Kun olet syöttänyt havainnot aineistoikkunaan ja suljet ko. ikkunan OK-napilla, R-ohjelma ottaa tämän uuden aineiston aktiiviseksi aineistoksi. Kulloinkin aktiivisena olevan aineiston näet R-Commanderin päävalikon alla olevasta Data set -osiosta. Vertaillaan nopeusmittarien toimivuutta pistekuvion avulla. Piirretään pistekuviossa kummankin auton havainnot eri tasoon, jonka takia numeerinen automuuttuja täytyy ns. faktoroida. Valitse valikosta Data -> Manage variables in active data set -> Convert numeric variables to factors... Valitse Variables-osiosta faktoroitava muuttuja (auto) ja paina OK. Määrittele tämän jälkeen faktoreille nimet: 1=A ja 2=B ja paina OK. Pistekuvio saadaan nyt piirrettyä valitsemalla R-Commanderin valikosta valinnat: Graphs -> Strip chart... Valitse Factors-osiossa muuttuja auto, Response Variable -osiossa muuttuja nopeus ja paina OK. Kokeile myös pistekuvion piirtoa suorittamalla Script-ikkunassa komennot: attach(vertailu) stripchart(nopeus~auto, method="stack", vertical=false, pch=16, las=1) 2
nopeus 98 99 100 101 102 103 104 105 B A A B 98 99 100 101 102 103 104 105 nopeus Palataan seuraavaksi karkit-aineiston pariin ja esitetään painon havaintoarvot runko-lehti kuviona. Otetaan karkit-aineisto aktiiviseksi aineistoksi valikon valinnoilla Data -> Active data set -> Select active data set... Valitse avautuvasta aineistolistasta karkit-aineisto ja paina OK. Runko-lehti -kuvio on mahdollista piirtää suoraan valikon avulla. Valitse valikosta Graphs -> Stem-and-leaf display... avautuvasta ikkunasta muuttuja (Variable) paino ja paina OK. 1 2: represents 12 leaf unit: 1 n: 14 1 2* 3 4 2. 667 5 3* 0 (2) 3. 89 7 4* 0122 3 4. 66 HI: 68 Ohjelma tulostaa pyydetyn runko-lehti -esityksen R Commanderin alaosan output-ikkunaan. Huomaa myös, että samalla Script-osioon tulee automaattisesti näkyviin komento with(karkit, stem.leaf(paino, na.rm=true)), jolla ko. esitys saadaan tehtyä. Kokeile piirtää sama kuvio uudelleen edellä esitellyillä valinnoilla, mutta käy nyt ottamassa Stem and Leaf Display -ikkunan Options -lehdellä rastit pois kohdista Trim outliers ja Show depths. Tehdään vielä runko-lehti -esitys komennolla stem. Kirjoita Script-osioon komennot attach(karkit) stem(paino) ja suorita ne (komennon maalaus+submit-nappi). Suorita vielä lopuksi komento muodossa stem(paino,scale=2) ja mieti mitä komennon scale-lisämääreellä saatiin aikaan! 3
Luetaan seuraavaksi luokkaharjoituksen 1 mittausharjoituksessa kerätty havaintoaineisto kokonaisuudessaan (n = 149) R:n muistiin. Kyseinen tiedosto sijaitsee y-levyllä hakemistossa Y:/Yleiset/Mikroluokat/Matematiikka/johd_tilt_19. Valitse valikosta Data -> Import data -> from text file, clipboard or URL... anna Enter name for data set -osiossa aineiston nimeksi mittaus. Paina OK. etsi mittaus.txt niminen aineisto Y-levyn kansiosta johd_tilt_19 ja paina OPEN. Tutustu aineistoon selailemalla sitä View data set -napin avulla. Montako havaintoyksikköä ja muuttujaa aineistossa on? Esitetään seuraavaksi neljän karkin yhteispainon jakauma histogrammina. Tarvittava muuttuja on aineistossa nimellä nelja_karkkia. Valitse valikosta Graphs -> Histogram... avautuvasta ikkunasta muuttuja (Variable) nelja_karkkia ja paina OK. Muuta Script-osiossa alkuperäinen komento muotoon with(mittaus, Hist(nelja_karkkia, scale="frequency", right=false, breaks=c(10,20,30,40,50,60,70,80), col="white")) ja katso komennon suorittamisen jälkeen mitä muutoksia histogrammiin saatiin alkuperäiseen kuvaan verrattuna. frequency 0 10 20 30 40 frequency 0 10 20 30 40 50 60 20 30 40 50 60 70 nelja_karkkia 20 30 40 50 60 70 80 nelja_karkkia Frekvenssimonikulmiota ei saada suoraan valikon kautta vaan joudumme antamaan tarvittavat komennot suoraan Script-osiossa. Kuvion piirtoa varten talletetaan ensin kaksi vektoria: toiseen talletaan luokkakeskukset (nollaluokat mukaanlukien) ja toiseen luokkien frekvenssit. Frekvenssimonikulmio piirretään edellä muodostettujen vektorien avulla. attach(mittaus) luokkakesk <- seq(15, 85, by=10) ; luokkakesk 4
frekv <- as.numeric(table(cut(nelja_karkkia, right=false, breaks=seq(10, 90, by=10)))) frekv plot(luokkakesk, frekv, type="l", xlab="neljän karkin paino (g)", ylab="frekvenssi") abline(h=0) Näyttääkö jakauma symmetriseltä vai vinolta? Frekvenssi 0 10 20 30 40 50 60 20 30 40 50 60 70 80 Neljän karkin paino (g) Neljän karkin painon laatikko-jana kuvio saadaan valitsemalla valikosta Graphs -> Boxplot... avautuvasta ikkunasta muuttuja (Variable) nelja_karkkia ja paina OK. Jos ns. outliereiden määrittelyssä käytettävää kerrointa 1.5 halutaan muuttaa, se voidaan tehdä lisäämällä Script-osiossa komentoon lisämääre range, esim. Boxplot( ~ nelja_karkkia, data=mittaus, id.method="n", range=2.0) 81 nelja_karkkia 20 30 40 50 60 70 132 46 nelja_karkkia 20 30 40 50 60 70 5
Otetaan laatikko-jana -kuviosta vielä yksi esimerkki, jossa kuviota käytetään hyväksi ryhmien vertailussa. Verrataan punnittujen karkkien jakaumia opiskelijoiden pääaineryhmien (muuttuja oppiaine) välillä. Valitse valikosta Graphs -> Boxplot... avautuvasta ikkunasta muuttuja (Variable) nelja_karkkia Plot by groups -napin valikosta valitaan ryhmittelymuuttujaksi oppiaine. Paina OK. 81 nelja_karkkia 20 30 40 50 60 70 144 46 58 BIOK BIOL MAAN MUU oppiaine Luokitellaan seuraavaksi muuttuja nelja_karkkia taulukointia varten luokkiin 20 39, 40 59 ja 60 79. Valitse valikosta Data -> Manage variables in active data set -> Recode variables... uudelleenkoodattava muuttuja nelja_karkkia osiossa Variables to recode anna muodostettavalle muuttujalle nimi osiossa New variable name, esim. nelja_karkkia.luokiteltuna määrittele luokituksessa käytettävät luokkarajat Enter recode directives -osiossa muodossa luokan alaraja:luokan yläraja = luokan nimi, kts. esimerkki seuraavan sivun alussa. Käy katsomassa luokittelun lopputulosta OK-napin painamisen jälkeen R-Commanderin View data set-napilla. Edellä muodostettu uusi muuttuja nelja_karkkia.luokiteltuna löytyy avautuneen havaintomatriisin oikeasta reunasta. 6
Muodostetaan luokitellun painomuuttujan avulla punnittujen karkkien yksiulotteinen suora jakauma (eli frekvenssijakauma). Valitse valikosta Statistics -> Summaries -> Frequency distributions... avautuvasta ikkunasta muuttuja (Variable) nelja_karkkia.luokiteltuna. Paina OK. counts: nelja_karkkia.luokiteltuna 20-39 40-59 60-79 98 43 8 percentages: nelja_karkkia.luokiteltuna 20-39 40-59 60-79 65.77 28.86 5.37 Huomaa, että R järjestää taulukon eri luokat tulostuksessaan luokkien nimien mukaiseen aakkosjärjestykseen, joten taulukon luokkien järjestys ei ole välttämättä looginen! Luokitellun aineiston eri luokkien prosenttiosuudet voidaan esittää piirakkakuviona valitsemalla valikosta Graphs -> Pie Chart... avautuvasta ikkunasta muuttuja (Variable) nelja_karkkia.luokiteltuna. Paina OK. Muutetaan vielä piirakassa sektoreiden värejä harmaan eri sävyihin. Kokeile (maalaa komentoa suorittaessasi kaikki kolme pie()-komennon riviä!) mitä saadaan aikaan, kun Script-ikkunassa pie-komennon viimeisen rivin lopussa oleva värimääritys col=rainbow_hcl(3))) muutetaan muotoon col=c("white","gray60","gray30"))) 7
nelja_karkkia.luokiteltuna 20 39 60 79 40 59 Kokeile komentoa colors(), jotta saat tietää mitä värejä R:ssä on tarjolla. Mittausharjoituksessa jokainen opiskelija heitti kolme tarrapalloa pistetauluun. Tauluun osuneiden pallojen lukumäärä on talletettu aineistoon nimellä pallo_lkm. Kyseisen muuttujan frekvenssijakauma voidaan kuvata janadiagrammin avulla kirjoittamalla Script-osioon komennot table(pallo_lkm) # tulostetaan frekvenssit plot(table(pallo_lkm),type="h",ylab="frekvenssi",xlab="tauluun osuneet pallot") Frekvenssi 0 10 20 30 40 50 60 0 1 2 3 Tauluun osuneet pallot Esitetään seuraavaksi mittausharjoitukseen osallistuneiden opiskelijoiden opintosuunnan yksiulotteinen frekvenssijakauma pylväskuviona. Opiskelijan opintosuunta on talletettu aineistoon nimellä oppiaine ja se on valmiiksi tyypiltään merkkimuuttuja (arvoinaan BIOK, BIOL, MAAN ja MUU ). Pylväskuvio saadaan valitsemalla valikosta Graphs -> Bar graph... avautuvasta ikkunasta muuttuja (Variable) oppiaine. Paina OK. Koska ko. muuttuja on mitta-asteikoltaan luokitteluasteikon muuttuja, kannattaisi pylväskuvion pylväät järjestää suuruusjärjestykseen. Tämä voidaan tehdä suorittamalla Script-ikkunassa komento barplot(sort(table(oppiaine), decreasing=true)) 8
Frequency 0 10 20 30 40 50 60 70 0 10 20 30 40 50 60 70 BIOK BIOL MAAN MUU BIOL MAAN BIOK MUU oppiaine HARJOITUSTEHTÄVIÄ 1. Mittausharjoituksessa arvioitiin kahden henkilön ikiä (v). Opiskelijoiden esittämät ikäarviot henkilölle A on talletettu muuttujaan ika_a ja henkilön B ikäarviot muuttujaan ika_b. Muodosta näiden muuttujien runko-lehti -esitykset. Mitkä ovat ko. muuttujien minimi- ja maksimiarvot? 2. Sadan irtokarkin painoarviot on talletettu aineistoon nimellä sata_karkkia. Muodosta muuttujan sata_karkkia histogrammi hyödyntämällä R Commanderin valikkovalintoja. Muokkaa tämän jälkeen ohjelman piirtämän histogrammin oletusluokitusta siten, että histogrammissa on käytössä tasavälinen luokitus, jonka ensimmäisen luokan todelliset luokkarajat ovat 0 ja 1000, seuraavan luokan 1000 ja 2000 jne. 3. Hamahelmien lukumäärän arviointitehtävän tulokset on talletettu muuttujaan hama_lkm. Luokittele ko. muuttuja kolmeen luokkaan: "alle 1000 kpl", "1000 5000 kpl"ja "yli 5000 kpl". Muodosta luokitellun muuttujan frekvenssijakauma ja vastaa seuraaviin kysymyksiin a) Kuinka moni opiskelija arvioi helmien lukumääräksi yli 5000 kpl? b) Kuinka monella prosentilla aineiston opiskelijoista arvio oli välillä 1000 5000 kpl? 4. Mittausharjoituksessa pelattiin myös kunnat kartalle -peliä, jossa tehtävänä oli sijoittaa 10 satunnaisesti arvottua kuntaa kartalle. Pelituloksena oli sijoittamistehtävässä kertyneiden virhekilometrien kokonaismäärä, joka on talletettu aineistossa muuttujaan kunnat_kartalle. Vertaile kunnat_kartalle muuttujan jakaumia eri pääaineopiskelijoiden (muuttuja oppiaine) kesken laatikko-jana -kuvion avulla. Minkä pääaineryhmän opiskelijat menestyivät pelissä keskimäärin parhaiten? Entä oliko pääaineryhmien välillä eroa pelitulosten hajonnan määrässä? 9
5. Ylimääräinen tehtävä (jos aikaa ja innostusta riittää...). Piirrä R-ohjelmistolla alla esitetty kuva, jossa on esitetty eri pääaineopiskelijoiden (muuttuja oppiaine) kunnat kartalla -pelin lopputulosten (muuttuja kunnat_kartalle) jakaumat. Piirrä ensin kuva R Commanderin Graphs-valikon avulla ja muokkaa sen jälkeen kuvaa lisäämällä tarvittavia määreitä/muuttamalla kuvanpiirrossa käytettävää stripchart-komentoa Script-ikkunassa. Pelitulosten jakauma Opiskelijan pääaine BIOK BIOL MAAN MUU 0 1000 2000 3000 4000 5000 Pelitulos (virhekilometrit) toiminto otsikko x-akselin nimi x-akselin skaalaus y-akselin nimi y-akselin skaalaus vaaka-/pystykuvio yksittäisen havainnon symboli päällekkäiset havainnot kuvanpiirtokomentoon liittyvä määre main, esim. main= otsikkoteksti xlab, esim. xlab= x-akselin muuttuja xlim, esim. xlim=c(0,100) ylab, esim. ylab= y-akselin muuttuja ylim, esim. ylim=c(0,5) vertical, esim. vertical=false pch, esim. pch=1 avoin ympyrä method, esim. method= stack 10