# Tento pomocny skript nemusite pouzit, jeho pouziti je dobrovolne. # Obsahuje reseni v R s vynechanymi castmi oznacenymi "...". # Na mista "..." musite doplnit spravnou cast kodu, aby vam skript fungoval. # Pro spousteni primo ze skriptu, nastavte kurzor na pozadovany radek # a stisknete Ctrl + Enter. ############################################################################# # 2. cviceni ############################################################################# # Priklad 1 # Nejprve musime nacist data. Jednim ze zpusobu je vyuzit funkci read.table(). # Jejimi argumenty v nasem pripade jsou cesta k datovemu soboru a argument # header udavajici, zda nas datovy soubor obsahuje hlavicku. To zjistite, pokud # si soubor "anova2.txt" otevrete napr. v poznamkovem bloku. body <- read.table("...", header=...) summary(body) # Jsou v datech nejake chybejici hodnoty? # Prevedte promenne sex a obra na typ "faktor"; poradi labels musi byt abecedne razeno body$sex <- factor(..., labels=c("f", "m")) body$obra <- factor(..., labels=c("no", "yes")) # Nastaveni popisku ylabel <- "Telesna vyska [mm]" groups <- c("zena bez starsiho bratra", "zena se starsim bratrem", "muz bez starsiho bratra", "muz se starsim bratrem") summary(body) # Vykresleni boxplotu. Dovnitr zadejte formuli: "zavisla prom. ~ nezavisla prom + nezavisla prom". # Vyzkousejte si i funkcnost zbylych parametru boxplot(body$... ~ body$... + body$..., varwidth=T, notch=T, xlab="Skupina", ylab=ylabel, xaxt="n", las=1) # Nastaveni x-ove osy a popisku na ni axis(1, at=1:4, labels=NA) mtext(groups[c(1,3)], side=1, line=1, at=c(1,3)) mtext(groups[c(2,4)], side=1, line=2, at=c(2,4)) # Vypoctete prumery jednotlivych skupin a pridejte je jako cerevene # body do boxplotu mm1 <- mean(...) mm2 <- mean(...) mm3 <- mean(...) mm4 <- mean(...) points(1:4, c(mm1,mm2,mm3,mm4), col="...", pch=16) # Sestrojime model bez interakce m.body.1 <- aov(... ~ ... + ..., data=body) # Nastavi zobrazeni 4 grafu najednou (na 2 radky a 2 sloupce) par(mfrow=c(2,2)) # Overte predpoklady pomoci analyzy rozptylu plot(m.body.1, which=1:4) ## Co jednotlive grafy overuji? ## 1) ... ## 2) ... ## 3) ... ## 4) ... # Overte normalitu shapiro.test(...) ## Jak test dopadl? m.body.1$coefficients ## Interpretujte koeficienty modelu # Anova tabulka anova(m.body.1) # Testovani pomoci kritickeho oboru # pro faktor "pohlavi" qf(0.95, df1 = 1, df2 = 172) ## Jak dopadl test? # pro faktor "pritomnost starsiho bratra" qf(0.95, df1 = ..., df2 = ...) ## Jak dopadl test? # Provedte mnohonásobné porovnavani pro faktor vykazujici rozdily # Jaka je hypoteza, kterou testujeme? # H0: ... # H1: ... # Tukey TukeyHSD(m.body.1, which=c("...")) # Scheffe a <- ... b <- ... n <- nrow(body) m.boys <- mean(body[body$sex =="m","body.H"]) m.girls <- mean(...) n.sex <- as.numeric(table(body$sex)) res.mean.sq <- anova(m.body.1)["Residuals","Mean Sq"] # zeny-muzi; leva strana abs(... - ...) # prava strana sqrt((a-1) * (1/n.sex[1] + 1/n.sex[2]) * res.mean.sq * qf(0.95, a-1, n-a*b)) ## Zamitame nulovou hypotezu? # Priklad 2 # Postupujeme analogicky a pracujeme se stejnym datovym souborem; # Zajima nas vsak zavisla promenna head.L ylabel <- "Delka hlavy [mm]" groups <- c("zena bez starsiho bratra", "zena se starsim bratrem", "muz bez starsiho bratra", "muz se starsim bratrem") summary(body) # Krabicove grafy par(mfrow = c(1,1)) boxplot(... ~ ... + ..., varwidth=T, notch=T, xlab="Skupina", ylab=ylabel, xaxt="n", las=1) axis(1, at=1:4, labels=NA) mtext(groups[c(1,3)], side=1, line=1, at=c(1,3)) mtext(groups[c(2,4)], side=1, line=2, at=c(2,4)) mm1 <- mean(...) mm2 <- mean(...) mm3 <- mean(...) mm4 <- mean(...) points(1:4, c(mm1,mm2,mm3,mm4), col="red", pch=16) ## pridani prumeru do grafu # sestrojime model s interakci m.body.2 <- aov(... ~ ... * ..., data=...) # Diagnosticke grafy par(mfrow=c(2,2)) plot(m.body.2, which=1:4) # Test normality shapiro.test(...) m.body.2$coefficients ## Interpretujte koeficienty ## ... # Anova tabulky anova(...) # Test pomoci kritickeho oboru # pro faktor "pohlavi" qf(0.95, df1 = 1, df2 = 171) # pro faktor "pritomnost starsiho bratra" qf(...) # pro interakci qf(...) ## Jake jsou vysledky testu? ## ... # provedeme mnohonásobné porovnavani pro faktory vykazujici rozdily # Jake hypotezy overujeme? # H0: ... # H1: ... # Tukey TukeyHSD(m.body.2, which=c(...)) # Scheffe a <- ... b <- ... n <- nrow(body) m.boys <- mean(...) m.girls <- mean(...) n.sex <- as.numeric(table(body$sex)) m.old_b <- mean(...) m.no_old_b <- mean(...) n.bro <- as.numeric(table(body$obra)) res.mean.sq <- anova(m.body.2)["Residuals","Mean Sq"] # zeny-muzi; leva strana abs(... - ...) # prava strana sqrt((a-1) * (1/n.sex[1] + 1/n.sex[2]) * res.mean.sq * qf(0.95, a-1, n-a*b)) ## Jaky je vysledek testu? ## ... # old brother-no old brother abs(... - ...) sqrt((b-1) * (1/n.bro[1] + 1/n.bro[2]) * res.mean.sq * qf(0.95, b-1, n-a*b)) ## Jaky je vysledek testu? ## ... # Pracujte s koeficienty bez interakce (prokazala se jako nevyznamna) coefs <- m.body.2$coefficients girls <- ... boys <- ... par(mfrow = c(1,1)) # Vykresleni grafu boxplot(body$body.H~body$obra, ylim=c(170, 210), border="white", xlab="Pritomnost starsiho bratra", ylab=ylabel) points(1:2,girls, col="red", pch=16) lines(1:2,girls, col="red", lty=2) points(1:2, boys, col="blue", pch=17) lines(1:2, boys, col="blue", lty=2) legend("topleft", legend=c("divky", "chlapci"), col=c("red", "blue"), pch=c(16,17)) # Zkuste si stejny graf vykreslit i s koeficienty zahrnujici interakci