Levene 検定 Last modified: Aug 21, 2009
目的
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
直前のページへ戻る
E-mail to Shigenobu AOKI