統計検定に関する事柄を忘れないようにまとめます.

R にてルビーン検定 (Levene test) を行う.日本語表記では,ルベーン検定とかレーベン検定とされる場合もある.ルビーン検定は得られた複数群のデータ間に等分散性,分散の一様性が仮定できるかどうかを検定する手法である.アメリカの統計学者,Howard Levene によって開発された.等分散性の検定には,バートレット検定ハートレイ検定等があるが,ルビーン検定はこれらの検定法と比較し,得られたデータが正規分布に従わないことが想定される場合にも頑健な結果を返すとされており,そのような場合には他の検定法よりルビーン検定を使用するのが好ましい.R においては,lawstat パッケージの関数 levene.test() にて実行することができる.

最初に,Rを起動させ,以下のコマンドにてパッケージをインストールし,そのパッケージを読み込む.既にインストール済みの場合,1行目のコマンドは不要.

$ install.packages("lawstat", repos="http://cran.ism.ac.jp/")
$ library(lawstat)

以下の,サンプルサイズがそれぞれ,9,10,8,8からなるデータAからDが得られたときの各データ間における分散が等しいか否かをルビーン検定にて解析する.帰無仮説 (H0) は各群の母分散は全て等しいことである.

データA301, 311, 325, 291, 388, 412, 325, 361, 287
データB197, 180, 247, 260, 247, 199, 179, 134, 163, 200
データC209, 302, 187, 166, 234, 290, 175, 116
データD342, 216, 316, 386, 324, 145, 254, 228

パッケージlawstatを利用したp値の計算

最初に,以下のコマンドにて,上のデータAからDをまとめて変数 vx に格納する.

$ vx=c(301, 311, 325, 291, 388, 412, 325, 361, 287, 197, 180, 247, 260, 247, 199, 179, 134, 163, 200, 209, 302, 187, 166, 234, 290, 175, 116, 342, 216, 316, 386, 324, 145, 254, 228)

次に,以下のコマンドにて,読み込んだ各データのグループ名を指定するための変数 fx を作成する.データAからDの標本サイズはそれぞれ,9,10,8,8であるが,それらが以下のコマンドの c(...) に対応する.データの読み込み,およびその後の解析は,分散分析を行うときと同様にエクセルやテキストファイル形式のデータをデータフレームとしてそのまま読み込む方法でも良い.

$ fx=factor(rep(c("A", "B", "C", "D"), c(9, 10, 8, 8)))

以上で読み込んだ従属変数 (vx) および独立変数 (fx) を用いて,ルビーン検定は,levene.test(y=従属変数,group=独立変数) というような形式で実行する.実際には以下のように打つ.

$ levene.test(y=vx,group=fx)

これを実行した結果は以下のようになる.

 
        modified robust Brown-Forsythe Levene-type test based on the
        absolute deviations from the median

data:  vx
Test Statistic = 2.2425, p-value = 0.103

以上より,p値は0.103なので,有意水準5%でも1%であっても,得られたp値は有意水準より大きく (p > α),帰無仮説が保留され,その結果,各群の母分散は等しくないとはいえないという結論が導かれる.以上がルビーン検定であるが,lawstat に実装されているルビーン検定は正規性からの逸脱に対してより頑強な結果を返すように修正された手法 (ブラウン-フォーサイス検定 (Browne-Forsythe test)) である.

パッケージcarを用いたp値の計算

パッケージ car にある関数 leveneTest() でも実行することができる.R を起動させ,以下のコマンドにてパッケージをインストールし,そのパッケージを読み込む.既にインストール済みの場合,1行目のコマンドは不要.

$ install.packages("car", repos="http://cran.ism.ac.jp/")
$ library(car)

最初に,以下のコマンドにて,上のデータAからDをまとめて変数 vx に格納する.

$ vx=c(301, 311, 325, 291, 388, 412, 325, 361, 287, 197, 180, 247, 260, 247, 199, 179, 134, 163, 200, 209, 302, 187, 166, 234, 290, 175, 116, 342, 216, 316, 386, 324, 145, 254, 228)

上と同様に fx を生成する.

$ fx=factor(rep(c("A", "B", "C", "D"), c(9, 10, 8, 8)))

以上で読み込んだ従属変数 (vx) および独立変数 (fx) を用いて,ルビーン検定は,leveneTest(従属変数 ~ 独立変数) というような形式で実行する.実際には以下のように打つ.

leveneTest(formula=vx~fx)

これを実行した結果は以下のようになる.

 
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
fx     3  2.2425  0.103
      31

結果の Df で示されている列は自由度をあらわす.上は水準間 (級間・群間) の自由度であり,(水準数 - 1) で求められる値である.下は水準内 (級間・級内) の自由度であり,(全標本数 - 水準数) で求められる.F-value はF値であり,F分布に従う値である.p-value はp値の値.結果は上と同様になる.この実装もブラウン-フォーサイス検定であり,本来のルビーン検定は,オプションに center=mean を指定する.

leveneTest()のオプション一覧

オプションには以下のようなものがある.

オプション詳細
yformula (score ~ group) を指定.
centercenter=mean を指定すると,オリジナルのルビーン検定が実行される.デフォルトでは,center=median が指定される.
Hatena Google+