x <- array(list('GOOD' ,'HIGH' ,25 ,'GOOD' ,'HIGH' ,0 ,'GOOD' ,'HIGH' ,-16 ,'GOOD' ,'HIGH' ,5 ,'GOOD' ,'HIGH' ,11 ,'GOOD' ,'HIGH' ,-6 ,'GOOD' ,'HIGH' ,42 ,'GOOD' ,'HIGH' ,-2 ,'GOOD' ,'HIGH' ,-13 ,'GOOD' ,'HIGH' ,14 ,'GOOD' ,'HIGH' ,4 ,'GOOD' ,'HIGH' ,-22 ,'GOOD' ,'HIGH' ,19 ,'GOOD' ,'HIGH' ,6 ,'GOOD' ,'HIGH' ,-6 ,'GOOD' ,'LOW' ,-25 ,'GOOD' ,'LOW' ,-23 ,'GOOD' ,'LOW' ,-28 ,'GOOD' ,'LOW' ,-22 ,'GOOD' ,'LOW' ,-22 ,'GOOD' ,'LOW' ,-10 ,'GOOD' ,'LOW' ,-20 ,'GOOD' ,'LOW' ,-24 ,'GOOD' ,'LOW' ,-24 ,'GOOD' ,'LOW' ,-22 ,'GOOD' ,'LOW' ,-23 ,'GOOD' ,'LOW' ,-19 ,'GOOD' ,'LOW' ,-2 ,'GOOD' ,'LOW' ,12 ,'GOOD' ,'LOW' ,-8 ,'GOOD' ,'LOW' ,-17 ,'GOOD' ,'LOW' ,-30 ,'SCIENTIFIC' ,'HIGH' ,-19 ,'SCIENTIFIC' ,'HIGH' ,-24 ,'SCIENTIFIC' ,'HIGH' ,-4 ,'SCIENTIFIC' ,'HIGH' ,-24 ,'SCIENTIFIC' ,'HIGH' ,0 ,'SCIENTIFIC' ,'HIGH' ,-4 ,'SCIENTIFIC' ,'HIGH' ,5 ,'SCIENTIFIC' ,'HIGH' ,-1 ,'SCIENTIFIC' ,'HIGH' ,-9 ,'SCIENTIFIC' ,'HIGH' ,-5 ,'SCIENTIFIC' ,'HIGH' ,-6 ,'SCIENTIFIC' ,'HIGH' ,4 ,'SCIENTIFIC' ,'HIGH' ,-13 ,'SCIENTIFIC' ,'HIGH' ,-1 ,'SCIENTIFIC' ,'HIGH' ,-3 ,'SCIENTIFIC' ,'HIGH' ,-11 ,'SCIENTIFIC' ,'HIGH' ,-6 ,'SCIENTIFIC' ,'HIGH' ,-4 ,'SCIENTIFIC' ,'LOW' ,6 ,'SCIENTIFIC' ,'LOW' ,-5 ,'SCIENTIFIC' ,'LOW' ,14 ,'SCIENTIFIC' ,'LOW' ,-11 ,'SCIENTIFIC' ,'LOW' ,14 ,'SCIENTIFIC' ,'LOW' ,-5 ,'SCIENTIFIC' ,'LOW' ,-22 ,'SCIENTIFIC' ,'LOW' ,7 ,'SCIENTIFIC' ,'LOW' ,14 ,'SCIENTIFIC' ,'LOW' ,15 ,'SCIENTIFIC' ,'LOW' ,-6 ,'SCIENTIFIC' ,'LOW' ,9 ,'SCIENTIFIC' ,'LOW' ,-5 ,'NONE' ,'HIGH' ,-26 ,'NONE' ,'HIGH' ,-1 ,'NONE' ,'HIGH' ,22 ,'NONE' ,'HIGH' ,3 ,'NONE' ,'HIGH' ,-26 ,'NONE' ,'HIGH' ,4 ,'NONE' ,'HIGH' ,-21 ,'NONE' ,'HIGH' ,-19 ,'NONE' ,'HIGH' ,-12 ,'NONE' ,'HIGH' ,9 ,'NONE' ,'HIGH' ,-9 ,'NONE' ,'HIGH' ,-27 ,'NONE' ,'HIGH' ,-10 ,'NONE' ,'HIGH' ,-37 ,'NONE' ,'HIGH' ,0 ,'NONE' ,'HIGH' ,-10 ,'NONE' ,'LOW' ,-12 ,'NONE' ,'LOW' ,-4 ,'NONE' ,'LOW' ,13 ,'NONE' ,'LOW' ,-27 ,'NONE' ,'LOW' ,-7 ,'NONE' ,'LOW' ,-20 ,'NONE' ,'LOW' ,-4 ,'NONE' ,'LOW' ,-10 ,'NONE' ,'LOW' ,-3 ,'NONE' ,'LOW' ,-11 ,'NONE' ,'LOW' ,2 ,'NONE' ,'LOW' ,-9 ,'NONE' ,'LOW' ,20 ,'NONE' ,'LOW' ,9 ,'NONE' ,'LOW' ,-8 ,'NONE' ,'LOW' ,8 ,'NONE' ,'LOW' ,-6 ,'NONE' ,'LOW' ,6) ,dim=c(3 ,97) ,dimnames=list(c('Inst' ,'Exp' ,'R') ,1:97)) y <- array(NA,dim=c(3,97),dimnames=list(c('Inst','Exp','R'),1:97)) for (i in 1:dim(x)[1]) { for (j in 1:dim(x)[2]) { y[i,j] <- as.numeric(x[i,j]) } } par4 = 'TRUE' par3 = '1' par2 = '2' par1 = '3' ylab = 'Y Variable Name' xlab = 'X Variable Name' main = 'Title Goes Here' #'GNU S' R Code compiled by R2WASP v. 1.0.44 () #Author: Dr. Ian E. Holliday #To cite this work: Ian E. Holliday, 2009, AUSS_two-way_ANOVA (v1.0.1) in Free Statistics Software (v$_version), Office for Research Development and Education, URL http://www.wessa.net/Ian.Holliday/rwasp_Two_Way_Anova_alt.wasp/ #Source of accompanying publication: #Technical description: cat1 <- as.numeric(par1) # cat2<- as.numeric(par2) # cat3 <- as.numeric(par3) intercept<-as.logical(par4) x <- t(x) x1<-as.numeric(x[,cat1]) f1<-as.character(x[,cat2]) f2 <- as.character(x[,cat3]) xdf<-data.frame(x1,f1, f2) (V1<-dimnames(y)[[1]][cat1]) (V2<-dimnames(y)[[1]][cat2]) (V3 <-dimnames(y)[[1]][cat3]) names(xdf)<-c('Response', 'Treatment_A', 'Treatment_B') if(intercept == FALSE) (lmxdf<-lm(Response ~ Treatment_A * Treatment_B- 1, data = xdf) ) else (lmxdf<-lm(Response ~ Treatment_A * Treatment_B, data = xdf) ) (aov.xdf<-aov(lmxdf) ) (anova.xdf<-anova(lmxdf) ) #Note: the /var/www/html/rcomp/createtable file can be downloaded at http://www.wessa.net/cretab load(file="/var/www/html/rcomp/createtable") a<-table.start() a<-table.row.start(a) a<-table.element(a,'ANOVA Model', length(lmxdf$coefficients)+1,TRUE) a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a, lmxdf$call['formula'],length(lmxdf$coefficients)+1,TRUE) a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a, 'means',,TRUE) for(i in 1:length(lmxdf$coefficients)){ a<-table.element(a, round(lmxdf$coefficients[i], digits=3),,FALSE) } a<-table.row.end(a) a<-table.end(a) table.save(a,file="/var/www/html/rcomp/tmp/1xeg21275125770.tab") a<-table.start() a<-table.row.start(a) a<-table.element(a,'ANOVA Statistics', 5+1,TRUE) a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a, ' ',,TRUE) a<-table.element(a, 'Df',,FALSE) a<-table.element(a, 'Sum Sq',,FALSE) a<-table.element(a, 'Mean Sq',,FALSE) a<-table.element(a, 'F value',,FALSE) a<-table.element(a, 'Pr(>F)',,FALSE) a<-table.row.end(a) for(i in 1 : length(rownames(anova.xdf))-1){ a<-table.row.start(a) a<-table.element(a,rownames(anova.xdf)[i] ,,TRUE) a<-table.element(a, anova.xdf$Df[1],,FALSE) a<-table.element(a, round(anova.xdf$'Sum Sq'[i], digits=3),,FALSE) a<-table.element(a, round(anova.xdf$'Mean Sq'[i], digits=3),,FALSE) a<-table.element(a, round(anova.xdf$'F value'[i], digits=3),,FALSE) a<-table.element(a, round(anova.xdf$'Pr(>F)'[i], digits=3),,FALSE) a<-table.row.end(a) } a<-table.row.start(a) a<-table.element(a, 'Residuals',,TRUE) a<-table.element(a, anova.xdf$'Df'[i+1],,FALSE) a<-table.element(a, round(anova.xdf$'Sum Sq'[i+1], digits=3),,FALSE) a<-table.element(a, round(anova.xdf$'Mean Sq'[i+1], digits=3),,FALSE) a<-table.element(a, ' ',,FALSE) a<-table.element(a, ' ',,FALSE) a<-table.row.end(a) a<-table.end(a) table.save(a,file="/var/www/html/rcomp/tmp/21xx81275125770.tab") postscript(file="/var/www/html/rcomp/tmp/31xx81275125770.ps",horizontal=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) boxplot(Response ~ Treatment_A + Treatment_B, data=xdf, xlab=V2, ylab=V1, main='Boxplots of ANOVA Groups') dev.off() postscript(file="/var/www/html/rcomp/tmp/41xx81275125770.ps",horizontal=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) xdf2 <- xdf # to preserve xdf make copy for function names(xdf2) <- c(V1, V2, V3) plot.design(xdf2, main='Design Plot of Group Means') dev.off() postscript(file="/var/www/html/rcomp/tmp/5toet1275125770.ps",horizontal=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) interaction.plot(xdf$Treatment_A, xdf$Treatment_B, xdf$Response, xlab=V2, ylab=V1, trace.label=V3, main='Possible Interactions Between Anova Groups') dev.off() if(intercept==TRUE){ thsd<-TukeyHSD(aov.xdf) names(thsd) <- c(V2, V3, paste(V2, ':', V3, sep='')) postscript(file="/var/www/html/rcomp/tmp/6toet1275125770.ps",horizontal=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) #layout(matrix(c(1,2,3,3), 2,2)) par(mai=c(1,1.5,1,1)) layout(matrix(c(1,2,1,2,3,3,3,3), 2,4)) plot(thsd, las=1) dev.off() } if(intercept==TRUE){ ntables<-length(names(thsd)) a<-table.start() a<-table.row.start(a) a<-table.element(a,'Tukey Honest Significant Difference Comparisons', 5,TRUE) a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a, ' ', 1, TRUE) for(i in 1:4){ a<-table.element(a,colnames(thsd[[1]])[i], 1, TRUE) } a<-table.row.end(a) for(nt in 1:ntables){ for(i in 1:length(rownames(thsd[[nt]]))){ a<-table.row.start(a) a<-table.element(a,rownames(thsd[[nt]])[i], 1, TRUE) for(j in 1:4){ a<-table.element(a,round(thsd[[nt]][i,j], digits=3), 1, FALSE) } a<-table.row.end(a) } } # end nt a<-table.end(a) table.save(a,file="/var/www/html/rcomp/tmp/77guk1275125770.tab") }#end if hsd tables if(intercept==FALSE){ a<-table.start() a<-table.row.start(a) a<-table.element(a,'TukeyHSD Message', 1,TRUE) a<-table.row.end(a) a<-table.start() a<-table.row.start(a) a<-table.element(a,'Must Include Intercept to use Tukey Test ', 1, FALSE) a<-table.row.end(a) a<-table.end(a) table.save(a,file="/var/www/html/rcomp/tmp/87guk1275125770.tab") } library(car) lt.lmxdf<-levene.test(lmxdf) a<-table.start() a<-table.row.start(a) a<-table.element(a,'Levenes Test for Homogeneity of Variance', 4,TRUE) a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,' ', 1, TRUE) for (i in 1:3){ a<-table.element(a,names(lt.lmxdf)[i], 1, FALSE) } a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,'Group', 1, TRUE) for (i in 1:3){ a<-table.element(a,round(lt.lmxdf[[i]][1], digits=3), 1, FALSE) } a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,' ', 1, TRUE) a<-table.element(a,lt.lmxdf[[1]][2], 1, FALSE) a<-table.element(a,' ', 1, FALSE) a<-table.element(a,' ', 1, FALSE) a<-table.row.end(a) a<-table.end(a) table.save(a,file="/var/www/html/rcomp/tmp/9l8rt1275125770.tab") try(system("convert tmp/31xx81275125770.ps tmp/31xx81275125770.png",intern=TRUE)) try(system("convert tmp/41xx81275125770.ps tmp/41xx81275125770.png",intern=TRUE)) try(system("convert tmp/5toet1275125770.ps tmp/5toet1275125770.png",intern=TRUE)) try(system("convert tmp/6toet1275125770.ps tmp/6toet1275125770.png",intern=TRUE))