auto.aov <- function(X,C,TITLE=NULL) { .MISSING <- is.na(X)|is.na(C) .X <- as.numeric(X[!.MISSING]) .Xname <- deparse(substitute(X)) .C <- as.factor(C[!.MISSING]) .Cname <- deparse(substitute(C)) .NUMCATS <- length(table(.C)) if (.NUMCATS<3) { cat("カテゴリ数が3未満なので別の検定をしてください。\n"); return(FALSE) } if (length(TITLE)<1) { .TITLE <- paste("AnovaとHolmの多重比較:\n",.Xname,"by",.Cname) } else { .TITLE <- TITLE } cat(.TITLE,"\n") print(summary(aov(.X~.C))) print(pairwise.t.test(.X,.C,p.adjust.method="holm")) .N.X <- tapply(.X,.C,length) .MEAN.X <- tapply(.X,.C,mean) .SD.X <- tapply(.X,.C,sd) for (.J in 1:length(table(.C))) { .CATNAME <- names(table(.C))[.J] cat(.CATNAME,":\t N=",.N.X[.J],"\t 平均値=",.MEAN.X[.J],"\t 不偏標準偏差=",.SD.X[.J],"\n") } .I.X <- barplot(.MEAN.X,ylim=c(0,max(.MEAN.X+.SD.X)*1.2),ylab=.Xname,col="white",main=.TITLE) arrows(.I.X,.MEAN.X-.SD.X,.I.X,.MEAN.X+.SD.X,code=3,angle=90,length=.1) }