d1 <- c(3.6, 3.8, 3.7, 3.5) d2 <- c(4.3, 3.9, 4.2, 3.9, 4.4, 4.7) d3 <- c(4.2, 4.5, 4.0, 4.1, 4.5, 4.4) #Testy normality #H0: Data d1 jsou z normalniho rozdeleni. #H1: Data d1 nejsou z normalniho rozdeleni. #(Analogicke hypotezy pro d2 a d3) shapiro.test(d1)$p.value # 0.9718771 shapiro.test(d2)$p.value # 0.5818953 shapiro.test(d3)$p.value # 0.331314 # p-hodnota je ve vsech trech pripadech > 0.05 => H0 nezamitame na hladine vyzn. alpha=0.05. #Q-Q grafy par(mfrow=c(1,3)) qqnorm(d1,main='Q-Q plot - 1.delnik',xlab='teoreticke kvantily', ylab='vyberove kvantily') qqline(d1,col='red') qqnorm(d2,main='Q-Q plot - 2.delnik',xlab='teoreticke kvantily', ylab='vyberove kvantily') qqline(d2,col='red') qqnorm(d3,main='Q-Q plot - 3.delnik',xlab='teoreticke kvantily', ylab='vyberove kvantily') qqline(d3,col='red') #Test o shode rozptylu D <- c(d1,d2,d3) #vsechny hodnoty v jednom vektoru (K <- c(rep(1,4),rep(2,6),rep(3,6))) #vektor s informaci o tom, k jake skupine pozorovani patri #Testovani: #H0: sigma_1^2 = sigma_2^2 = sigma_3^2 #H0: Alespon jedna dvojice rozptylu se vyznamne lisi library(lawstat) # nacteni knihovny lawstat kvuli prikazu levene.test() levene.test(D,K)$p.value # pozorovani v prvni skupine je mene nez 6 => pouzijeme Levenuv test #p-hodnota = 0.2620502 > 0.05 => H0 nezamitame na hladine vyznamnosti alpha=0.05. par(mfrow=c(1,1)) boxplot(d1,d2,d3, main='Vykony delniku - boxplot', names=c('1.delnik','2.delnik','3.delnik'),col='beige') #ANOVA #H0: mu1 = mu2 = mu3 #H0: Alespon jedna dvojice strednich hodnot se od sebe vyznamne lisi r <- 3 #pocet skupin (urovni faktoru) alpha <- 0.05 #hladina vyznamnosti n<-length(D) #celkovy pocet pozorovani (ni<-c(length(d1),length(d2),length(d3))) #pocty pozorovani v jednotlivych skupinach Xi.<-c(sum(d1),sum(d2),sum(d3)) #soucet hodnot v kazde skupine (Mi.<-Xi./ni) #prumer hodnot v kazde skupine (M..<-mean(D)) #celkovy prumer vsech hodnot (SA<- sum(ni*(Mi.-M..)^2)) #skupinovy soucet ctvercu SA (fA<-r-1) #pocet stupnu volnosti skupinoveho souctu ctvercu SA (ST<- sum((D-M..)^2)) #celkovy (totalni) soucet ctvercu ST (SE<-ST-SA) #rezidualni soucet ctvercu SE (fE<-n-r) #pocet stupnu volnosti rezidualniho souctu ctvercu SE (FA<-(SA/fA)/(SE/fE)) #testovaci kriterium FA qf(1-alpha, r-1,n-r) #dolni hranice kritickeho oboru #Kriticky obor W = <3.8 ; infty) # Testovaci kriterium FA=9.665 nalezi do W => H0 zamitame na hladine vyznamnosti alpha=0.05. # => alespon jedna dvojice strednich hodnot se od sebe vyznamne lisi (nevime, ale, jestli je jen jedna ani, ktere dvojice to jsou.) #METODA MNOHONASOBNEHO POROVNAVANI #Protoze jsme H0 o shode strednich hodnot zamitli, zajima nas, ktere dvojice strednich hodnot se od sebe vyznamne lisi. #Protoze zadane nahodne vybery d1, d2 a d3 maji ruzne rozsahy, pouzijeme na otestovani Scheffeho metodu. #Nejprve testujeme shodu strednich hodnot 1. a 2. nahodneho vyberu: #H0: mu1=mu2 #H0: mu1 se nerovna mu2 Sh<-sqrt(SE/fE) (Scheffe.R <- Sh*sqrt((r-1)*(1/ni[1]+1/ni[2])*qf(1-alpha,r-1,n-r))) (Scheffe.L <- abs(Mi.[1]-Mi.[2])) Scheffe.L>=Scheffe.R #Leva strana Scheffeho rovnosti je vetsi/rovna prave strane => H0 zamitame na hladine vyznamnosti alpha=0.05. #Interpretace: Casy potrebne k provedeni pracovniho vykonu u prvniho a druheho delnika se vyznamne lisi. #Porovnani 1. a 3. delnika: #H0: mu1=mu3 #H0: mu1 se nerovna mu3 (Scheffe.R <- Sh*sqrt((r-1)*(1/ni[1]+1/ni[3])*qf(1-alpha,r-1,n-r))) (Scheffe.L <- abs(Mi.[1]-Mi.[3])) Scheffe.L>=Scheffe.R #Leva strana Scheffeho rovnosti je vetsi/rovna prave strane => H0 zamitame na hladine vyznamnosti alpha=0.05. #Interpretace: Casy potrebne k provedeni pracovniho vykonu u prvniho a tretiho delnika se vyznamne lisi. #Porovnani 2. a 3. delnika: #H0: mu2=mu3 #H0: mu2 se nerovna mu3 (Scheffe.R <- Sh*sqrt((r-1)*(1/ni[2]+1/ni[3])*qf(1-alpha,r-1,n-r))) (Scheffe.L <- abs(Mi.[2]-Mi.[3])) Scheffe.L>=Scheffe.R #Leva strana Scheffeho rovnosti je mensi nez prava strana => H0 nezamitame na hladine vyznamnosti alpha=0.05. #Interpretace: Casy potrebne kprovedeni pracovniho vykonu u druheho a tretiho delnika se vyznamne nelisi. #=================================================================================================================== #Scheffeho metodu lze elegantne naprogramovat pomoci dvou cyklu. #Vysledkem je matice 'Scheffe.matice', ktera obsahuje jednicky, tam, kde H0 mame zamitnou a nuly, tam, kde H0 nemame zamitnout. #(Tato matice je vzdy symetricka podle diagonaly x=y, pricemz na diagonale jsou vzdy 0.) #Vysvetleni: Pokud v prvnim radku a druhem sloupci matice je jednicka, bude jednicka take v druhem radku a prvnim sloupci teto matice. #Tento stav znamena, ze H0: mu1=mu2 zamitame na stanovene hladine vyznamnosti alpha. (Pokud je tedy 1 ) Scheffe.R<-matrix(NA,r,r) Scheffe.L<-matrix(NA,r,r) for(k in 1:r){ for(j in 1:r){ Scheffe.R[k,j]<-Sh*sqrt((r-1)*(1/ni[k]+1/ni[j])*qf(1-alpha,r-1,n-r)) Scheffe.L[k,j]<-abs(Mi.[k]-Mi.[j]) } } (Scheffe.matice<-1*(Scheffe.L>=Scheffe.R))