Előszó

Elektronikus tananyagunk alapját a Reiczigel Jenő - Harnos Andrea - Solymosi Norbert által jegyzett ,,Biostatisztika nem statisztikusoknak’’ című könyv adja, annak némileg rövidített, de összefoglalókkal kiegészített változata. A tanyagaghoz szorosan kapcsolódik egy interaktív R-es példatár, valamint egy tesztkérdéseket tartalmazó oldal. A könyv és ennek a tananyagnak a megírásához mind a motivációt, mind a tematikát az Állatorvostudományi Egyetemen (korábban Szent István Egyetem Állatorvos-tudományi Kara) tartott, közösen kidolgozott kurzusaink adták. Az anyag zöme a zoológia, most már biológia BSc szakos hallgatóknak tartott Biomatematika II és Számítógépes statisztika kurzusainkon alapul, de felhasználtuk benne Kísérlettervezés, Regressziószámítás és Bevezetés az R-be PhD tanfolyamaink, illetve a Biostatisztikus szakképzésen tartott Lineáris modellek kurzus anyagát is.

Ezt a tananyagot elsősorban a bevezető statisztika kurzusok hallgatóinak szánjuk, de azoknak is hasznos lehet, akiknek munkájukhoz szükségük van a statisztika alkalmazására, de bizonytalannak érzik magukat ezen a területen, vagy a statisztika logikáját a hétköznapi gondolkodástól idegennek érzik. Cél az alapfogalmak és a legszükségesebb módszerek elsajátításában, valamint a statisztikai szemléletmód kialakításában.

Mivel magunk is az élettudományok területén dolgozunk és oktatunk, példáinkat is főleg ilyen területekről vettük, ezért könyvünket valószínűleg a biológus, orvos, állatorvos és agrár szakos hallgatók forgathatják legtöbb haszonnal.

Könyvünk hasznos lehet azoknak a statisztikát jól ismerő és munkájukban rendszeresen használó kutatóknak is, akik szeretnének közelebbről megismerkedni az R programcsomaggal. Az R egy ingyenes, több, mint 20 éve fejlesztett, s mára nagyon elterjedt, tökéletesen professzionális statisztikai programcsomag (R Core Team (2018)). Mi magunk ma már kizárólag ezt használjuk, egyre növekvő lelkesedéssel, mindennapi munkánkban. Az R nemcsak ingyenes volta miatt vonzó, hanem azért is, mert a statisztikai módszerek szinte végtelen választékát kínálja, és nagyon friss, tehát komoly esély van arra, hogy egy-egy vadonatúj statisztikai eljárás leghamarabb Rben válik elérhetővé.

Akiket elriaszt az R-től az, hogy menük nyitogatása és űrlapok kitöltögetése helyett kódokat kell begépelnie, ajánljuk az R Commander interfészt (Fox (2005), Fox (2017), Fox and Bouchet-Valat (2018)), amit az Rcmdr csomag R-be betöltésével indíthatunk el, illetve a Deducer interfészt (www.deducer.org). Az R Commander egy olyan interfész, melyben menük és űrlapok segítségével legenerálhatjuk az R kódokat, és futtathatjuk azokat. Rövidebb kurzusainkon mi magunk is ezt használjuk. Az R Commander-ről részletesebb információt a www.rcommander.com honlapon találhatnak. A tankönyv honlapjáról (www.biostatkonyv.hu) letölthető a tankönyvhöz készült R commander kézikönyv, online verziója pedig megtalálható a statR.e-akademia.hu-n.

Ezt egy olyan alkalmazott statisztika tananyagnak szántuk, amely igyekszik a miérteket is megválaszolni, de ahol csak lehet szemléletesen, a matematikai részletek tárgyalása nélkül, lehetőleg minél kevesebb elvont definícióval és képlettel terhelve az olvasót.

Törekedtünk arra is, hogy a tananyag megértéséhez elegendő legyen a középiskolai matematika anyag ismerete. Egyedül a mátrixokkal és vektorokkal kapcsolatos alapismereteket kell az felhasználónak máshonnan elsajátítani (ld. például Freud (1996) ).

Van néhány dolog, amit – bár nem lett volna ellenünkre – mégsem tudtunk felvállalni. Tehát mit ne várjon a Kedves Olvasó a könyvünktől: - Terjedelmi okokból lemondtunk a valószínűségszámítás részletes tárgyalásáról, csak egy néhány oldalas összefoglalóban ismertetjük a legszükségesebb fogalmakat.
Mentségünkre szolgál, hogy a magyar szakkönyvpiacon valószínűségszámításból nagyobb a választék mint statisztikából (ld. például: Rényi (1973), Feller and Rejtő (1978), Solt (2006)), R-es bevezető statisztika könyv pedig a tankönyv írásakor még egyáltalán nem volt; mi elsősorban ezt a hiányt szerettük volna pótolni.

  • A matematikai precizitásból a legtöbb helyen engedtünk, amiért a matematikusoktól elnézést kérünk. Több definíción – a könnyebb érthetőség kedvéért – egyszerűsítettünk, vagy csak szemléletes definíciót adtunk. Ilyenkor megjegyzésben vagy apró betűs részben utalunk arra, hogy eltértünk a matematikai statisztikában szokásos definíciótól.

  • Egy-egy mondatnyi megjegyzéstől eltekintve egyáltalán nem foglalkozunk a bayesi statisztikával. Egyrészt terjedelmi okokból, másrészt azért, mert a statisztikával most először ismerkedők helyzetét nem akartuk azzal nehezíteni, hogy egyszerre két különböző szemléletmódot tárunk eléjük. Mentségünkre szolgál, hogy bayesi statisztika a bevezető kurzusok legtöbbjében egyáltalán nem, vagy legfeljebb csak az említés szintjén szerepel.

  • Az R szinte végtelenül gazdag lehetőségeinek bemutatása is meghaladja e könyv lehetőségeit (R Core Team (2018)). Ha a Kedves Olvasó az R-et már valamennyire tudja használni, akkor speciális problémáira – a túlélés-elemzéstől kezdve a genomikáig – az interneten nagyon sok kész R csomagot (értsd: kész programokat) találhat, amelyekhez készítőik részletes leírást is mellékeltek. Teljességre törekedni már csak azért is lehetetlen volna, mert az R-es közösség tagjainak munkája révén nap mint nap új R-csomagok készülnek. (A 2019 júliusában az elérhető csomagok száma meghaladja a 14500-at!) Lehet, hogy az R lelkes felhasználójává válván, egyszer majd a Kedves Olvasó is közzétesz egy saját fejlesztésű csomagot.

  • Könyvünk a kézi számoláshoz szükséges képletek közül csak a legalapvetőbbeket tartalmazza, lényegében csak azokat, amelyek a bevezető kurzusokon a feladatok megoldásához kellenek. Ma már a számítógépes programok alkalmazása mentesít a képletekkel való számolástól. A mai felhasználónak inkább azzal kell tisztában lennie, hogy mikor melyik módszert alkalmazhatja, mik a módszer alkalmazhatósági feltételei, és hogy hogyan értelmezze az eredményeket, mintsem a számítások részleteivel. Mégis, elsősorban a bevezető kurzusok hallgatóira gondolva, a legfontosabb képletek alkalmazására bemutatunk néhány kézi számolásos példát is. Hasonló a helyzet egyes klasszikus módszerekkel: a gyakorlatban már sohasem használjuk őket, mert ma már vannak sokkal hatékonyabb módszerek is, de a könyvből nem akartuk kihagyni, mert a bevezető kurzusokon – elsősorban didaktikai okokból – mégis ezeket tanítjuk.

  • Az eljárásokat ismertető eredeti közleményekre nem hivatkozunk, csak azt az R-függvényt adjuk meg, amellyel az eljárást végrehajthatjuk. Ha valakit az eljárások elméleti háttere érdekel, akkor azt ajánljuk, hogy az R-függvény leírásában (súgó) szereplő hivatkozásból induljon ki. Ezenkívül az irodalomjegyzékben megadunk néhány ,,alapművet’’, amelyekben sok módszer részletes leírása megtalálható.

A könyv elektronikus változata a bookdown R csomag segítségével készült (Xie (2016), Xie (2018)).

Könyvünk honlapjának címe: www.biostatkonyv.hu ahol a Kedves Olvasó a könyvben szereplő példák R-kódjait, további segédanyagokat és programokat találhat. Olvasóink visszajelzéseit is szívesen fogadjuk a honlapon megadott e-mail címen.

Köszönetnyilvánítás

Ezen könyv megszületése – bár csak három szerző jegyzi – nagyon sokak munkájának, biztatásának, lelkesedésének köszönhető. Hálánk jeléül felsoroljuk azokat, akik tevőlegesen hozzájárultak a könyv létrejöttéhez, tudva azt, hogy rajtuk kívül még sokakat felsorolhatnánk. A könyv lektorálásában részt vettek: Lang Zsolt, Kis János, Kiss Alexa, Abonyi-Tóth Zsolt, Lőkös László, Valcz Gábor, Maróti-Agóts Ákos, Szőke Dominika, Speiser Ferenc, Lakos András. Akiknek az adatait felhasználhattuk a példákhoz: Takács Erzsébet✝, Székely Tamás, Kis János, Peregovits László, Kőrösi Ádám, Mándoki Míra, Nagy Péter, Kabai Péter.

Sokan támogatták erőfeszítéseinket azzal, hogy olyan körülményeket teremtettek nekünk, amelyek lehetővé tették a könyv megírását: Fodor János✝, Fodor László, Harnos Zsolt✝, Kövér Szilvia, Demeter Márton, Szabó Gabriella. Külön köszönet Demeter Mártonnak a 3., Piross Imre Sándornak a 4. javított utánnyomáshoz nyújtott segítségéért.

Akik biztattak minket: Kis János, Varga Zoltán, Izsák János, Papp Péter László, Rózsa Lajos, Barta Zoltán, Pénzes Zsolt, Miklósi Ádám, Boda Krisztina és még sokan mások.

És természetesen hálával tartozunk családtagjainknak – Szekeres Zsuzsának, Dala Sárának, Vattay Gábornak, Enikőnek, Gergőnek és Demeter Daninak – azért, hogy elviselték a könyvírás nehéz időszakát.

Könyvünk az Oktatási és Kulturális Minisztérium támogatásával, a Felsőoktatási Tankönyv- és Szakkönyvtámogatási Pályázat keretében jelent meg, és a T049157 számú OTKA pályázat támogatásával készült.

Az elektronikus verzió létrejöttében nagy szerepe volt Demeter Mártonnak, Szécsi Barbarának és Süle Zsoltnak.

ÁTE Biomatematikai és Számítástechnikai Tanszék,

Budapest, 2019. augusztus 30.

Reiczigel Jenő, Harnos Andrea, Solymosi Norbert

Szükséges előismeretek

A teljes középiskolai matematika anyag ismeretét feltételezzük, de néhány fejezetet külön is kiemelünk, mert ezek ismeretét különösen fontosnak tartjuk. Egyik ilyen fejezet a logika. Érteni kell, hogy mit jelent az, hogy egy állításból logikailag következik egy másik állítás. Tisztában kell lenni azzal, hogy mit jelentenek – és mikor igazak – az ,,és’‘-sel, illetve ,,vagy’‘-gyal képzett összetett állítások és a ,,ha-akkor’’ típusú kijelentések. Azt is tudni kell, hogy hogyan képezhetjük az ilyen összetett állítások tagadását.

Ismerni kell a halmazműveleteket: a metszetet, egyesítést és a komplementer halmaz képzését. Ismerni kell a kombinatorika alapfogalmait, de legalább a faktoriális jelölést:

\(5!= 1\cdot2\cdot3\cdot4\cdot5, \quad k!= 1 \cdot 2 \cdot \cdots \cdot k\)

és a binomiális együtthatókat: \[ \ {n \choose k}=\frac{n!}{k!\cdot (n-k)!},\quad{8 \choose 3}=\frac{8!}{3!\cdot 5!}=\frac{8\cdot7\cdot6}{3\cdot2\cdot1}=56. \]

Tudni kell hatványokkal és logaritmussal számolni, ismerni kell a természetes alapú (,,\(e\)’’ alapú: \(\ln\)) logaritmust is.

Reméljük, hogy valószínűségszámításból a középiskolás anyag – kiegészítve a könyv valószínűségszámítás fejezetével – elegendő a további részek megértéséhez.

Az utolsó fejezetekhez szükség lesz a mátrixokkal kapcsolatos alapismeretekre is, ezek azonban nem haladják meg a biológus, állatorvos stb. szakosok bevezető matematika előadásaiban foglaltakat.

Jelölések, írásmód

A tananyagban tizedesvessző helyett tizedespontot használunk, részint azért, mert az R is tizedespontot használ, részint pedig azért, mert a statisztikában sokszor kell felsorolnunk számokat, és tizedesvessző használata esetén ezek a felsorolások olvashatatlanná válnának.

Nagyon kicsi és nagyon nagy értékeket az R normálalakban ír ki: például a 0.00000000000689 szám normálalakja \(6.89 \cdot 10^{-12}\). Ennek másik szokásos formája a 6.89E-12, ahol az ,,E’‘az exponensre (= kitevő) utal. Figyelem, az R kis ,,e’’-vel írja, így: 6.89e-12!

Sokszor használjuk a szumma jelet, amely összegek tömör leírására szolgál. Két példa: \[ \sum_{j=3}^6 \frac{1}{j} = \frac{1}{3}+\frac{1}{4}+\frac{1}{5}+\frac{1}{6}=\frac{20+15+12+10}{60}=\frac{57}{60}\\ \sum_{k=1}^n p^k = p + p^2 + p^3 + \ldots + p^n. \]

Ha a \(\sum\) jelnél nem írjuk ki, hogy mettől meddig összegzünk, akkor az azt jelenti, hogy az összes lehetséges értékre (például az összes mintaelemre) képezzük az összeget.

Igyekeztünk a statisztikában szokásos jelöléseket használni, így néhány dolgot görög betűvel jelölünk. Nevezetesen az alábbi görög betűket használjuk: \(\alpha\) (alfa), \(\beta\) (béta), \(\gamma\) (gamma), \(\varepsilon\) (epszilon), \(\lambda\) (lambda), \(\chi\) (khi), \(\tau\)~(tau), \(\mu\) (mű), \(\sigma\) (szigma), valamint \(\Sigma\) (nagy szigma).

Ha egy változót vastag álló betűvel jelölünk, akkor az kisbetű esetén vektort (például \(\mathbf{b_1}\)), nagybetű esetén mátrixot (például \(\mathbf{H}\)) jelent.

A tananyagban szereplő fontosabb fogalmak definícióját kiemeltük, és a definícióval együtt az angol elnevezést is megadjuk. Sajnos ugyanarra a fogalomra gyakran mind a magyarban, mind az angolban több kifejezés is létezhet. Ilyen esetekben igyekeztünk mind magyarul, mind angolul az összes ismert elnevezést felsorolni, és rámutatni az esetleges értelmezésbeli különbségekre. Szintén kiemelten szedtünk olyan megállapításokat, amelyeket alapvető fontosságúnak tartunk.

Hogyan használjuk a tan­anya­got?

Minden résznek hasonló a szerkezete. Valamennyi témát egy általános bevezetővel kezdünk, majd az elmélet ismertetésével és példákkal való illusztrálásával folytatjuk.

A példáknak három fajtája van:

  1. Csupán az elmélet illusztrálását szolgáló példák, ezekkel az olvasónak nincs más teendője, csak az, hogy igyekezzék megérteni őket. E példák célja, hogy segítségükkel az elméleti definíciókat szemléletes tartalommal töltsük meg. Érdemes ezeken úgy végigmenni, hogy pontról pontra megnézzük, hogy az előzőekben definiált fogalmak minek felelnek meg a példában.

  2. Kézi számolással megoldható példák, amelyeket hasznos lenne, ha az olvasó maga is végigszámolna. Sokszor csak így derül ki ugyanis, hogy a módszer egyes részleteit is jól érti-e. A bevezető kurzusok hallgatóinak a példák végigszámolása a statisztika dolgozatra való felkészülés részeként mindenképpen ajánlatos.

  3. R-es példák, amelyeket – ha a Kedves Olvasó járatos az R-ben, vagy meg szeretné tanulni a használatát – mindenképpen hasznos lenne, ha kipróbálna. Azt ajánljuk azonban, hogy a Kedves Olvasó sajátkezűleg is írjon R-kódokat, mert ha csak a könyv honlapján találtakat másolja le és futtatja, akkor egyes fontos részletek (zárójelek, határoló jelek, matematikai műveleti jelek, kis- és nagybetűk használata stb.) könnyen elkerülhetik a figyelmét. Az interatív példatárban R-rel megoldandó interaktív feladatok és a feladatokhoz kapcsolódó tesztkérdések vannak.

A példákban szereplő R-függvényeknek mindig csak azokat a paramétereit ismertetjük, amelyeknek a szóban forgó példában szerepük van. A függvényeknek általában sokkal több paramétere van, amelyeknek az R súgójában lehet utánanézni. Ha egy példában valaminek a jelentése vagy használatának módja nem derül ki egyértelműen, akkor is az R súgóját ajánljuk, ahol általában további bemutató példákat találhatunk.

Ismerkedés az R-rel

A elektronikus tankönyv felület egy olyan szerveren fut, amelyen az R 3.5.0 fut.

Az R-ben a felhasználó szöveges parancsokkal vezérli a programot.

Önálló R futtatáskor a program kezelő felülete az RGui, ennek ,,R Console’‘ablakába írhatjuk be a parancsokat, és az eredményeket is itt kapjuk meg (az ábrák kivételével, amelyek az ,,R Graphics’’ ablakban jelennek meg). Az RGui ablakai minimális menürendszerrel rendelkeznek, amelyekben a szerkesztéshez, beállításokhoz, letöltésekhez, mentésekhez, súgóhoz stb. tartozó fontosabb funkciók érhetők el.

A menürendszerrel működő programokhoz képest az R tanulása nagyobb kezdeti befektetést igényel felhasználójától, cserébe azonban sokkal többet is nyújt. Egy elemzéshez szükséges parancsok sorozata (,,szkript’‘, ,,program’‘vagy ,,R-kód’‘) elmenthető és bármikor újrafuttatható. Ennek nagy előnye, hogy ha sokszor kell ugyanolyan típusú elemzést végeznünk, akkor elég egyszer elkészíteni a programot. Az R-kódokat célszerű részletes jegyzetekkel (kommentekkel) ellátni, hasonlóan a program forráskódokhoz. Ez a kezdeti ,,többlet’’ munka sokszorosan visszatérül, hiszen így sok évvel az elemzések elvégzése után is pontosan felidézhetjük elemzéseink legapróbb részleteit is.

A kódszerkesztést megkönnyíthetjük azzal, ha az RGui kódszerkesztőjét más szövegszerkesztővel helyettesíthetjük. Ilyen például a Tinn-R, RStudio vagy az RKWard, amelyek használata ingyenes, és többek között képes az R programozási nyelv szintaxisának megfelelő szövegkiemelésre, és egyszerre több szkriptet is szerkeszthetünk benne. Képesek az RGui-val kommunikálni, azaz kódjainkat egyből futtathatjuk is ezekből a kódszerkesztőkből.

A menürendszerrel működő programokhoz képest az R tanulása nagyobb kezdeti befektetést igényel felhasználójától, cserébe azonban sokkal többet is nyújt. A (statR.e-akademia.hu-n elérhető egy ingyenes interaktív R bevezető tananyag, melynek segítségével a Kedves Olvasó elsajátíthatja az R alapszintű használatához szükséges ismereteket.) Tapasztalataink szerint azok, akik R-rel kezdenek statisztikát tanulni, jóval többet értenek saját elemzéseikből, mint azok, akik menüvezérelt programokkal kezdenek (persze soha nem késő váltani).

Hogyan olvassuk az R-kó­do­kat?

Az R-kódokat – akár a törzsszövegben, akár példákban szerepelnek – betutípusukkal is megkülönböztettük, így a szövegbe beszúrt R-kifejezések (függvények neve, például t.test(), változónevek, például MAGASSAG, vagy kulcsszavak, például alternative = 'two.sided' ) kelloképpen elkülönülnek a szöveg többi részétol. A könyv R-es példáiban – a könnyebb tájékozódás kedvéért – a felhasználó által beírt szövegek (kódok, parancsok) dolt betuvel jelennek meg, míg a program válaszai (az eredmények) nem. A könyvben felhasznált kódok és adatok letölthetok a könyv honlapjáról. Ezek futtatásához az R telepítése, majd elindítása után az RGui menüjével (File/Change dir …) állítsuk be munkakönyvtárnak azt a könyvtárat, ahová a kódokat és adatokat letöltöttük! Ezután nyissuk meg a kipróbálni kívánt kódot (File/Open script)! Az utasításokat legegyszerubben úgy futtathatjuk, hogy rálépünk a kurzorral az adott kódsorra (több sor esetén kijelöljük a kódrészletet), és megnyomjuk az Ctrl-R vagy F5 billentyut, vagy a jobb egérgomb megnyomásával megnyíló kis menübol választjuk ki az elso menüpontot. És most lássuk, hogy mi mit jelent a kódokban!

Jel Jelentés
> Az úgynevezett „prompt”, az R ezzel jelzi (az „R Console” ablakban), hogy várja a felhasználó parancsait.
+ Akkor jelenik meg a prompt helyén, ha az előző sorban lévő utasítást az R nem találta teljesnek, folytatásra vár.
1:5 Az 1, 2, 3, 4, 5 értékekből álló vektor.
= Értékadás: például az a = 12 parancs azt jelenti, hogy az a változó értéke legyen 12, a b = 3:6 pedig azt, hogy a b legyen a 3, 4, 5, 6 számokból álló vektor. Lehet helyette használni a <-, illetve -> szimbólumokat is.
(…=…) Ha egy értékadó utasítást zárójelbe teszünk, akkor az R az értékadás végrehajtása mellett ki is írja az eredményt (célja csupán helytakarékosság).
^ Hatványozás, például a 2^3 jelentése 23.
() Függvényargumentumok határolója, például mean(b) a b vektor átlaga.
~ Formulában a függő és a magyarázó változó(ka)t vagy a belőlük készített kifejezést köti össze.
8.88e-16 8.88 · 10−16.
Inf Végtelen (az olyan nagy számot, amely már meghaladja az R számábrázolási lehetőségeit, így jelöli a program).
[ ] Index: vektorok, mátrixok és táblázatok egyes elemeinek jelölésére szolgál. Az előbbi b vektorral például, b[3] a vektorbeli harmadik érték, vagyis az 5. Mátrixoknak, táblázatoknak két indexe van, az első a sort, a második az oszlopot azonosítja. Ha valamelyiket elhagyjuk, akkor ez a mátrix egy teljes sorát, illetve oszlopát jelenti, például a [, 2] a második oszlopot. Az eredmények kiírásakor a sorok elején azt jelenti, hogy a sor elején álló szám az outputnak hányadik eleme. A kiírás első sorában ez mindig [1]. Ha a kiírt számok elférnek egy sorban, akkor nem is lenne rá szükség, de az R ekkor is kiírja.
$ Az adatmátrixot (táblázatot) és az abban levő oszlopot (változót) köti össze. Így tudjuk megmondani, hogy melyik mátrix melyik oszlopáról van szó, például a pop$magas a pop nevű adatmátrixban a magas nevű változó (= oszlop).
with() Például: with(regr.kurz,...), a regr.kurz adatmátrixszal végezzük el a . . . utasítást.
library() R-csomag betöltése.
as.numeric() Faktorból ideiglenesen numerikus változót állít elő (a változó értékei egész számok lesznek, a szintek belső kódjai).
legend() Ábrán cimkék pozicionálása, megadása és formázása.
par() Grafikus paraméterek beállítására szolgál, például a par(mfrow = c(2,2)) a grafikus ablak felosztása 4 részre (2 sorra és 2 oszlopra).
c(1,2,4) Vektorrá fűzi össze az argumentumokat.
rep() Ismétlés, például rep(3,4) a 3-at ismétli 4-szer, eredménye a (3, 3, 3, 3) vektor.
matrix() Mátrixot hoz létre egy számsorból.
cbind(), rbind() Vektorokat, mátrixokat vagy táblázatokat fűznek össze oszlopok, illetve sorok szerint.
data.frame() Vektorokat, mátrixokat, táblázatokat egy táblázattá fűz össze.
Gyakran használt függvényargumentumok
data Adatmátrix megadása.
T vagy TRUE Igaz.
F vagy FALSE Hamis.
xlab,ylab Ábrákon az x és y tengelyfeliratok.
pch Pontok típusának megadása.
bty A keret típusának megadása.
lty A vonal típusának megadása.
main A főcím megadása.
add Ha T-re (TRUE) állítjuk, akkor az előző ábrát írja felül.