スタートページJavaScript他言語R言語

var.test F検定


var.test

F検定とは、二つの母集団の分散に差があるかどうかを調べる統計手法です。
var.test は最も単純なF検定関数です。

一般形: var(x,y, options)

x, y  標本のベクトルです。ここでは x=a, y=b としています。
  x を分子側、yを分母側といいます。
  (分散が小のものを分母側にするのが通常ですが、var.test ではどちらでもよいようです)
主なoptions
  検定条件     表記形式         省略時解釈
  片側検定(a > b)alternative = "greater"  両側検定
  片側検定(a < b)alternative = "less"    両側検定
  信頼水準99%  conf.level=0.99      95%
  分散比=16?  ratio=16          1

オプション指定なし

標準ケース(a≠b)

a <- c(1, 1, 3, 5, 6, 8, 9, 9)
var(a)     # 分散=11.07
b <- c(3, 3, 4, 4, 4, 5, 5)
var(b)     # 分散=0.667
var.test(a, b)
結果
F test to compare two variances
data:  a and b
F =16.607, num df = 7, denom df = 6, p-value = 0.003109
   F値   分子自由度   分母自由度          P値
    └ aの分散/bの分散 
   P値 < 0.05 → aとbの分散に差があるといえる(危険度5%)
alternative hypothesis: true ratio of variances is not equal to 1
   対立仮説:分散比は1ではない(分散に差がある)
95 percent confidence interval: 95信頼区間
  2.915851 85.005265
   下限値     上限値
    1<下限値 → 対立仮説は棄却できない → 差がある
sample estimates:
ratio of variances 
         16.60714 分散比 aの分散/bの分散

対立ケース(a≒b)

a <- c(1, 1, 2, 2, 3, 4, 4, 4)
var(a)     # 分散=1.696
b <- c(3, 3, 4, 4, 5, 6, 6)
var(b)     # 分散=1.619
var.test(a, b)
結果
F test to compare two variances
data:  a and b
F = 1.0478, num df = 7, denom df = 6, p-value = 0.9709
   F値   分子自由度   分母自由度          P値
    └ aの分散/bの分散 
   P値   > 0.05 →差があるとはいえない
alternative hypothesis: true ratio of variances is not equal to 1
   対立仮説:分散比は1ではない(分散に差がある)
95 percent confidence interval: 95信頼区間
  0.1839697 5.3632354
   下限値     上限値
    下限値<1<上限値→対立仮説は棄却→差があるとはいえない
sample estimates:
ratio of variances 
         1.047794

p-value による検定

 対立仮説 「分散比は1ではない(分散に差がある)」
  仮説が成立する確率が大きければ、対立仮説は棄却できない。→分散に差がある
  仮説が成立する確率が小さければ、対立仮説は棄却。→分散に差があるとはいえない
 この「仮説が成立する確率」が p-value
 大小の判断基準=危険度(1-有意水準)。通常は 0.05
  標準ケース p-value = 0.003109 < 0.05 →差がある
  対立ケース p-value = 0.9709  > 0.05 →差があるとはいえない

分散比の信頼区間による検定

 95%の確率で母集団の分散比が存在する範囲が下限値と上限値
  1<下限値、上限値<1 → 対立仮説は棄却できない → 差がある
  下限値<1<上限値   → 対立仮説は棄却→差があるとはいえない
  標準ケース 1<下限値(2.915851) → 差がある
  対立ケース 下限値(0.1839697)<1<上限値(5.3632354)→差があるとはいえない

F値と ratio of variances

 両方とも分散比(aの分散/bの分散)のようです。
 (私はF値はF分布表などによる値だと思っていたのですが・・・)

オプション指定あり

以下、入力データは「標準ケース」と同じです。
aの分散 = 11.07, bの分散 = 0.667, 分散比 = 11.07/0.667 = 16.607

標準ケース(a≠b)
var.test(a, b)

対立仮説:分散比≠1   
F =16.607, p-value = 0.003109
   p < 0.05 →差がある
下限値=2.915851, 上限値=85.005265
  1<下限値
 →対立仮説棄却できない→差がある

片側検定 (a > b)
var.test(a, b, alternative = "greater")

対立仮説:分散比>1(a > b)  
F =16.607, p-value = 0.001554
   p < 0.05(★1) →a>bといえる
下限値=3.947823, 上限値=Inf(∞)
  1<下限値
 →対立仮説棄却できない→a>bといえる

片側検定 (a < b)
var.test(a, b, alternative = "less")

対立仮説:分散比<1(a < b)
F =16.607, p-value = 0.9984
   p > 0.05(★1) →a<bとはいえない
下限値=0.0000, 上限値=64.2027
  下限値<1<上限値
 →対立仮説棄却→a<bとはいえない

信頼水準99%
var.test(a, b, conf.level=0.99)

対立仮説:分散比≠1   
F =16.607, p-value = 0.003109
   p < 0.01(★2) →差がある
下限値=1.539706, 上限値=152.043972
  1<下限値
 →対立仮説棄却できない→差がある

分散比=16?
var.test(a, b, ratio=16)

対立仮説:分散比≠16   
F =16.607, p-value = 0.980
   p > 0.05 →16ではないといえない
下限値=2.915851, 上限値=85.005265
  下限値<16(★3)<上限値
 →対立仮説棄却→16ではないといえない

(★注)

(★1)「両側 0.05 は、片側 0.025 に相当する」ので、危険度や有意水準の設定には違いが生じるようですが、var.test では「対立仮説」を解釈して、自動的に調整しているようです。Webでいくつかの例題を見たのですが、0.025 を用いている例は皆無でした。

(★2)0.05, 0.01 の両方の例を見つけられませんでしたが、これは 0.01 で間違いないと思います。

(★3)信頼区間による検定を、他の例では上下限値と「1」の比較でしたが、正確には ratio との比較になります。