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

Made with Macintosh