R version 2.15.2 (2012-10-26) -- "Trick or Treat" Copyright (C) 2012 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: i686-pc-linux-gnu (32-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > x <- array(list('2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'2' + ,'2' + ,'2' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'2' + ,'2' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'2' + ,'1' + ,'4' + ,'2' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'4' + ,'2' + ,'2' + ,'2' + ,'2' + ,'1' + ,'2' + ,'2' + ,'4' + ,'1' + ,'1' + ,'2' + ,'2' + ,'1' + ,'2' + ,'2' + ,'2' + ,'1' + ,'1' + ,'1' + ,'3' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'2' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'3' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'2' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'2' + ,'2' + ,'1' + ,'1' + ,'2' + ,'2' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'2' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'3' + ,'1' + ,'1' + ,'2' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'2' + ,'4' + ,'2' + ,'1' + ,'2' + ,'3' + ,'1' + ,'2' + ,'2' + ,'2' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'2' + ,'2' + ,'1' + ,'1' + ,'2' + ,'2' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'2' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'3' + ,'1' + ,'2' + ,'1' + ,'4' + ,'2' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'3' + ,'2' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'3' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'2' + ,'1' + ,'4' + ,'2' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'4' + ,'2' + ,'2' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'3' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'3' + ,'1' + ,'2' + ,'2' + ,'3' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'1' + ,'3' + ,'2' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'2' + ,'2' + ,'3' + ,'1' + ,'1' + ,'2' + ,'1' + ,'1' + ,'1' + ,'2' + ,'3' + ,'2' + ,'1' + ,'2' + ,'2' + ,'1' + ,'2' + ,'2' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'2' + ,'3' + ,'3' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'2' + ,'1' + ,'2' + ,'3' + ,'1' + ,'1' + ,'2' + ,'4' + ,'2' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'3' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'3' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'3' + ,'3' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'3' + ,'3' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'2' + ,'3' + ,'4' + ,'1' + ,'1' + ,'3' + ,'1' + ,'1' + ,'1' + ,'4' + ,'3' + ,'1' + ,'2' + ,'3' + ,'3' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'3' + ,'3' + ,'1' + ,'1' + ,'4' + ,'4' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'3' + ,'1' + ,'1' + ,'1' + ,'4' + ,'2' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'2' + ,'4' + ,'3' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'4' + ,'4' + ,'1' + ,'2' + ,'3' + ,'4' + ,'1' + ,'1' + ,'3' + ,'1' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'3' + ,'2' + ,'1' + ,'3' + ,'3' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'2' + ,'1' + ,'1' + ,'4' + ,'2' + ,'1' + ,'1' + ,'3' + ,'1' + ,'1' + ,'1' + ,'3' + ,'3' + ,'1' + ,'1' + ,'3' + ,'1' + ,'1' + ,'2' + ,'4' + ,'1' + ,'1' + ,'1' + ,'4' + ,'2' + ,'1' + ,'1' + ,'4' + ,'1' + ,'1' + ,'2' + ,'4' + ,'3' + ,'2' + ,'2' + ,'4' + ,'4' + ,'2' + ,'2' + ,'4' + ,'3' + ,'1') + ,dim=c(4 + ,154) + ,dimnames=list(c('UseLimit' + ,'T/NT2/4' + ,'Used/Useful' + ,'CorrectAnalysis') + ,1:154)) > y <- array(NA,dim=c(4,154),dimnames=list(c('UseLimit','T/NT2/4','Used/Useful','CorrectAnalysis'),1:154)) > 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 = '3' > par2 = '2' > par1 = '4' > ylab = 'Y Variable Name' > xlab = 'X Variable Name' > main = 'Title Goes Here' > par4 <- 'TRUE' > par3 <- '3' > par2 <- '2' > par1 <- '4' > #'GNU S' R Code compiled by R2WASP v. 1.2.291 () > #Author: aston2 > #To cite this work: Ian E. Holliday, 2012, Two-Way ANOVA (v1.0.3) in Free Statistics Software (v$_version), Office for Research Development and Education, URL http://www.wessa.net/Ian.Holliday/rwasp_Two%20Factor%20ANOVA.wasp/ > #Source of accompanying publication: > # > 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]) [1] "CorrectAnalysis" > (V2<-dimnames(y)[[1]][cat2]) [1] "T/NT2/4" > (V3 <-dimnames(y)[[1]][cat3]) [1] "Used/Useful" > 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) ) Call: lm(formula = Response ~ Treatment_A * Treatment_B, data = xdf) Coefficients: (Intercept) Treatment_A2 1.000e+00 7.160e-17 Treatment_A3 Treatment_A4 2.880e-17 6.358e-17 Treatment_B2 Treatment_B3 8.899e-18 2.500e-01 Treatment_B4 Treatment_A2:Treatment_B2 7.143e-01 -9.656e-18 Treatment_A3:Treatment_B2 Treatment_A4:Treatment_B2 NA 2.252e-17 Treatment_A2:Treatment_B3 Treatment_A3:Treatment_B3 -2.778e-02 -2.500e-01 Treatment_A4:Treatment_B3 Treatment_A2:Treatment_B4 1.500e-01 -5.893e-01 Treatment_A3:Treatment_B4 Treatment_A4:Treatment_B4 -7.143e-01 -3.810e-01 > (aov.xdf<-aov(lmxdf) ) Call: aov(formula = lmxdf) Terms: Treatment_A Treatment_B Treatment_A:Treatment_B Residuals Sum of Squares 0.949480 2.235232 1.404429 6.475794 Deg. of Freedom 3 3 8 139 Residual standard error: 0.2158436 1 out of 16 effects not estimable Estimated effects may be unbalanced > (anova.xdf<-anova(lmxdf) ) Analysis of Variance Table Response: Response Df Sum Sq Mean Sq F value Pr(>F) Treatment_A 3 0.9495 0.31649 6.7934 0.0002625 *** Treatment_B 3 2.2352 0.74508 15.9928 5.484e-09 *** Treatment_A:Treatment_B 8 1.4044 0.17555 3.7682 0.0005017 *** Residuals 139 6.4758 0.04659 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > #Note: the /var/wessaorg/rcomp/createtable file can be downloaded at http://www.wessa.net/cretab > load(file="/var/wessaorg/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/wessaorg/rcomp/tmp/1arfi1356021064.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/wessaorg/rcomp/tmp/2vgo61356021064.tab") > postscript(file="/var/wessaorg/rcomp/tmp/3tbz41356021064.ps",horizontal=F,onefile=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() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/4yace1356021064.ps",horizontal=F,onefile=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() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/5iquj1356021064.ps",horizontal=F,onefile=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() null device 1 > if(intercept==TRUE){ + thsd<-TukeyHSD(aov.xdf) + names(thsd) <- c(V2, V3, paste(V2, ':', V3, sep='')) + postscript(file="/var/wessaorg/rcomp/tmp/6p8yq1356021064.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) + layout(matrix(c(1,2,3,3), 2,2)) + plot(thsd, las=1) + dev.off() + } null device 1 > 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/wessaorg/rcomp/tmp/7ezr91356021064.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/wessaorg/rcomp/tmp/89met1356021064.tab") + } > library(car) Loading required package: MASS Loading required package: nnet > lt.lmxdf<-levene.test(lmxdf) Warning message: 'levene.test' is deprecated. Use 'leveneTest' instead. See help("Deprecated") and help("car-deprecated"). > 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/wessaorg/rcomp/tmp/9ia801356021064.tab") > > try(system("convert tmp/3tbz41356021064.ps tmp/3tbz41356021064.png",intern=TRUE)) character(0) > try(system("convert tmp/4yace1356021064.ps tmp/4yace1356021064.png",intern=TRUE)) character(0) > try(system("convert tmp/5iquj1356021064.ps tmp/5iquj1356021064.png",intern=TRUE)) character(0) > try(system("convert tmp/6p8yq1356021064.ps tmp/6p8yq1356021064.png",intern=TRUE)) character(0) > > > proc.time() user system elapsed 3.378 0.423 3.799