library("xlsx") ################################# # # # ANOVA (1. cvičení z Excelu) # # # ################################# data1.0<-read.xlsx("11_anova_zadani.xlsx","ANOVA",startRow=9,encoding="UTF-8")[1:366,2:5] colnames(data1.0)<-tolower(make.names(colnames(data1.0))) # trošku upravíme názvy sloupců colnames(data1.0)[1]<-"datum" data1.0$den<-weekdays(data1.0$datum) # je třeba data reformátovat do „nudle“ data1.1<-reshape(data1.0, varying=list(c("čd","rj","leo")), times=c("čd","rj","leo"), direction="long") data1<-data.frame("den"=data1.1$den, "dopravce"=data1.1$time, "počet"=data1.1$čd) # alternativně data1<-data.frame("den"=rep(data1.0$den,3), "dopravce"=rep(colnames(data1.0)[2:4],each=366), "počet"=c(data1.0$čd,data1.0$rj,data1.0$leo)) ## Ověření předpokladů # 1. normalita ve skupinách cd<-data1[which(data1$dopravce=="čd"),"počet"] hist(cd,sub=paste0("p = ",round(ks.test(cd,"pnorm",mean(cd),sd(cd))$p.value,3))) rj<-data1[which(data1$dopravce=="rj"),"počet"] hist(rj,sub=paste0("p = ",round(ks.test(cd,"pnorm",mean(rj),sd(rj))$p.value,3))) le<-data1[which(data1$dopravce=="leo"),"počet"] hist(le,sub=paste0("p = ",round(ks.test(le,"pnorm",mean(le),sd(le))$p.value,3))) # 2. homoskedasticita library(car) leveneTest(počet~dopravce*den,data=data1) # Nyní provedeme model a třetí podmínku otestujeme, až budeme mít rezidua model<-aov(počet~dopravce+den,data=data1) # anova hlavních efektů summary(model) # Tukeyův post-hoc test TukeyHSD(model) # 3. nezávislost reziduí cor.test(model$residuals,data1$počet) # alternativně cor.test(cd,rj) cor.test(cd,le) cor.test(rj,le) # Rezidua nejsou nezávislá, (proměnné nejsou nezávislé) měli bychom zvolit ANOVu opakovaných měření # Varianta s interakcemi model<-aov(počet~dopravce*den,data=data1) # anova s interakcemi summary(model) boxplot(počet~dopravce*den,data=data1,las=2,xlab="") # ANOVA opakovaných měření - dny v týdnu jako náhodné efekty model<-aov(počet~dopravce+Error(den),data=data1) # anova opakovaných měření summary(model) # Pouze ukázka mixed-effect modelu, který je alternativou k ANOVě opakovaných měření library(lme4) model<-lmer(počet~dopravce+(1|den),data=data1) summary(model) ################################################# # # # Kruskal-Wallisův test (2. cvičení z Excelu) # # # ################################################# data2.0<-read.xlsx("11_anova_zadani.xlsx","Kruskal-Wallis test", startRow=7,encoding="UTF-8")[,2:4] data2<-data2.0 # data 2 jsou použitelná hned kruskal.test(mm.Hg~pohlaví,data=data2) kruskal.test(mm.Hg~věk,data=data2) # nová proměnná, slučující informaci z proměnných pohlaví a věk data2$pohlaví_a_věk<-paste(data2$pohlaví,data2$věk) # spojení sloupců pohlaví a věk do jednoho (protože Kruskal-Wallisův test neumí víc faktorů) kruskal.test(mm.Hg~pohlaví_a_věk,data=data2) ##################### # # # Friedmanův test # # # ##################### # Data musí být ve formě matice data1.2<-as.matrix(data1.0[,c(2,3,4)]) # Friedmanův test s opakováním pro každý jednotlivý den v roce (nelze opakovat kombinace dopravce × den) friedman.test(data1.2)