目的 Levene 検定を行う。 普通は,R にも用意されている Bartlett.test 関数を使う方がよいと思われる。 使用法 Levene.test(x, group) 引数 x 分析対象となる観察値のベクトル group 観察値がどの群に属するかを表すベクトル method "mean" または "median"。 mean を指定すると SPSS と同じ結果が得られる。 median を指定すると car パッケージの levene.test と同じ結果になる。 正規分布でない場合には median を指定した方がよいらしい。(参考) ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/levene-test.R", encoding="euc-jp") # 等分散性の検定 Levene.test <- function(x, # データベクトル group, # 群変数ベクトル method = c("mean", "median")) # 検定統計量の計算方法 { data.name <- paste(deparse(substitute(x)), "~", deparse(substitute(group))) OK <- complete.cases(x, group) # 欠損値を持つケースを除く x <- x[OK] fac <- as.factor(group[OK]) fac <- fac[, drop=TRUE] n <- length(x) # 全体のデータ個数 n.i <- tapply(x, fac, length) # 各群のデータ個数 k <- length(n.i) # 群の数 method <- match.arg(method) # 引数の補完 x <- abs(x-tapply(x, fac, method)[fac]) # 測定値からそのデータが属する群の平均値(または中央値)を差し引く sw <- sum((n.i-1)*tapply(x, fac, var)) # 群内変動 dfw <- n-k # 群内変動の自由度 dfb <- k-1 # 群間変動の自由度 f <- ((var(x)*(n-1)-sw)/dfb)/(sw/dfw) # 検定統計量 P <- pf(f, dfb, dfw, lower.tail=FALSE) # P 値 method <- paste("等分散性の検定(", method, " で調整)", sep="") return(structure(list(statistic=c(F=f), parameter=c("df b"=dfb, "df w"=dfw), 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)) > Levene.test(x, g) 等分散性の検定(mean で調整) data: x ~ g F = 2.1, df b = 2, df w = 9, p-value = 0.1784 > Levene.test(x, g, method="median") 等分散性の検定(median で調整) data: x ~ g F = 1.9091, df b = 2, df w = 9, p-value = 0.2036