data <- read.table('TO-DO', header=T) summary(data) # v summary rovnou i vidime pritomnost NA hodnot 'TO-DO' # odstraneni NA a pripadna uprava faktorovych promennych ## lze pouzit take argument stringsAsFactors = TRUE ve funkci read.table, ## potom se faktorove promenne kodovane pomoci pismen nactou jako faktor ## A) vypocet prumeru, sd a rozsahu pro jednotlive populace a pro cely soubor cat("Prumery jednotlivych populaci") (group.means <- tapply(data$cla.L, data$population, mean)) ## ve funkci tapply je nejprve vektor, ktery chceme rozdelit, pak faktor, podle ktereho rozdelujeme a nakonec funkce, kterou chceme pro jednotlive skupiny pocitat cat("SD jednotlivych populaci") (group.sd <- tapply('TO-DO')) # doplnte podle predchoziho vypocet pro sd ## lze samozrejme pocitat po jednom, ale je to casove narocnejsi, navic je snadne udelat chybu, kdy zapomeneme nekde prepsat populaci apod. # mean(data$cla.L[which(data$population == "gre")]) atd. cat("Rozsahy jednotlivych populaci") (sizes <- table(data$pop)) # nebo je rovnou vidime v summary # pro cely datovy soubor spolecne cat("Celkovy prumer") 'TO-DO' # vypocet prumeru vsech populaci dohromady 'TO-DO' # analogicky pro sd a rozsah ## B) boxploty boxplot(cla.L ~ population, data=data, var.width=T, notch=T, xlab="Populace", ylab="delka klicni kosti") points(1:3, group.means, col="red", pch=16) # pridani prumeru ## boxplot populace automaticky abecedne seradi - pozor, pokud bychom meli v puv. datech jine razeni jednotlivych kategorii, tak musime prislusne preskladat body ve vykresleni prumeru ## C) overeni predpokladu normality nutneho pro analyzu rozptylu ## pouzijeme kvantil-kvantilove grafy a Shapiro-Wilk/Anders-Darling/Lilliefors test ## nutne PRO KAZDOU POPULACI ZVLAST par(mfrow=c(1,3)) # nastavime 3 grafy do jednoho obrazku qqnorm(data[data$population=='gre','cla.L'],main="Populace recka", xlab="teoreticky kvantil", ylab='pozorovany kvantil') qqline(data[data$population=='gre','cla.L'], col = "red") 'TO-DO' # kvantil-kvantilove grafy pro dalsi 2 populace library(nortest) lillie.test(data[data$population=='ind1','cla.L']) ad.test(data[data$population=='gre','cla.L']) ad.test(data[data$population=='ind2','cla.L']) ## D) overeni predpokladu homogenity rozptylu (nutne pro ANOVA) ## pouzit muzeme Bartlettuv test nebo Levenuv test z knihovny "car" bartlett.test(cla.L ~ population, data) library("car") leveneTest(cla.L ~ population, data) ## E) analyza rozptylu - ANOVA ## lze vyuzit fce aov, popr. obecnejsi lm an1 <- aov(cla.L ~ population, data=data) anova(an1) # vypis tabulky vysledku z ANOVy an2 <- lm(cla.L ~ population, data=data) # totez pomoci lm() anova(an2) # radek population se vztahuje k jednotlivym populacim (skupinam), radek Residuals k reziduum (chybam) # Ve sloupci df jsou stupne volnosti, sloupec Sum Sq obsahuje soucty ctvercu, sloupec Mean Sq prumerne soucty ctvercu, # F value je hodnota F-statistiky a posledni sloupec obsahuje p-hodnotu testu ## F) Mnohonasobne porovnavani # Tukeyho metoda TukeyHSD(an1) # lze pouzit i fci PostHocTest z knihovny DescTools library(DescTools) PostHocTest(an1,method=c('hsd')) # Scheffeho metoda - knihovna DescTools ScheffeTest(an1) # rucni vypocet metody viz materialy k resenemu prikladu # Bonferroniho metoda pairwise.t.test(data$cla.L, data$population, p.adjust.method="bonferroni", pool.sd=T) 'TO-DO' # analogicky postupu vyse vypracujte nereseny priklad