\[\newcommand{\N}{\mathbb N} \newcommand{\Z}{\mathbb Z} \newcommand{\Q}{\mathbb Q} \newcommand{\R}{\mathbb R} \newcommand{\C}{\mathbb C} \newcommand{\ba}{\mathbf{a}} \newcommand{\bb}{\mathbf{b}} \newcommand{\bc}{\mathbf{c}} \newcommand{\bd}{\mathbf{d}} \newcommand{\be}{\mathbf{e}} \newcommand{\bff}{\mathbf{f}} \newcommand{\bh}{\mathbf{h}} \newcommand{\bi}{\mathbf{i}} \newcommand{\bj}{\mathbf{j}} \newcommand{\bk}{\mathbf{k}} \newcommand{\bN}{\mathbf{N}} \newcommand{\bn}{\mathbf{n}} \newcommand{\bo}{\mathbf{0}} \newcommand{\bp}{\mathbf{p}} \newcommand{\bq}{\mathbf{q}} \newcommand{\br}{\mathbf{r}} \newcommand{\bs}{\mathbf{s}} \newcommand{\bT}{\mathbf{T}} \newcommand{\bu}{\mathbf{u}} \newcommand{\bv}{\mathbf{v}} \newcommand{\bw}{\mathbf{w}} \newcommand{\bx}{\mathbf{x}} \newcommand{\by}{\mathbf{y}} \newcommand{\bz}{\mathbf{z}} \newcommand{\bzero}{\mathbf{0}} \newcommand{\nv}{\mathbf{0}} \newcommand{\cA}{\mathcal{A}} \newcommand{\cB}{\mathcal{B}} \newcommand{\cC}{\mathcal{C}} \newcommand{\cD}{\mathcal{D}} \newcommand{\cE}{\mathcal{E}} \newcommand{\cF}{\mathcal{F}} \newcommand{\cG}{\mathcal{G}} \newcommand{\cH}{\mathcal{H}} \newcommand{\cI}{\mathcal{I}} \newcommand{\cJ}{\mathcal{J}} \newcommand{\cK}{\mathcal{K}} \newcommand{\cL}{\mathcal{L}} \newcommand{\cM}{\mathcal{M}} \newcommand{\cN}{\mathcal{N}} \newcommand{\cO}{\mathcal{O}} \newcommand{\cP}{\mathcal{P}} \newcommand{\cQ}{\mathcal{Q}} \newcommand{\cR}{\mathcal{R}} \newcommand{\cS}{\mathcal{S}} \newcommand{\cT}{\mathcal{T}} \newcommand{\cU}{\mathcal{U}} \newcommand{\cV}{\mathcal{V}} \newcommand{\cW}{\mathcal{W}} \newcommand{\cX}{\mathcal{X}} \newcommand{\cY}{\mathcal{Y}} \newcommand{\cZ}{\mathcal{Z}} \newcommand{\rA}{\mathrm{A}} \newcommand{\rB}{\mathrm{B}} \newcommand{\rC}{\mathrm{C}} \newcommand{\rD}{\mathrm{D}} \newcommand{\rE}{\mathrm{E}} \newcommand{\rF}{\mathrm{F}} \newcommand{\rG}{\mathrm{G}} \newcommand{\rH}{\mathrm{H}} \newcommand{\rI}{\mathrm{I}} \newcommand{\rJ}{\mathrm{J}} \newcommand{\rK}{\mathrm{K}} \newcommand{\rL}{\mathrm{L}} \newcommand{\rM}{\mathrm{M}} \newcommand{\rN}{\mathrm{N}} \newcommand{\rO}{\mathrm{O}} \newcommand{\rP}{\mathrm{P}} \newcommand{\rQ}{\mathrm{Q}} \newcommand{\rR}{\mathrm{R}} \newcommand{\rS}{\mathrm{S}} \newcommand{\rT}{\mathrm{T}} \newcommand{\rU}{\mathrm{U}} \newcommand{\rV}{\mathrm{V}} \newcommand{\rW}{\mathrm{W}} \newcommand{\rX}{\mathrm{X}} \newcommand{\rY}{\mathrm{Y}} \newcommand{\rZ}{\mathrm{Z}} \newcommand{\pv}{\overline} \newcommand{\iu}{\mathrm{i}} \newcommand{\ju}{\mathrm{j}} \newcommand{\im}{\mathrm{i}} \newcommand{\e}{\mathrm{e}} \newcommand{\real}{\operatorname{Re}} \newcommand{\imag}{\operatorname{Im}} \newcommand{\Arg}{\operatorname{Arg}} \newcommand{\Ln}{\operatorname{Ln}} \DeclareMathOperator*{\res}{res} \newcommand{\re}{\operatorname{Re}} \newcommand{\im}{\operatorname{Im}} \newcommand{\arsinh}{\operatorname{ar\,sinh}} \newcommand{\arcosh}{\operatorname{ar\,cosh}} \newcommand{\artanh}{\operatorname{ar\,tanh}} \newcommand{\sgn}{\operatorname{sgn}} \newcommand{\diag}{\operatorname{diag}} \newcommand{\proj}{\operatorname{proj}} \newcommand{\rref}{\operatorname{rref}} \newcommand{\rank}{\operatorname{rank}} \newcommand{\Span}{\operatorname{span}} \newcommand{\vir}{\operatorname{span}} \renewcommand{\dim}{\operatorname{dim}} \newcommand{\alg}{\operatorname{alg}} \newcommand{\geom}{\operatorname{geom}} \newcommand{\id}{\operatorname{id}} \newcommand{\norm}[1]{\lVert #1 \rVert} \newcommand{\tp}[1]{#1^{\top}} \renewcommand{\d}{\mathrm{d}} \newcommand{\sij}[2]{\bigg/_{\mspace{-15mu}#1}^{\,#2}} \newcommand{\abs}[1]{\lvert#1\rvert} \newcommand{\pysty}[1]{\left[\begin{array}{@{}r@{}}#1\end{array}\right]} \newcommand{\piste}{\cdot} \newcommand{\qedhere}{} \newcommand{\taumatrix}[1]{\left[\!\!#1\!\!\right]} \newenvironment{augmatrix}[1]{\left[\begin{array}{#1}}{\end{array}\right]} \newenvironment{vaugmatrix}[1]{\left|\begin{array}{#1}}{\end{array}\right|} \newcommand{\trans}{\mathrm{T}} \newcommand{\EUR}{\text{\unicode{0x20AC}}} \newcommand{\SI}[3][]{#2\,\mathrm{#3}} \newcommand{\si}[2][]{\mathrm{#2}} \newcommand{\num}[2][]{#2} \newcommand{\ang}[2][]{#2^{\circ}} \newcommand{\meter}{m} \newcommand{\metre}{\meter} \newcommand{\kilo}{k} \newcommand{\kilogram}{kg} \newcommand{\gram}{g} \newcommand{\squared}{^2} \newcommand{\cubed}{^3} \newcommand{\minute}{min} \newcommand{\hour}{h} \newcommand{\second}{s} \newcommand{\degreeCelsius}{^{\circ}C} \newcommand{\per}{/} \newcommand{\centi}{c} \newcommand{\milli}{m} \newcommand{\deci}{d} \newcommand{\percent}{\%} \newcommand{\Var}{\operatorname{Var}} \newcommand{\Cov}{\operatorname{Cov}} \newcommand{\Corr}{\operatorname{Corr}} \newcommand{\Tasd}{\operatorname{Tasd}} \newcommand{\Ber}{\operatorname{Ber}} \newcommand{\Bin}{\operatorname{Bin}} \newcommand{\Geom}{\operatorname{Geom}} \newcommand{\Poi}{\operatorname{Poi}} \newcommand{\Hyperg}{\operatorname{Hyperg}} \newcommand{\Tas}{\operatorname{Tas}} \newcommand{\Exp}{\operatorname{Exp}} \newcommand{\tdist}{\operatorname{t}} \newcommand{\rd}{\mathrm{d}}\]

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

\[F_i=\sum_{j=1}^{i}f_j\qquad\text{ja}\qquad \frac{F_i}{n}=\sum_{j=1}^{i}\frac{f_j}{n}=\sum_{j=1}^{i}p_j\]

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

\[\overline{x}=\frac{1}{n}\sum_{i=1}^{n}x_i,\qquad s^2=\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\overline{x})^2\qquad\text{ja}\qquad s=\sqrt{s^2}.\]

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.

Mitkä seuraavista väitteistä ovat oikein, kun \(x_1, x_2, \ldots, x_n\) on diskreettiin satunnaismuuttujaan \(X\) liittyvä empiirinen aineisto, \(\mu = \rE(X)\) ja \(\sigma^2 = \Var(X)\)?

  1. Otoskeskiarvo \(\overline{x} = \frac{1}{n}\sum_{i = 1}^{n}x_i = \mu\).
  2. Kun otoskoko \(n\) kasvaa, otosvarianssi \(s^2 = \frac{1}{n - 1}\sum_{i = 1}^{n}(x_i - \mu)^2\) lähestyy lukua \(\sigma^2\).
  3. Kun otoskoko \(n\) kasvaa, otoskeskihajonta \(s = \sqrt{s^2}\) lähestyy nollaa.

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

\[\overline{x} = \frac{1}{n}\sum_{i = 1}^{k}f_ix_i = \sum_{i = 1}^{k}p_ix_i\qquad\text{ja}\qquad s^2=\frac{1}{n-1}\sum_{i=1}^{k}f_i(x_i-\overline{x})^2\]

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.

\[\begin{split}\begin{array}{ccccc}\hline \text{luokka} & \text{frekvenssi} & \text{suhteellinen} & \text{summa-} & \text{suhteellinen} \\[-1ex] & f_i & \text{frekvenssi} & \text{frekvenssi} & \text{summafrekvenssi} \\[-1ex] & & f_i/n & F_i & F_i/n \\\hline {[0, 1)} & 39 & 0.39 & 39 & 0.39 \\[-1ex] {[1, 2)} & 21 & 0.21 & 60 & 0.60 \\[-1ex] {[2, 3)} & 18 & 0.18 & 78 & 0.78 \\[-1ex] {[3, 4)} & 6 & 0.06 & 84 & 0.84 \\[-1ex] {[4, 5)} & 7 & 0.07 & 91 & 0.91 \\[-1ex] {[5, 6)} & 3 & 0.03 & 94 & 0.94 \\[-1ex] {[6, 7)} & 5 & 0.05 & 99 & 0.99 \\[-1ex] {[7, 8]} & 1 & 0.01 & 100 & 1.00 \\\hline \end{array}\end{split}\]

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.

../_images/kuva21histog.svg

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’.

Jatkuvan satunnaismuuttujan \(X\) empiirisen aineiston perusteella piirrettävässä histogrammissa pylvään pinta-ala kuvaa sen kattamalle välille osuvien havaintoarvojen lukumäärää. Mitä seuraavista pylvään korkeus tällöin kuvaa parhaiten?
Palautusta lähetetään...