目的 Brown-Forsythe 検定を行う。 普通は,R にも用意されている Bartlett.test 関数を使う方がよいと思われる。 使用法 Brown.Forsythe.test(x, group) 引数 x 分析対象となる観察値のベクトル group 観察値がどの群に属するかを表すベクトル ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/Brown-Forsythe-test.R", encoding="euc-jp") Brown.Forsythe.test <- function(x, group) { # x: データベクトル,group: 群変数ベクトル data.name <- paste(deparse(substitute(x)), "~", deparse(substitute(group))) OK <- complete.cases(x, group) # 欠損値を持つケースを除く x <- x[OK] group <- as.factor(group[OK]) group <- group[, drop=TRUE] d <- split(x, group) df1 <- length(d)-1 ni <- sapply(d, length) mi <- sapply(d, mean) ui <- sapply(d, var) ci <- (1-ni/sum(ni))*ui F.BF <- sum(ni*(mi-mean(x))^2)/sum(ci) C <- ci/sum(ci) df2 <- 1/sum(C^2/(ni-1)) p <- pf(F.BF, df1, df2, lower.tail=FALSE) method <- "Brown-Forsythe 検定" return(structure(list(statistic=c(F=F.BF), parameter=c("df1"=df1, "df2"=df2), "p.value"=p, method=method, data.name=data.name), class="htest")) } 使用例 > x <- c(3, 3, 4, 2, 5, 2, 3, 4, 8, 8, 5, 6) > g <- factor(rep(1:3, each=4)) > Brown.Forsythe.test(x, g) Brown-Forsythe 検定 data: x ~ g F = 10.8545, df1 = 2.000, df2 = 7.607, p-value = 0.00591 参考文献
1) Mehmet Mendes and Akin Pala: Evaluation of Four Tests When Normality and Homogeneity of Variance Assumptions are Violated, Journal of Applied Sciences 4(1): 38-42, 2004.
2) Brown, M. B., and A. B. Forsythe: The small sample behavior of some statistics which test the equality of several means., Technometrics, 16: 129-132, 1974.