<< 目次へ
最終更新日: 2008.12.19
分散分析の事前検定
分散分析は一般線形モデルに含まれる分析法の1つであるが、一般線形モデルにおいては次の4つの仮定が成り立つことを前提としている。
■ 独立性
独立性とは、例えば3群の平均値の差の検定(1要因3水準の分散分析)を適用する際に、表1のようなデータセットがその対象となる。これは各水準に割り当てられた被験者が全て異なる被験者であるから、独立なデータセットであるといえる。
要するに、独立であるとは各水準に割り当てられた被験者が1人1人異なっていて、かつ1人の被験者から1つの観測値を得た場合のことを指しているのである。もし仮にS1が水準2や3においても観測値が取られていたり、あるいは同水準内で繰り返し観測値が得られていたりすると、それはもはや独立であるとはいえないのである。
ちなみに、表1のデータセットにおいて、各水準5回の反復測定がなされているのであって、決して5回の繰り返し観測がなされているのではないので、用語の使い方に注意すべきである。
被験者No. | 水準1 | 水準2 | 水準3 |
1 2 3 4 5 |
S1 S2 S3 S4 S5 |
S6 S7 S8 S9 S10 |
S11 S12 S13 S14 S15 |
■ 分散の均一性
分散の均一性については、分散分析の事前検定として分散の均一性の検定を行うべきであると主張する者もいる。しかし、これは必ずしも正しい主張であるとはいえない。なぜならば、事前検定をするということは、それ自体が検定の多重性の問題に引っかかるからである。
もし分散の均一性の検定によって得られた結果が誤ったもの: 本当は母分散は均一であるのに均一でないという結論を導いてしまった場合、最初から第1種の過誤を犯すことになってしまうのである。これは後に説明する正規性の検定についても同じことがいえる。
また、分散の均一性については、分散分析はこの問題に対して頑健性があることも考慮すると、無理に分散の均一性の検定を行うことにメリットがあるとはいえないだろう。
■ 誤差の正規性
分散分析モデルは
Y = α + β1X1 + β2X2 + ... + βnXn + ε
で表され、αは定数項、βは説明変数Xの係数、εは誤差で正規分布に従うと仮定されるのであった。誤差が正規分布に従うということは、基のデータ(各水準の標本データ)が正規分布に従うと仮定できるということである。これはすなわち母分散も正規分布に従っていると仮定されるということである。
しかし、一般に得られる標本値は少ないので、標本分布から母分布が正規分布であるかどうかを判断することは難しいのである。だから、重要なのは理論的に母分布が正規分布に従うといえるかどうかを考えるということである。理論的、あるいは経験的に明らかに正規分布に従わないであろうデータセット以外は特別に心配する必要はない。
これについても正規性の検定(母分布が正規分布であるかどうかの検定)を行うことを薦めている者がいるが、これは分散の均一性のところで述べた理由から、事前検定として正規性の検定を行うべきではないといえる。
■ 線形性(加法性)
例えば、2つの変数を散布図で表現した場合に、明らかに曲線がフィットするような場合は一般線形モデルを適用すべきではない。もっとも、そのような場合であっても対数変換などを施すことによって、その問題を解決することができることもある。
ただ分散分析モデルを解析しようとする際には考える必要のない問題である(なぜならば、カテゴリカル型の変数に累乗が付くようなことはありえないからである)。これは主に説明変数に連続型を含むモデルについていえることである(例えば共分散分析モデルや重回帰モデル)。
■ 分散の均一性と誤差の正規性の検査
分散の均一性は横軸に適合値(予測値といってもよい)、縦軸に残差(あるいは標準化された残差)の値をとってプロットしたものを見ることによって判断されることが多い。Rでは、fitted()で適合値を求めることができ、resid()で残差を、rstudent()で標準化された残差を求めることができる。
あるいはもっと簡単に、plot(Object, which=1)とすれば適合値と残差のプロットが描かれ、plot(Object, which=3)とすることによって適合値と標準化された残差のプロットが描かれるようになっている。
試しに仮想データを作って分散分析を行い、それについての適合値と残差のプロットを描いてみよう。
y1 <- rnorm(100, mean=50, sd=5) # 群1のデータ y2 <- rnorm(100, mean=80, sd=5) # 群2のデータ y3 <- rnorm(100, mean=10, sd=5) # 群3のデータ Y <- c(y1, y2, y3) # 応答変数として、3群のデータを1つにまとめる # 群を表すカテゴリカル型変数を用意する Group <- rep(c(1, 2, 3), c(100, 100, 100)) Group <- as.factor(Group) # lm()を使って分散分析モデルを解析する result <- lm(Y ~ Group) # プロットウィンドウを1行2列に分割する par(mfrow=c(1,2)) plot(result, which=1) # 適合値と残差 plot(result, which=3) # 適合値と標準化残差 # 分割したプロットウィンドウの設定を元に戻す par(mfrow=c(1,1))
今回のケースでは、左側のデータポイント群が群3のデータである(mean(y3) = 9.58)。続いて真中のデータポイント群が群1(mean(y1) = 49.81)、右側が群2(mean(y2) = 79.88)である。
これは望ましい結果で、どの群においても残差のバラつき具合が同じである。望ましくない結果とは、例えば、最も典型的には適合値が大きくなるにつれて残差が明らかに増加していくような図が描かれる場合である。
一般に適合値と"標準化された"残差のプロットにおいて、絶対値が2よりも大きい値が多かったりすると分散の均一性の仮定があやしいものであると判断される。もし絶対値が2よりも小さい値ばかりであっても、前述したように適合値の増加に伴って残差が増加したり、減少したりする傾向がある場合は分散の均一性の仮定は難しいといえる。
さて一方で正規性に関する判断にはQ-Qプロットと呼ばれるものが利用される。Q-Qプロットは日本語で正規確率プロットと呼ばれている。
これは横軸に正規スコア(期待正規値)という値をとり、縦軸に標準化された残差の値をとってプロットしたものである(どちらの値を横軸、あるいは縦軸にしても同じこと)。このデータポイントが直線的であれば(図中の赤い直線により乗っていれば)誤差が正規分布に従うと判断することができる。
plot(result, which=2) # Q-Qプロット qqline(rstudent(result), col="red") # 赤い直線だけ新たに書き直した
■ 誤差?母分布?
よくある疑問の1つとして、分散分析の仮定は
という問題を混同して考えてしまう、ということがある。これは母分布が正規分布に従うのでなければ、誤差も正規分布には従わない。また母分布の分散が均一でなければ、誤差の分散も均一ではなくなる。
しかし、前述したように、我々分析者は母分布がどのような分布であるか、またその分散がどのようになっているかを把握することはできない。まして小さなサンプルサイズ(データ数)からは推定することも難しいだろう。
したがって、分散分析を行う前にこのようなことを考えるのは無意味である。繰り返しになるが、あくまでも事前の過程としては「理論的、経験的に明らかに正規分布に従わない」と考えられる場合以外は、分析を行う前の時点では考慮する必要はない。
重要なのは、モデルの検査を行うことである。分散分析を行って、残差プロットやQ-Qプロットを吟味して必要であれば対数変換などの変換を施せばよい。ただ、そのようなことをしても問題が解決しないこともある。その場合は、実験計画の段階、もしくは実際にデータをとるときに何らかの不手際が生じたのかもしれない。そうでなくとも、そもそも理論的に母分布が正規分布であると仮定することに無理があったのかもしれない。
このような問題に直面した最終手段としてノンパラメトリック検定(1要因の分散分析に対応するのはクルスカル・ワリス検定である)を用いるべきなのである。つまり、原則としてノンパラメトリック検定は容易に多用するべきものではないのである。
■ 難しいこと、でも重要なこと。
最後に分散の均一性と正規性の仮定について詳しく説明しておこう。臨床現場などの場面で統計解析を行う場合以外では、これらの仮定にはかなり融通を利かせて解釈しなければならないことも多い(例えば、小売業でのマーケティングの場面など)。しかし、1度しっかりと理屈を理解しておくことは重要である。
ここでは3群の平均値の差の検定について考えてみよう(他の場合であっても基本的な理屈は同じである)。基本的には4つのタイプが考えられる。1つは各群の母分布が正規分布であり、かつ分散も均一である場合である(図1)。もう1つは各群の母分布は正規分布であるが、分散は均一でない場合である(図2)。そして正規分布でもなく、分散も均一でない場合である(図3)。正規分布ではないが、分散は均一であるという場合もありうるがそれは特に図示していない(通常、そういうことはほとんどない)。
図1: 母分布が正規分布に従い、かつ分散も均一である場合。 どの群の分布も分散が等しいので、1つの分散を推定すればよいことになる。したがって、各群に対する係数の標準誤差は全て同じである。 |
図2: 母分布は正規分布に従っているが、分散が不均一である場合。 各群で分散が異なるため、各群それぞれに分散を推定しなければならない(この場合は3群なので3つの分散を推定することになる)。 分散が等しいと仮定されたGLMでは、各群に対する係数の標準誤差が同じであるとされて計算されるので、この仮定が崩れると、その標準誤差は誤ったものとなる(したがってp値も妥当なものではなくなる)。 |
図3: 正規分布ではなく、分散も不均一である場合。 GLMは正規分布に従うことが前提とされているので、この仮定が崩れると、計算された検定統計量は意味を持たない(たとえば対数分布に従うのに、正規分布に従うと仮定して統計量を求めても無意味)。 しかし、この問題は対数変換や逆数変換などの変数変換によって解決できることがある(正規分布に近い形にすることができる)。 |
結局、正規分布に従うと仮定できない場合は変数変換によって解決できるかもしれない。しかし、分散の均一性については解決のしようがない。いずれにしても、分散分析はこれらの仮定に対して頑健性があるので、多めに見ても構わない。
図1のケースと図2のケースについて簡単なシミュレーションをしてみよう。
# 分散が不均一なデータセットを用意する > y1 <- rnorm(10, mean=50, sd=5) > y2 <- rnorm(10, mean=20, sd=3) > y3 <- rnorm(10, mean=90, sd=15) > Y <- c(y1, y2, y3) > G <- rep(c(1, 2, 3), c(10, 10, 10)) # 群を表す変数 # バートレット検定 = 分散の均一性の検定 # 帰無仮説「3群の母分散は等しい」 # 以下の結果では帰無仮説が棄却されるので、各群の分散は不均一である。 > bartlett.test(Y, G) Bartlett test of homogeneity of variances data: Y and G Bartlett's K-squared = 32.3764, df = 2, p-value = 9.323e-08 --- # 今度は分散が均一であるデータセットを用意する # 平均値はy1, y2,y3と同じである。 > z1 <- rnorm(10, 50, 20) > z1 <- rnorm(10, mean=50, sd=8) > z2 <- rnorm(10, mean=20, sd=8) > z3 <- rnorm(10, mean=90, sd=8) > Z <- c(z1, z2, z3) # バートレット検定 # こちらは分散の均一性が認められた > bartlett.test(Z, G) Bartlett test of homogeneity of variances data: Z and G Bartlett's K-squared = 1.5919, df = 2, p-value = 0.4512 --- > result <- lm(Y ~ as.factor(G)) > result2 <- lm(Z ~ as.factor(G)) # 分散が不均一である場合の分散分析表 > summary(aov(result)) Df Sum Sq Mean Sq F value Pr(>F) as.factor(G) 2 21362.0 10681.0 112.60 7.939e-14 *** Residuals 27 2561.1 94.9 # 分散が均一である場合の分散分析表 > summary(aov(result2)) Df Sum Sq Mean Sq F value Pr(>F) as.factor(G) 2 22774.0 11387.0 280.32 < 2.2e-16 *** Residuals 27 1096.8 40.6 # 分散が不均一である場合の係数表 # 標準誤差に着目: どの係数に対する標準誤差も同じである # それは各群で分散がそれぞれ等しいと仮定しているからである # この場合、分散は不均一なので各群の標準誤差が同じであることは # おかしなことである。 > summary(result) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 45.769 3.080 14.861 1.61e-14 *** as.factor(G)2 -25.883 4.356 -5.942 2.46e-06 *** as.factor(G)3 39.038 4.356 8.963 1.41e-09 *** # 分散が均一である場合の係数表 # 分散が均一であるから、群の係数に対する標準誤差がどの群でも同じ # であることにおかしな点はない。 > summary(result2) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 50.663 2.015 25.14 < 2e-16 *** as.factor(G)2 -31.150 2.850 -10.93 2.04e-11 *** as.factor(G)3 36.274 2.850 12.73 6.39e-13 ***
result(図4:分散が不均一)とresult2(図5:分散が均一)それぞれについて、適合値と残差のプロット、およびQ-Qプロットを描いてモデルの検査を行ってみよう。
図4において、右のScale-Location図では各群でのデータポイントのバラつきが明らかである。しかも、左のNormal Q-Q図を見ると誤差の正規性も崩れている(分散は違えど、基は正規分布からとってきたデータであってもこういうことが生じうる)。
一方で図5ではScale-Locationはどの群においてもデータポイントのバラつき具合はほぼ同じである。Normal Q-Qでもほぼ直線上にデータポイントが乗っかっている。このような結果が得られることが望ましいが、実際にはなかなかこう上手くはいかないものである(しかし、そうなるようにできるだけ適切な実験計画を立てることに努めるべきである)。
なお、図は載せなかったが{y1, y2, y3}のヒストグラムと{z1, z2, z3}のヒストグラムを描いてみると良い。各群のサンプルサイズが小さい場合はグラフ化しても、正規分布に従うと仮定できるかどうかなど、まず分からないのが普通である。
図4 分散が不均一である場合
図5 分散が均一である場合