- MATH.APP.210
- 4. Todennäköisyysjakaumia
- 4.1 Empiirisen otoksen kuvailua
Empiirisen otoksen kuvailua¶
Tavallisesti satunnaiskokeeseen liittyvän satunnaismuuttujan \(X\) todennäköisyysjakauman mallintaminen aloitetaan toistamalla koe useita kertoja, tai havainnoimalla satunnaismuuttujan saamia arvoja muulla tavoin. Näin saadut satunnaismuuttujan havaintoarvot muodostavat empiirisen otoksen eli havaintoaineiston (havaintodatan) (sample), jonka perusteella tehdään johtopäätöksiä kyseisestä satunnaismuuttujasta. Seuraavassa kuvataan lyhyesti otosta havainnollistavia tunnuslukuja ja graafisia kuvioita.
Käsitellään otosta, jossa on \(n\) alkiota ja jonka oletetaan olevan peräisin satunnaismuuttujasta \(X\). Empiiriseen otokseen liittyvässä frekvenssijakaumassa (frequency distribution) otos järjestetään taulukkomuotoon, jossa järjestetään erilliset realisoituneet arvot tai arvoluokat \(x_1, x_2, \ldots, x_k\) ja niiden esiintymislukumäärät eli frekvenssit (frequency) \(f_1, f_2, \ldots, f_k\). Eri havaintoarvoja tai arvoluokkia vastaavien frekvenssien summa on havaintoarvojen kokonaislukumäärä otoksessa. Usein on tarkoituksenmukaista käyttää frekvenssien sijasta suhteellisia frekvenssejä (relative frequency) \(p_i = \frac{f_i}{n}\), \(i = 1, 2, \ldots, k\). Frekvenssijakaumaa voidaan havainnollistaa graafisesti esimerkiksi histogrammilla (histogram), joka voi toimia myös arviona varsinaisen todennäköisyysjakauman muodosta.
Kun lasketaan frekvenssien tai suhteellisten frekvenssien kumulatiivisia summia (cumulative sum) realisoituneiden arvojen kasvavassa järjestyksessä, saadaan summafrekvenssit \(F_1, F_2, \ldots, F_k\) ja suhteelliset summafrekvenssit \(\frac{F_i}{n}\), \(i = 1, 2, \ldots, k\). Nämä kaavoilla
laskettavat arvot ilmaisevat kuinka moni tai kuinka suuri osa koetuloksista on korkeintaan havaintoarvon \(x_i\) suuruisia.
Otoksen keskikohtaa tai siinä esiintyvien havaintoarvojen vaihtelua voidaan kuvailla esimerkiksi seuraavilla tärkeillä tunnusluvuilla.
Määritelmä 4.1.1
Satunnaismuuttujan \(X\) otoksen \(x_1, x_2, \ldots, x_n\) otoskeskiarvo (sample mean) \(\overline{x}\), otosvarianssi (sample variance) \(s^2\) ja otoskeskihajonta (sample standard deviation) \(s\) ovat
Otoksen (otos)mediaani (sample median) on järjestykseen asetetuista havaintoarvoista keskimmäinen. Jos arvoja on parillinen määrä, valitaan kahden keskimmäisen keskiarvo.
Otoskeskiarvo ja mediaani kuvaa otoksen keskikohdan sijaintia ja otoskeskihajonta mittaa havaintoarvojen tyypillistä etäisyyttä otoskeskiarvosta sen molemmin puolin. Mitä suurempi keskihajonta \(s\) on, sitä enemmän havaintoarvot keskimäärin poikkeavat otoskeskiarvosta \(\overline{x}\). Nämä luvut eivät vielä kerro paljonkaan otoksen vinoudesta, eli siitä miten tasaisesti havaintoarvot jakautuvat otoskeskiarvon eri puolille.
Nämä tunnusluvut voidaan laskea myös otoksen frekvenssijakauman avulla. Jos erilliset havaintoarvot ovat \(x_1, x_2, \ldots, x_k\) ja niiden frekvenssit \(f_1, f_2, \ldots, f_k\), niin
Mikäli havaintoarvot on luokiteltu reaalilukuväleille frekvenssien laskemista varten, niin luokkaa edustavana havaintoarvona käytetään sen keskipistettä, eli luokkakeskusta.
Esimerkki 4.1.2
Oletetaan, että elektronisen komponentin käyttöaika (vuosia) on satunnaismuuttuja. On tutkittu \(100\) komponentin käyttöaikaa ja saatu seuraavat mittaustulokset.
0.24, 0.62, 0.66, 4.2, 0.54, 6.4, 5.4, 1.6, 2.2, 1.6, 0.30, 1.2, 0.80, 1.9, 0.60, 2.4, 5.4, 0.02, 0.96, 6.4, 1.5, 0.80, 0.02, 0.96, 3.6, 2.4, 0.50, 1.6, 2.8, 2.2, 2.2, 1.8, 2.6, 0.17, 0.54, 0.30, 0.52, 6.4, 3.2, 2.6, 0.98, 1.2, 0.02, 0.92, 1.4, 0.44, 0.80, 2.6, 1.2, 6.0, 0.66, 0.26, 7.8, 1.3, 3.8, 6.0, 1.8, 1.1, 0.19, 1.6, 2.6, 4.8, 2.8, 1.4, 0.34, 1.8, 4.2, 1.2, 3.6, 0.34, 1.1, 4.4, 0.24, 0.74, 2.6, 0.34, 2.8, 3.0, 0.28, 1.2, 0.12, 4.0, 2.4, 2.6, 2.6, 1.3, 1.1, 4.0, 4.4, 2.0, 0.66, 0.12, 0.44, 0.62, 0.66, 3.6, 0.80, 2.8, 0.08, 5.4
Kun data luokitellaan reaalilukuväleille \([0, 1), [1, 2), \ldots, [6, 7), [7, 8]\), saadaan seuraava frekvenssitaulukko.
Otoskeskiarvo \(\overline{x} = 1.99\), otosvarianssi \(s^2 = 3.18\), otoskeskihajonta \(s=1.78\) ja mediaani on \(1.4\). Alla oleva frekvenssihistogrammi muistuttaa muodoltaan satunnaismuuttujan \(X\) todennäköisyysjakaumaa.
Havaintoaineiston käsittelyä Matlabilla¶
Yksinkertaisin havaintoaineiston esitysmuoto Matlabissa on pystyvektori tai matriisi, jossa yhdessä sarakkeessa on yhden muuttujan havaintoarvot. Vektorit ja matriisit luodaan antamalla hakasuluissa arvot, rivit puolipisteellä erotettuna. Vaakavektorin saa pystyvektoriksi transponoimalla: laittamalla merkin '
vektorin jälkeen. Esim.
v = [1 3 7]'
antaa vastauksesi pystyvektorin
v = 3x1 1 3 7
ja
m = [1 2 1; 3 5 6; 7 5 9]
antaa vastauksesi matriisin
m = 3x3 1 2 1 3 5 6 7 5 9
Matriisin alkiot ovat vain yhtä tietotyyppiä (lukuja tai merkkijonoja). Funktio kohdistetaan matriisin sarakkeisiin. Esimerkiksi funktio
mean(m(:,2))
laskee otoskeskiarvon matriisin m
2. sarakkeessa olevista luvuista ja antaa vastauksen 4
.
Tietorakenne taulukko
Monipuolisempi havaintoaineiston esitysmuoto on tietorakenne taulukko (table), jossa muuttujat esitetään sarakkeittain. Taulukon eri sarakkeissa voi olla erityypisiä arvoja. Tekstimuotoinen arvo annetaan lainausmerkeissä "arvo"
. Taulukon sarakkeilla on nimet.
Taulukon voi muodostaa kokoamalla sen pystyvektoreista, lukemalla se matriisista, luomalla ja editoimalla taulukko muuttujaeditorissa tai lukemalla se ulkoisesta tiedostosta.
Pystyvektoreista v1, v2, v3
saa taulukon funktiolla table
. Vektoreissa tulee olla sama määrä alkioita. Sarakkeiden nimiksi tulee muuttujien nimet.
data = table(v1,v2,v3)
Valmiin matriisin saa taulukoksi funktiolla array2table
. Sarakkeiden nimiksi tulee m1, m2, m3, ...
matriisin nimen m
mukaan.
data = array2table(m)
Olemassa olevia muuttujia voi editoida muuttujaeditorissa klikkaamalla muuttujan nimeä ikkunassa ‘Workspace’. Jos halutaan muodostaa taulukko kirjoittamalla/liittämällä arvoja suoraan taulukon soluihin, luodaan ensin tyhjä taulukko
data = table() % luo tyhjän 0x0-taulukon
Tämän jälkeen taulukkoa muokataan muuttujaeditorissa. Kun 1. riville antaa luvun tai tekstiä esim. “a”, sarakkeen tietotyyppi määräytyy tämän mukaan ja taulukon soluihin voi kirjoittaa/liittää arvoja.
Muuttujaeditorissa puuttuva numeerinen arvo merkitään antamalla arvoksi nan
(not a number). Puuttuva tekstimuotoinen arvo merkitään jättämällä solu tyhjäksi. Matlab komentona puuttuva arvo merkitään arvona missing
. Esim.
v = [missing 1 2] % vastauksena vektori [NaN 1 2] textv = [missing "a" "bc"] % vastauksena vektori ["a" "bc"]
Funktioihin täytyy liittää lisämääre 'omitnan'
, jos puuttuvat tiedot halutaan jättää huomioimatta.
Ulkoisen tiedoston voi tuoda Matlabiin taulukoksi tai matriisiksi käyttämällä Import Data- toimintoa (HOME-välilehdellä valikossa ylhäällä). Tuettuja tiedostotyyppejä ovat mm .xls, .xlsx, .txt, .csv ja .ods. Valikoissa on tiedoston tuontiin liittyviä valintoja (mm. tallennusmuoto, tekstimuotoisen tiedon kentän erotinmerkki, desimaalierotin, puuttuvien tietojen käsittely)
Vaihtoehtoisesti ulkoisen tiedoston voi myös lukea taulukoksi funktiolla
readtable('tiedostonimi').
Tuettuja tiedostomuotoja ovat .txt, .dat, .csv, .xls, .xlsb, .xlsm, .xlsx, .xltm, .xltx. Oletusarvona tekstimuotoisen datan lukemisessa on, että kentän erotin on pilkku, desimaalierotin on piste, 1. rivi tulkitaan otsikkoriviksi (jos sillä on tekstimuotoista dataa) ja puuttuvat tiedot havaitaan tiedostosta. Tarvittaessa muunlaisessa tapauksessa funktiolle voi antaa lisäparametreja. Lisätietoja Matlabin helpistä.
Taulukon käyttö
Joissakin Matlabin funktioissa voidaan antaa argumentiksi taulukko. Useimmiten funktio vaatii kuitenkin vektori- tai matriisimuotoisen argumentin.
Taulukosta saadaan vektoreita tai matriiseja tekemällä valinta aaltosuluilla tai pistenotaatiolla yhdessä muuttujanimen kanssa. Esimerkiksi taulukon data
2. sarake, jolla on nimi Var2
saadaan pystyvektoriksi jommalla kummalla komennoista
x2 = data{:, 2} % taulukon data 2. sarake vektoriksi x2 x2 = data.Var2 % taulukon data sarake nimellä Var2 vektoriksi x2
Jos käytetään tavallisia sulkeita, on vastaus taulukko, jossa on datan 2. sarake.
x2 = data(:, 2) % taulukko, jossa on datan 2 sarake
Havaintoaineiston rakennetta ja tunnuslukuja voi tutkia seuraavilla funktioilla. Funktioissa summary
ja head
annetaan argumentiksi taulukko. Muissa funktioissa argumentti on vektori tai matriisi. Esimerkeissä on käytetty taulukon data
muuttujia nimeltä Var1
ja Var2
\(\begin{array}{|c|c|c|} \hline \textbf{Toiminta}&\textbf{Funktio}&\textbf{Esimerkki}\\ \hline \text{Min, md, max muuttujittain}& \texttt{summary()} &\texttt{summary(data)}\\ \hline \text{Taulukon alkurivit}& \texttt{head()} &\texttt{head(data)}\\ \hline \text{Otoskeskiarvo}& \texttt{mean()} &\texttt{mean(data.Var1)}\\ \hline \text{Otoskeskihajonta}& \texttt{std()} &\texttt{std(data.Var1)}\\ \hline \text{Otosvarianssi}& \texttt{var()} &\texttt{var(data.Var1)}\\ \hline \text{Minimi}& \texttt{min()} &\texttt{min(data.Var1)}\\ \hline \text{Maksimi}& \texttt{max()} &\texttt{max(data.Var1)}\\ \hline \text{Mediaani}& \texttt{median()} &\texttt{median(data.Var1)}\\ \hline \text{Moodi (tyyppiarvo)}& \texttt{mode()} &\texttt{mode(data.Var1)}\\ \hline \text{Kovarianssi} & \texttt{cov()} &\texttt{cov(data.Var1, data.Var2)}\\ \hline \text{Kovarianssimatriisi}& \texttt{cov()} &\texttt{cov(data\{:,:\})}\\ \hline \text{Korrelaatiokerroin}& \texttt{corr()} &\texttt{corr(data.Var1, data.Var2)}\\ \hline \text{Korrelaatiomatriisi}& \texttt{corr()} &\texttt{corr(data\{:,:\})}\\ \hline\end{array}\)
Myös muissa funktioissa voi antaa argumenttina koko matriisin data{:,:}
, jolloin tunnusluvut lasketaan sarakkeittain. Jos mahdolliset puuttuvat tiedot on tarkoitus jättää huomioimatta, lisätään parametri 'omitnan'
, esim.
mean(data.Var1,'omitnan')
Lisää Matlabin käytöstä empiiristen aineistojen kuvailememisessa löytää Matlabin helpistä ‘Statistics and Machine Learning Toolbox’, jossa on kattavasti esitelty kaikki tällä opintojaksolla käytettävät toiminnot.
Havaintoaineiston käsittelyä R:llä¶
Yksinkertaisin havaintoaineiston esitysmuoto on vektori, jossa on yhden muuttujan havaintoarvot. Vektori luodaan R:ssä funktiolla c( )
esim.
x1 <- c(1,2,5,3)
luo muuttujan x1
, jossa on vaakavektorina luvut 1,2,5 ja 3. Vektoreista saa koottua matriiseja funktiolla cbind(...)
, jolla vektoreista tulee matriisin sarakkeet. Argumenttina annetaan vektoreja tai matriiseja. Jos vektorien alkioita/matriisien rivejä on eri määrä, yhdistäminen onnistuu, jos alkioiden/rivien lukumäärät ovat pienimmän lukumäärän monikertoja. Lyhimmät vektorit monistuvat pisimmän vektorin pituisiksi. Esimerkiksi
x1 <- c(1,2,5,3) # 4 alkiota vaakavektorina x2 <- c(3,1) # 2 alkiota vaakavektorina m <- cbind(x1,x2)
antaa vastaukseksi matriisin m
x1 x2 [1,] 1 3 [2,] 2 1 [3,] 5 3 [4,] 3 1
Matriisin alkioiden on oltava samaa tietotyyppiä esim. lukuja. Funktiot kohdistetaan matriisin sarakkeisiin. Esimerkiksi otoskeskiarvo matriisin m
2. sarakkeessa olevista luvuista saadaan funktiolla
mean(m[,2])
Tietorakenne datakehikko
Monipuolisempi havaintoaineiston esitysmuoto on taulukkomuotoinen tietorakenne, jota kutsutaan R:ssä datakehikoksi (dataframe). Datakehikon eri sarakkeissa voi olla erityypisiä arvoja, esim. lukuja (tietotyyppi numeric), tekstiä (tietotyyppi character). Tekstimuotoinen arvo annetaan lainausmerkeissä "arvo"
. Datakehikon sarakkeilla (muuttujilla) on nimet.
Datakehikko voidaan muodostaa aikaisemmin tallennetuista vektoreista x1,x2,x3,...
. Sarakkeiden nimiksi tulee vektorien nimet.
data <- data.frame(x1,x2,x3,...)
Aikaisemmin tallenetun matriisin m
saa datakehikoksi funktiolla
data <- as.data.frame(m)
Ulkoisen tiedoston voi tuoda R:ään datakehikoksi käyttämällä Import dataset- toimintoa (RStudion valikossa Environment oikealla ylhäällä). Tuettuja tiedostotyyppejä ovat mm .xls, .xlsx, .txt, .csv sekä SPSS:n, SAS:n ja Stata:n tiedostomuodot.
Vaihtoehtoisesti ulkoisen taulukkomuotoisen tekstitiedoston voi lukea datakehikoksi funktiolla read.table
. Esimerkiksi
data <- read.table("C:/mydata/data.txt", header=TRUE, sep=",", dec=".")
lukee hakemistosta C:/mydata/
tekstitiedoston data.txt
, jossa on otsikkorivi (header=TRUE, jos ei otsikkoriviä niin FALSE), arvot on erotettu (sep) tiedostossa pilkulla ja desimaalierotin (dec) on piste. Muun tyyppiset tiedostot esim. Excel-tiedostot voi lukea tällä tavoin tallentamalla ne ensin tekstimuotoon, esimerkiksi csv-muotoon.
Datakehikon käyttö
Joissakin R:n funktioissa voidaan antaa argumentiksi datakehikko. Useimmiten funktio vaatii kuitenkin vektorimuotoisen argumentin. Datakehikon sarakkeesta saadaan vektori tekemällä valinta tuplahakasuluilla,
x2 <- data[[2]] # datakehikon data 2. sarake vektoriksi x2
tai dollarimerkillä viitaten muuttujan nimeen
x2 <- data$Var2 # datakehikon data sarake nimellä Var2 vektoriksi x2
Koko datakehikon saa yhdeksi matriisiksi komennolla
m <- data.matrix(data) # datakehikon data matriisiksi m
Jos käytetään yksinkertaisia hakasulkeita, on vastaus datakehikko.
x2 = data[ ,2] % datakehikko, jossa on datan 2 sarake x3 = data[1, ] % datakehikko, jossa on datan 1 rivi
Puuttuvat tiedot merkitään tallentamalla arvoksi NA
(Not Available):
v <- c(NA,1,2) # vastauksena vektori (NA 1 2) data[10,1] <- NA # datakehikon data 1. sarakkeen 10. arvo muutetaan puuttuvaksi
Funktioihin täytyy liittää lisämääre na.rm = TRUE
, jos halutaan suorittaa funktio huomioimatta puuttuvia arvoja. Jos lisämäärettä ei anna ja muuttujassa on puuttuvia tietoja, ei keskiarvoa lasketa.
mean(data$Var1, na.rm = TRUE)
Havaintoaineiston rakennetta ja tunnuslukuja voi laskea seuraavilla funktioilla. Funktioissa summary
ja head
annetaan argumentiksi datakehikko. Muissa funktioissa argumentti on vektori tai matriisi. Esimerkeissä on käytetty datakehikon data
muuttujia nimeltä Var1
ja Var2
.
\(\begin{array}{|c|c|c|} \hline \textbf{Toiminta}&\textbf{Funktio}&\textbf{Esimerkki}\\ \hline \text{Kvartiilit ja keskiarvo muuttujittain}& \texttt{summary()} &\texttt{summary(data)}\\ \hline \text{Datakehikon alkurivit}& \texttt{head()} &\texttt{head(data)}\\ \hline \text{Datakehikon rakenne}& \texttt{str()} &\texttt{str(data)}\\ \hline \text{Otoskeskiarvo}& \texttt{mean()} &\texttt{mean(data\$Var1)}\\ \hline \text{Otoskeskihajonta}& \texttt{sd()} &\texttt{sd(data\$Var1)}\\ \hline \text{Otosvarianssi}& \texttt{var()} &\texttt{var(data\$Var1)}\\ \hline \text{Minimi}& \texttt{min()} &\texttt{min(data\$Var1)}\\ \hline \text{Maksimi}& \texttt{max()} &\texttt{max(data\$Var1)}\\ \hline \text{Mediaani}& \texttt{median()} &\texttt{median(data\$Var1)}\\ \hline \text{Kovarianssi} & \texttt{cov()} &\texttt{cov(data\$Var1, data\$Var2)}\\ \hline \text{Kovarianssimatriisi}& \texttt{cov()} \text{ tai } \texttt{var()} &\texttt{cov(data)} \text{ tai } \texttt{var(data)}\\ \hline \text{Korrelaatiokerroin}& \texttt{cor()} &\texttt{cor(data\$Var1, data\$Var2)}\\ \hline \text{Korrelaatiomatriisi}& \texttt{cor()} &\texttt{cor(data)}\\ \hline\end{array}\)
Lisää R:n käytöstä empiiristen aineistojen kuvailememisessa löytää R:n ohjeista ja netistä esimerkiksi hakusanalla ‘Descriptive statistics in R’.