Cvičení z biostatistiky 06 Poslední úprava dokumentu: 16. března 2017. Opakování na větším datovém souboru 1 Úvod Datový soubor Kojeni.csv obsahuje údaje (hodnoty oddělené středníky) o 99 matkách a jejich dětech (data získala Mgr. P. Hajná při přípravě své diplomové práce). Najdeme zde následující proměnné: trvani pocet.deti Vzdelani por.hmotnost por.delka Prs hmotnost delka vyska.m vyska.o Otec vek.m vek.o Dudlik Plan Porodnice Koj24 HochL hoch Hoch délka kojení v prvních 24 týdnech po porodu (týdny); o kolikáté dítě matky jde; vzdělání matky (základní/maturita/vš); porodní hmotnost dítěte (g); porodní délka dítětete (cm); dítě bylo do půl hodiny po porodu přiloženo k prsu (0=ne, 1=ano); hmotnost dítěte ve 24. týdnu po porodu (g); délka dítěte ve 24. týdnu po porodu (cm); výška matky (cm); výška otce (cm); otec u porodu (0=ne, 1=ano); věk matky (roky); věk otce (roky); dítě mělo dudlík (0=ne, 1=ano); dítě bylo podle matky plánované (0=ne, 1=ano); rozlišení dvou porodnic, v nichž byla pořizována data (1=Praha, 2=okresní město); matka kojila ještě ve 24. týdnu po porodu (0=ne, 1=ano); dítě je hoch (FALSE=ne, TRUE=ano); dítě je hoch (0=ne, 1=ano); pohlaví dítěte (dívka/hoch). 1) Načtěte data do R, datovou tabulku nazvěte Kojeni. Menu RStudia: File y Import Dataset y from CSV y Browse... y Name Kojeni Delimiter Semicolon (středník) First Row as Names Nebo příkazem: Kojeni <- read.csv2("./data/kojeni.csv", header=true) 2) Zatím si nezajišt ujte přímý přístup k jednotlivým proměnným v datech, tj. nespouštějte příkaz attach(kojeni). 1
2 Základní popisná statistika 1) Udělejme si představu o charakteristikách jednotlivých proměnných tím, že pro ně spočítáte základní popisné statistiky. Popisné statistiky pro všechny proměnné datového souboru spočteme pomocí příkazu: summary(kojeni) 3 Úprava dat 1) Zjistěme četnosti jednotlivých stupňů vzdělání matky: table(kojeni$vzdelani) 2) Jak vidíme, ve výstupu jsou nevhodně srovnané skupiny (maturita, VŠ, základní). Změňme uspořádání skupin ve vnitřním uložení dat. Kojeni <- transform(kojeni, Vzdelani = factor(vzdelani, levels=c("zakladni", "maturita", "VS"))) Anebo: Kojeni$Vzdelani <- factor(kojeni$vzdelani, levels=c("zakladni", "maturita", "VS")) 3) Znovu spočtěte četnosti jednotlivých stupňů vzdělání matky. 4) K nula-jedničkovým proměnným Prs, Otec, Dudlik, Plan, Koj24 vytvořme factorové protějšky nazvané fprs, fotec, fdudlik, fplan, fkoj24 nabývající hodnot ne, ano. Kojeni$fPrs <- factor(kojeni$prs, labels=c("ne", "ano")) Kojeni$fOtec <- factor(kojeni$otec, labels=c("ne", "ano")) Kojeni$fDudlik <- factor(kojeni$dudlik, labels=c("ne", "ano")) Kojeni$fPlan <- factor(kojeni$plan, labels=c("ne", "ano")) Kojeni$fKoj24 <- factor(kojeni$koj24, labels=c("ne", "ano")) Nebo pomocí příkazu transform: Kojeni <- transform(kojeni, fprs=factor(kojeni$prs, labels=c("ne", "ano"))) a ostatní proměnné analogicky. 5) K proměnné Porodnice vytvořte faktorovou proměnnou fporodnice, jež bude nabývat hodnot Praha, okres. 6) Pro kontrolu znovu spočtěte základní popisné statistiky pro všechny proměnné datového souboru Kojeni. 6 Mají hodnoty ve sloupci Plan rozumnou interpretovatelnost? Pokud ano, jakou? 6 Mají hodnoty ve sloupci Porodnice rozumnou interpretovatelnost? Pokud ano, jakou? 6 Nabývá-li nějaká proměnná pouze dvou hodnot, je lepší ji v datech kódovat jako 0, 1 nebo spíše jako 1, 2? Nebo ještě jinak? 7) Pro pozdější použití si uložme datovou tabulku Kojeni (včetně všech dnes vytvořených proměnných) v R-kovém datového formátu (přípona RData). save(kojeni, file = "./data/kojeni.rdata") 2
4 Tvar rozdělení kvantitativního znaku 1) Umožněme přímý přístup k jednotlivým proměnným datové tabulky Kojeni. Spust te ze skriptového okna příkaz attach(kojeni) 2) Nakresleme normální QQ graf pro věk matek (vek.m) qqnorm(vek.m, pch=16, col="red", xlab="teoreticke kvantily N(0, 1)", ylab="kvantily veku matek", main="normalni QQ graf (vek matek)") qqline(vek.m, lty=6, col="darkblue") 6 Co si myslíte o rozdělení věku matek. Lze předpokládat normalitu? 3) Nakresleme histogram věku matek (přeškálovaný tak, aby odhadoval hustotu). hist(vek.m, prob=true, col="slateblue", xlab="vek matky", ylab="hustota", main="histogram (vek matek)") Pro porovnání lze pak do histogramu přidat hustotu normálního rozdělení, jehož parametry odhadneme z dat curve(dnorm(x,mean(vek.m),sd(vek.m)), col="red", add=true) 4) Spočtěme výběrovou šikmost a špičatost pro věk matek. Pro připomenutí: a 3 = 1 n a 4 = 1 n n i=1 n i=1 ( xi x ) 3 (výběrová šikmost), ( xi x ) 4 3 (výběrová špičatost). 6 Veličiny z i = x i x (i = 1,..., n) se někdy nazývají z-skóry a v R je lze získat pomocí funkce scale. Výběrovou šikmost a špičatost proto snadno spočteme pomocí následujících příkazů: mean(scale(vek.m)^3) mean(scale(vek.m)^4) - 3 ## sikmost ## spicatost 6 Jakých hodnot (přibližně) by výběrová šikmost a špičatost měla nabývat, jestliže bychom mohli předpokládat normalitu rozdělení věku matek? 6 Co lze usuzovat z kladné a co ze záporné šikmosti? 5) Nakreslete normální QQ graf a histogram a spočtěte výběrovou šikmost a špičatost pro hmotnost ve 24. týdnu (hmotnost). 6 Co lze soudit o tvaru rozdělení hmotnosti ve 24. týdnu? 6) Nakreslete normální QQ graf a histogram a spočtěte výběrovou šikmost a špičatost pro výšku otců (vyska.o). 6 Co lze soudit o tvaru rozdělení výšky otců? 3
5 Popisná statistika: kvantitativní a kvalitativní znak 1) Spočtěme základní popisné statistiky pro věk matek (vek.m) v závislosti na místu porodu (fporodnice). tapply(vek.m, fporodnice, summary) tapply(vek.m, fporodnice, sd) tapply(vek.m, fporodnice, var) tapply(vek.m, fporodnice, length) ### smer. odchylky ### rozptyly ### pocty pozorovani 2) Nakresleme krabičkové grafy pro věk matek, ze kterých půjdou snadno porovnat základní charakteristiky rozdělení věku matek v Praze a v okresním městě. plot(vek.m ~ fporodnice, col=c("brown4", "palegreen"), xlab="misto porodu", ylab="vek matek") 6 Domníváte se, že se věková struktura rodících matek liší mezi Prahou a okresem? 6 Později budeme zkoumat odlišnost populačních průměrů věku matek mezi Prahou a okresem pomocí dvouvýběrových testů (t-test, Wilcoxonův test). 3) Spočtěte základní popisné statistiky pro věk matek (vek.m) v závislosti na vzdělání (Vzdelani). 4) Nakreslete krabičkové grafy pro věk matek, ze kterých půjdou snadno porovnat základní charakteristiky rozdělení věku matek v závislosti na vzdělání. 6 Domníváte se, že věk rodící matky závisí na vzdělání? 6 Později budeme zkoumat závislost věku matky na vzdělání pomocí vícevýběrových testů (analýza rozptylu, Kruskalův-Wallisův test). 5) Spočtěte základní popisné statistiky pro věk otců (vek.o) v závislosti na vzdělání matky (Vzdelani) 6) Nakreslete krabičkové grafy pro věk otců, z kterých půjdou snadno porovnat základní charakteristiky rozdělení věku otců v závislosti na vzdělání matky. 6 Domníváte se, že věk otce závisí na vzdělání matky? 6 Popisná statistika: dva kvalitativní znaky 1) Spočtěme kontingenční tabulku pro vzdělání matky (Vzdelani) a plánování dítěte (fplan) a s ní související podmíněné relativní četnosti (podmiňujme vzděláním). table(vzdelani, fplan) prop.table(table(vzdelani, fplan), margin=1) * 100 2) Zobrazme spočtené podmíněné relativní četnosti ve formě sloupcového grafu. plot(fplan ~ Vzdelani, col=c("red", "darkgreen"), xlab="vzdelani matky", ylab="planovane dite") 6 Domníváte se, že pravděpodobnost jevu, že dítě je plánované, závisí na vzdělání matky? 6 Později budeme zkoumat závislost pravděpodobnosti plánovaného rodičovství na vzdělání matky pomocí χ 2 (chí kvadrát) testu nezávislosti. 3) Spočtěte kontingenční tabulku pro vzdělání matky (Vzdelani) a pohlaví dítěte (Hoch) a s ní související podmíněné relativní četnosti (podmiňujte vzděláním). 4) Zobrazte spočtené podmíněné relativní četnosti ve formě sloupcového grafu. 6 Domníváte se, že pohlaví dítěte závisí na vzdělání matky? 4
7 Popisná statistika: dva kvantitativní znaky 1) Spočtěme korelační koeficient mezi hmotností a délkou dítěte ve 24. týdnu (hmotnost a delka). cor(hmotnost, delka) 2) Nakresleme bodový graf závislosti hmotnosti na délce. plot(hmotnost ~ delka, col="red", pch=16, xlab="delka (cm)", ylab="hmotnost (kg)") 3) Nakresleme bodový graf závislosti hmotnosti na délce, ve kterém dále odlišíme chlapce a dívky. divky <- which(hoch=="divka") # kde jsou v datech dívky hosi <- which(hoch=="hoch") # kde jsou v datech hoši plot(delka[divky], hmotnost[divky], col="violet", pch=6, xlab="delka (cm)", ylab="hmotnost (kg)") points(delka[hosi], hmotnost[hosi], col="darkblue", pch=17) Do grafu přidáme legendu legend("bottomright", legend=c("divka", "Chlapec"), col=c("violet","darkblue"), pch=c(6,17)) 6 Domníváte se, že hmotnost nějakým způsobem závisí na délce? 6 Domníváte se, že případná závislost hmotnosti na délce je jiná pro chlapce a jiná pro dívky? 6 Později budeme zkoumat závislost hmotnosti na délce a případné odlišnosti v této závislosti s ohledem na pohlaví pomocí lineární regrese. 4) Uložte si skript a zavřete RStudio. 5