auto.location.test <- function(X,B,TITLE=NULL,ALPHA=0.05,BETA=0.2) { # 欠損値対策 .MISSING <- is.na(X)|is.na(B) .X <- as.numeric(X[!.MISSING]) names(.X) <- paste(deparse(substitute(X))) .B <- as.numeric(B[!.MISSING]) names(.B) <- paste(deparse(substitute(B))) .NUMCATS <- length(table(.B)) if (.NUMCATS!=2) { cat("カテゴリ数が2ではないので検定できません。\n"); return(FALSE) } if (length(TITLE)<1) { .TITLE <- paste("位置母数の比較:",deparse(substitute(X)),"by",deparse(substitute(B))) } else { .TITLE <- TITLE } cat(.TITLE,"\n") normality <- shapiro.test(.X) cat("分布の正規性: W=",normality$statistic,"\t p=",normality$p.value,"\n") equalvariance <- var.test(.X~.B) equalmean <- t.test(.X~.B,var.equal=F) .N.X <- tapply(.X,.B,length) .MEAN.X <- tapply(.X,.B,mean) .SD.X <- tapply(.X,.B,sd) for (.J in 1:.NUMCATS) { .CATNAME <- names(table(.B))[.J] cat(.CATNAME,":\t N=",.N.X[.J],"\t 平均値=",.MEAN.X[.J],"\t 不偏標準偏差=",.SD.X[.J],"\n") } stripchart(.X ~ .B, method="jitter", vertical=T, main=.TITLE) .I.X <- 0.15 + 1:2 points(.I.X,.MEAN.X,pch=18) arrows(.I.X,.MEAN.X-.SD.X,.I.X,.MEAN.X+.SD.X,code=3,angle=90,length=.1) cat("等分散性の検定: F=",equalvariance$statistic,"\t p=",equalvariance$p.value,"\n") cat("平均値の差のWelchの検定: t=",equalmean$statistic,"\t df=",equalmean$parameter,"\t p=",equalmean$p.value,"\n") }