玄関雑学の部屋雑学コーナー統計学入門

7.3 変数の選択

(1) 変数選択法の種類

重回帰モデルの説明変数がやたらに多いと、重回帰式を科学的に解釈する時にも、それによって目的変数の値を予測する時にも何かと面倒であまり実用的ではありません。 そこで説明変数を選択するための手法が次のように色々と考えられています。

  1. 変数指定法:医学・薬学等の科学的理論や知識によって最適な説明変数を指定する。
  2. 総当たり法:全ての説明変数の組み合わせを計算し、最も良いと思われるものを選択する。
  3. 逐次選択法:一定の規則に従って説明変数を逐次選択していく。

もし1番の変数指定法ができるのなら、それが最善です。 しかし実際には重回帰分析結果から、逆に科学的にも影響の強そうな説明変数の見当をつけることが多いと思います。 重回帰分析に限らず多変量解析は探索的な性質の強い手法なので、事前に最適な変数が指定できる場合は少ないのです。

2番の総当たり法は、いわば力まかせの方法です。 この方法が実行できればそれに越したことはありません。 しかしいかんせんこの方法は計算量が膨大であり、おいそれと実行できる方法ではありません。 例えば説明変数がp=10個の時には、次のように1023種類もの重回帰式を計算する必要があります。

2p - 1 = 210 - 1 = 1023個

コンピュータが発達した現代では、こんなものすごい計算も物理的には不可能ではありません。 しかしそれらの結果を1つ1つ吟味して、最適なものを選び出すための人間の頭脳労働がたまったものではありません。 金と力にものをいわせて腕ずくで物事を解決しようというのは、何事においてもあまり誉められたことではないでしょう。

ということは、結局、3番の逐次選択法が最も現実的な方法になります。 この方法は変数の選択規則によって次のように細分化できます。

  1. 変数増加法(前進的選択法、forward selection method)
    最初に全説明変数の中から目的変数に対する単寄与率が最大のものを重回帰式に取り込む。 そしてそれ以後は、すでに取り込まれた説明変数との共有部分を除いて、単独で目的変数と共有している情報が最大の説明変数を取り込んでいく。 これは、その変数を取り込んで重回帰式を計算した時、重寄与率の増加が最大になることを意味している。 その際、重寄与率の増加があらかじめ決めておいた値すなわち取り込み基準未満になった時に変数の取り込みを終了する。
  2. 変数減少法(後退的選択法、backward selection method)
    最初に全説明変数を重回帰式に取り込み、以後は取り込まれた説明変数のうち単独で目的変数と共有している情報が最小のものを追い出していく。 これは、その変数を追い出して重回帰式を計算した時、重寄与率の減少が最小になることを意味している。 この際、重寄与率の減少があらかじめ決めておいた値すなわち追い出し基準以上になった時に変数の追い出しを終了する。
  3. 変数増減法(stepwise forward selection method)
    増加法と減少法を組み合わせた手法。 まず変数増加法と同様に取り込み基準に従って変数を取り込む。 そして変数を1つ取り込むたびに、すでに取り込んだものの中から変数減少法と同様の追い出し基準を満足するものがあるか調べ、あればそれを追い出してから、さらに変数の取り込みを続ける。 この手法では取り込むべき変数も追い出すべき変数もなくなった時に変数の選択を終了する。
    この手法は目的変数に対する影響が強い説明変数を少数選択するという特徴を持ち、逐次変数選択法の中で最も多用されている。
  4. 変数減増法(stepwise backward selection method)
    増加法と減少法を組み合わせた手法。 変数増減法とは逆に、まず変数減少法に従って全ての変数を取り込み、追い出し基準を満足するものを追い出す。 そして変数を1つ追い出すたびに、すでに追い出したものの中から変数増加法と同様の取り込み基準を満足するものがあるか調べ、あればそれを取り込み、さらに変数の追い出しを続ける。 変数増減法と同様に、取り込むべき変数も追い出すべき変数もなくなった時に変数の選択を終了する。
    この手法は目的変数に対する影響が弱い説明変数を少数除外するという特徴を持ち、逐次変数選択法の中で効率的な変数の組み合わせが得られる可能性が最も高い。

「ゴチャゴチャしていてよくわからんが、とにかくやたらと込み入った方法らしいな……」

とお思いでしょう。 そのとおり、これらは非常に複雑な方法なのです。

(2) 変数増減法の手順

変数選択法の中で最も多用されるのは変数増減法です。 そこで、この方法の手順をもう少し詳しく説明することにしましょう。 (注1)

1) 最初の変数の取り込み

最初に目的変数に対する単寄与率が最大の説明変数つまり目的変数との共有情報が最大の説明変数を探し、それが取り込み基準を満足するなら重回帰式に取り込みます。 その変数をx1とすると、この時の状態は図7.3.1のようになります。

図7.3.1 1つの変数を取り込んだ時

通常、取り込み基準は次のようなものにします。

説明変数が目的変数と共有している情報——図7.3.1の灰色部分——の密度が説明変数によって説明されない目的変数の情報つまり残差または誤差——図7.3.1の白抜き部分——の密度の2倍以上あること。

情報の密度とは情報量すなわち平方和を、その情報の担い手の数すなわち自由度で割ったものであり、数学的には分散のことです。 共有情報密度と残差密度を比べるには両者の比を計算します。 その比は分散比つまりF値になるので取り込みのための基準値をFinで表すと、前述の取り込み基準を次のように表すことができます。

F = 共有情報密度 残差密度 ≧ F in = 2 の時、取り込み

Finの値は2と決められているわけではありませんが、一般に2〜2.5ぐらいが適当だといわれています。 F値はF検定で用いる検定統計量なので、この値を利用して説明変数を取り込むことによって共有情報密度が濃くなるかどうか、つまりF値が1よりも大きいかどうかという検定を行うことができます。 そしてその検定の有意確率p値を取り込み基準にする、という方法も考えられます。 しかし変数選択という手法は探索的な研究に用いられる記述統計学的手法なので、推測統計学的手法である検定とは馴染みません。

例えばある説明変数の情報密度が同じでF値が同じでも、例数が少ない時はp値が大きくなって選択されず、例数が多い時はp値が小さくなって選択されるということが起こります。 そして例数が非常に多くなれば原理的には全ての説明変数が有意になり、全ての変数を取り込むことになってしまいます。 これでは変数選択の意味がありません。

また検定を用いるなら事前に作業仮説を設定し、それに基づいて例数設計を行う必要があります。 しかし変数選択法を用いるのは選択すべき説明変数がわからないからであり、事前に選択結果を予測して作業仮説を立てることはできません。 したがって変数選択基準として有意確率p値を用いるのはあまり合理的ではありません

2) 次の変数の取り込み

次に残りの説明変数の中から今取り込んだ説明変数と共有する情報を取り除いた上で、目的変数と共有する情報が最大のものを探します。 そしてその変数が取り込み基準を満足するなら重回帰式に取り込みます。 その変数をxjとすると、この時の状態は図7.3.2のようになります。

図7.3.2 次の変数を取り込んだ時

この場合の取り込み基準は次のようになります。

説明変数が単独で目的変数と共有している情報つまり単独共有情報——図7.3.2の薄い灰色部分——の密度が残差密度の2倍以上あること。 つまり
F= 単独共有情報密度 誤差密度 ≧ F in = 2 の時、取り込み

この時の単独共有情報が偏回帰平方和Sbjであり、重寄与率の増加分に相当します。

3) 変数の追い出し

ここで、今までに取り込んだ説明変数の中から単独共有情報が最小のものを探します。 そしてその変数が追い出し基準を満足しているなら追い出し、満足していないならそのままにします。 通常、追い出し基準は取り込み基準と対応した内容にするので次のようになります。

説明変数の単独共有情報密度が残差密度の2倍未満であること。 つまり追い出し基準値をFoutで表すと
F= 単独共有情報密度 誤差密度 < F out = 2 の時、追い出し

FoutはFin以下ならどんな値でもかまいませんが、普通はFinと同じ値にします。 もしFout > Finにすると同じ変数が出たり入ったりを繰り返してしまうので注意が必要です。 またFout = 0にすると変数の追い出しをせず、変数増加法と同じものになります。 そしてFin = Fout = 0にすると全ての変数を強制的に取り込みます。

図7.3.3 変数の追い出し

4) 変数選択の終了

変数を追い出した後、2番に戻ってさらに変数の取り込みを続けます。 そして取り込む変数も追い出す変数もなくなるまで2番と3番の手順を繰り返します。

(3) 変数選択の例

表6.1.1のデータに変数増減法を適用すると次のような結果になります。 なお取り込み基準Finと追い出し規準Foutはどちらも2にしました。

1) 最初の変数の取り込み

各説明変数の重症度に対する単寄与率を計算すると次のようになります。

TC:r2 = 0.567  TG:r2 = 0.149

この結果、最初の取り込み変数候補としてTCを選択します。 そしてTCのF値を計算すると次のようになり、取り込み基準を満足しています。 そこでまずTCを取り込みます。

F = 17.318 > Fin = 2

2) 次の変数の取り込み

次にTCとの共有情報を取り除いた上でTGのF値を計算すると次のようになり、取り込み基準を満足しています。 そこでTGを取り込みます。

F = 4.870 > Fin = 2

2) 変数の追い出し

今取り込んだばかりのTGは除外するので、TCだけが追い出し変数候補になります。 そしてTCのF値を計算すると次のようになり、追い出し基準を満足していません。 そのためTCは追い出しません。

F = 24.987 > Fout = 2

2) 変数選択の終了

以上で取り込む変数も追い出す変数もなくなりました。 そのためこれで変数選択を終了します。

この場合は全ての変数を取り込んだので、変数選択法の結果は第2節の全変数を取り込んだ普通の重回帰分析の結果と同じになります。

(4) 変数選択法の注意点

逐次変数選択法によって得られた重回帰式は、できるだけ少ない説明変数で、できるだけ効率的に目的変数の値を予測するためのものです。 そのため例えば医学の臨床現場で、なるべく少ない検査項目で、なるべく正確に特定の値を予測したい時などに用いると実用的で便利です。

しかし医学の研究現場では特定の値に対して色々な検査項目が単独でどの程度影響しているかを検討したい、つまり各検査項目の重要度を検討したい時がよくあります。 そのような時は検討対象となる全ての検査項目を説明変数に入れた重回帰分析を行うべきであり、逐次変数選択を行うべきではありません。 逐次変数選択を行った場合、選択されなかった説明変数が目的変数に影響を与えていないとは限りません。 すでに選択された説明変数にその説明変数の情報が含まれているので重ねて選択する必要がないだけで、実際には目的変数に影響を与えているということも十分あり得ます。

例えば収縮期血圧と拡張期血圧のようにお互いに関連性の強い項目があった時、一方の値から他方の値を推測することがある程度はできます。 そのため例えば収縮期血圧だけが選択され、拡張期血圧は選択されないということがよく起こります。 ところが収縮期血圧が測定されておらず、拡張期血圧だけが測定されていたとすると、その場合は拡張期血圧が選択されるはずです。

このように、逐次変数選択の結果から選択されなかった説明変数の影響力を知ることは不可能です。 さらに選択されなかった説明変数の影響は補正されないので、選択された説明変数が単独でどの程度の影響を目的変数に与えているかということも不正確にしかわかりません。 したがって特定の値に対して色々な項目が単独でどの程度影響しているかを調べたい時、またはある項目が目的変数に対して影響していないことを確認したい時などは逐次変数選択を行うべきではありません。

逐次変数選択法によって得られた説明変数の組み合わせは科学的に最適なものというわけではなく、あくまでもその候補にすぎません。 それが最適かどうかは、得られた重回帰式の内容が科学的に十分納得できるものであるかどうかで決まります。 もし重回帰式の内容が科学的に解釈困難なら特定の説明変数を強制的に取り込んだり追い出したりして色々な重回帰式を計算し、それらの内容をよく吟味して最終的な結果を選ぶべきです。 (注2)

多変量解析では面倒な計算はコンピュータ任せでもかまいませんが、結果の判断は人間が責任を持って行わなければなりません。 これは何も統計学に限ったことではなく、コンピュータを利用した仕事は常にそうあるべきでしょう。


(注1) 変数増減法による重回帰分析は、掃き出し法を利用して次のような手順で行います。

1) 重回帰モデル

重回帰モデルについて、も含めたデータ行列を用意します。

重回帰モデル:

とその転置行列との積つまり単純積和行列を作り、その右側に単位行列を並べたものを0とします。 そして後の計算のために0の行と列の番号を1〜(p+2)ではなく0、1、…、p、yと呼ぶことにします。


2) 積和行列に変換

0a00 = nを軸にして第1行〜第y行まで掃き出します。 この操作によって左側の第0行は各変数の平均値ベクトルになり、第1行−第1列以下は各変数の積和行列になります。

この1において次のような計算をすることによって、各変数間の単相関係数を求めることができます。 したがってこの行例を利用して各変数の平均値、標準偏差、単相関係数を一度に求めることができます。

(j ≠ k、j,k = 1,…,p,y)

この掃き出しでは次のようなモデルを当てはめたことになります。


b0 = 1a0y = my   平方和:Syy = 1ayy   自由度:φy = n - 1

yの本来の全情報量はΣyi2であり、その担い手の数は次元数nです。 しかし通常は平均値の情報をさっぴいた時の平方和Syyを全情報量、自由度(n - 1)を担い手の数として変数の取り込み・追い出しや重回帰式の分散分析に用います。

3) 取り込み変数の選択

ここから変数の選択に入ります。 今、第k番目(k = 1,…,p、前述の状態はk = 1)まで変数の取り込みが終了しているとします。

今までに取り込まれた変数は除いて、各説明変数と目的変数の単独共有情報量すなわち回帰平方和の増加分は次のようになります。

(j = 1,…,p、すでに取り込まれた変数は除く)

この値が最大のものを選び、次のような基準を満足すればその変数を取り込みます。


SR(k):第k番目の残差(誤差)平方和   SR(k+1):第(k + 1)番目の残差(誤差)平方和   Fin = 2〜2.5:取り込み基準

上記の基準を満足せず、次のようになれば変数の選択を終了します。

Fj < Fin → 変数選択終了

4) 変数の取り込み

kajjを軸にして掃き出し、第j番の変数を取り込みます。

5) 追い出し変数の選択

今までに取り込まれた変数におけるyとの単独共有情報量すなわち回帰平方和の減少分は次のようになります。

(l = 1,…,p、すでに取り込まれた変数のみ)

この値は第2節で偏回帰平方和Sblと呼んだものです。 この値が最小のものを選び、次のような基準を満足すればその変数を追い出します。

<Fout
Fout = 2〜2.5:追い出し基準。 Fout ≦ Finの必要があり、Fout = Finが一般的

上記の基準を満足せず次のようになれば、また3番に戻って変数の取り込みを続けます。

Fl ≧ Fout → 3)へ

6) 変数の追い出し

第l番の変数を追い出すには右側の逆行列のk+1all(-1)を軸にして掃き出し、kに戻します。

この後でまた3番に戻り、取り込む変数がなくなるまで同様の手順を繰り返します。

7) 各種統計量の計算

最終的に第r番目の変数を取り込んで変数の選択が終了したとすると、次のようにして各種の統計量を計算します。


残差平方和:SR = rayy   残差自由度:φR = n - r   残差分散:
回帰平方和:Sβ = Syy - SR = Syy - rayy   回帰自由度:φβ = r - 1   回帰分散:
偏回帰平方和:   偏回帰自由度:φbj = 1
重寄与率:  重相関係数:R
切片:b0 = ra0y   切片の標準偏差(標準誤差):
偏回帰係数:bj = rajy (j = 1,…,p、取り込まれた変数のみ)   偏回帰係数の標準偏差(標準誤差):
標準偏回帰係数:   偏相関係数:
表7.3.1 分散分析表(ANOVA table)
要因平方和SS自由度φ平均平方和Ms(分散V)分散比F
回帰SβφβVβFβ=Vβ/VR
残差SRφRVR 
全体Syyφy 
○回帰の検定(重寄与率の検定)
帰無仮説 H0:β1 = … = βr = 0 (R2 = 0)
Fβ > F(φβR,α)の時、有意水準100α%で有意
○偏回帰係数の検定
帰無仮説 H0:βj = 0 (j = 1,…,r)
> F(1,φR,α) = t(φR,α)2の時、有意水準100α%で有意
○偏回帰係数の推定
100(1 - α)%信頼区間:βjLU = bj ± t(φR,α)SEbj → 下限:βjL = bj - t(φR,α)SEbj  上限:βjU = bj - t(φR,α)SEbj

単回帰分析と同様に、重回帰分析における回帰の検定と偏回帰係数の検定にも有意性検定と統計的仮説検定があります。 しかし実際の研究現場で重寄与率や偏回帰係数の検出差を指定するのは困難なので、ほとんどの場合は有意性検定を行います。 したがって重寄与率や偏回帰係数が完全に0でない限り、例数さえ増やせば必ず有意になります。 そして例数が少なければ有意にならず、有意ではない時は結論を保留します。

そのため多変量解析における検定には実質的な意味はほとんどないといって良いと思います。 そもそも多変量解析は記述統計学的手法であり、推測統計学的手法である検定は馴染みにくいのです。

また単回帰分析と同様に、重回帰分析における検定と推定は回帰誤差εが近似的に正規分布するという前提で行います。 よく誤解されていますが、重回帰式そのものを計算するには正規性は必要ではなく、検定と推定を行う時だけ目的変数の回帰誤差の正規性が必要になります。 そして回帰誤差が正規分布すれば目的変数そのものは正規分布しないので、目的変数そのものの正規性は必要ではありません。 また説明変数は原則として研究者が任意の値を指定します。 そのため説明変数は確率変数ではなく、正規性という概念そのものが当てはまりません。 これもよく誤解されていることです。

変数選択基準としてF値ではなく偏回帰係数の検定の有意確率p値を利用して、次のような基準を用いることもあります。

取り込み基準:p ≦ Pin = 0.05  追い出し基準:p > Pout = 0.05

しかしp値は説明変数の影響の強さをそのまま反映するわけではなく、例数が少ない時は大きな値になり、例数が多い時は小さな値になります。 そのため例数が少ない時はいくら影響の強い説明変数があっても選択されず、例数が多い時は影響の弱い説明変数まで選択されてしまいます。 これでは変数選択の意味がなく、合理的な基準とはいえません。 そのため変数選択基準はやはりF値を用いる方が良いでしょう。

表6.1.1の例題について実際に計算してみましょう。

1) 積和行列の計算と0の用意

2) 0a00 = 10で掃き出し

3) 取り込み変数の選択

  

したがって、まずx1を選択します。

選択基準を満足しているのでx1を取り込みます。

4) 1a11=3090で掃き出し

5) 追い出し変数の選択

取り込んだ変数が今取り込んだx1だけなので、変数追い出しステップは飛ばします。

6) 取り込み変数の選択

  

選択基準を満足しているのでx2を取り込みます。

7) 2a22=16676.375で掃き出し

8) 追い出し変数の選択

今取り込んだばかりのx2は候補からはずします。

  

このためx1は追い出さず、これで変数の選択を終了します。

9) 各種統計量の計算

変数の選択を終了し、各種統計量を計算します。

SR = 3.1484  φR = 7      Sβ = 16.9 - 3.1484 = 13.7516  φβ = 2   
Sb1 = Δ1 = 11.239   Sb2 = Δ2 = 2.191  b0 = -18.5014   
b1 = 0.0916  
… 有意水準5%で有意
95%信頼区間:β1LU = 0.0916 ± 0.0433 → 下限:β1L = 0.0483 上限:β1L = 0.1350
b2 = -0.0115  
… 有意水準5%で有意ではない
95%信頼区間:β2LU = -0.0115 ± 0.0123 → 下限:β2L = -0.0237 上限:β2L = 0.0008
  
  
  
Fβ = 15.286(p = 0.0028) > F(2,7,0.05) = 4.737 … 有意水準5%で有意
表7.3.2 例題の分散分析表
要因平方和SS自由度φ平均平方和Ms(分散V)分散比F
回帰13.751626.875815.286
残差3.148470.4498 
全体16.99 

(注2) 重回帰モデルの当てはまりの良し悪しを評価する指標として色々な値が提唱されています。 その中から代表的なものを紹介しましょう。

1) 自由度調整済み重寄与率R'2

平方和の代わりに自由度で調整した平均平方和つまり分散を用いて定義した寄与率であり、自由度調整済み決定係数とも呼ばれています。 この値が大きいほど当てはまりの良いモデルと評価します。

  
n:例数  k:説明変数の個数  R2:重寄与率  R':自由度調整済み重相関係数

R'2が大きくなるということは残差分散VRが小さくなるということです。 そして(注1)から、変数取り込み基準Finと追い出し基準Foutは変数の回帰分散と残差分散の分散比であることがわかると思います。 そのため分散比が1以上の変数を取り込むか1未満の変数を追い出せば残差分散が小さくなります。 したがってFinとFoutを1にした時の変数選択基準はR'2を最大にするという変数選択基準に相当することになります。

表6.1.1の例題についてx1だけを取り込んだ時と、x1とx2を取り込んだ時のR'2を実際に計算すると次のようなります。

x1だけ取り込んだモデル:
x1とx2を取り込んだモデル:

この結果から2つの変数を取り込んだモデルの方がR'2が大きく、より当てはまりの良いモデルと考えられることがわかります。 なおR'2は寄与率の一種ですが、あくまでもモデルの妥当性を表す指標であり、目的変数の全変動の中で説明変数によって説明される変動の割合と解釈することはできないので注意してください。

2) 赤池の情報量基準AIC(Akaike's Information Criterion)

本来は最尤法におけるモデルの当てはまりの良し悪しを評価する指標であり、最小2乗法を用いる重回帰分析では対数残差平方和を用いた簡略な式を用います。 この値が小さいほど当てはまりの良いモデルと評価します。 (→9.3 1変量の場合 (注1))

AICが小さくなるということは残差平方和SRが小さく、かつ説明変数の個数も少なくなるということです。 したがって残差分散が小さいほど良いということとほぼ同じ意味になり、例数が十分に大きい時は漸近的にFin=Fout=2にした時の変数選択基準に相当します。

表6.1.1の例題についてx1だけを取り込んだ時と、x1とx2を取り込んだ時のAICを実際に計算すると次のようなります。

x1だけ取り込んだモデル:
x1とx2を取り込んだモデル:

この結果から2つの変数を取り込んだモデルの方がAICが小さく、より当てはまりの良いモデルと考えられることがわかります。

3) マローズ(C. L. Mallows)の当てはめ係数Cp

目的変数の推定値に関して偏りとばらつきの両方を考慮した指標として、マローズによって提唱された値です。 この値が小さいほど当てはまりの良いモデルと評価します。

  E(Cp) = k + 1
= 誤差分散推定値   V0:全ての説明変数を取り込んだ時の残差分散

AICと同様にCpも残差平方和が小さく、かつ説明変数の個数が少なくなるほど小さくなります。 そのため例数が十分に大きい時、Cpの最小化とAICの最小化は漸近的に同等になります。

表6.1.1の例題についてx1だけを取り込んだ時と、x1とx2を取り込んだ時のCpを実際に計算すると次のようなります。

x1だけ取り込んだモデル:
x1とx2を取り込んだモデル:

この結果から2つの変数を取り込んだモデルの方がCpが小さく、より当てはまりの良いモデルと考えられることがわかります。

これらの値はモデルの科学的な妥当性を評価するものではなく、数学的な当てはまりの良し悪しを評価する指標です。 したがってこれらの指標を用いて最良と評価されたモデルは、あくまでも科学的に最良なモデルの候補にすぎません。 モデルが本当に科学的に最良かどうかは、やはりモデルの内容を科学的に吟味してから決定しなければなりません。

これらの指標の性質を理解するためにシミレーションをしてみましょう。 まず次のような説明変数xと目的変数yを作成します。

  1. 半閉区間(-5,5]を等間隔に10分割、100分割、1000分割して10個、100個、1000個のxを作る。
  2. xを用いた次のようなモデル関数によってyfitを作る。
    yfit = 1 + 0.1・x + 0.1・x2 + 0.1・x3 + 0.1・x4 + 0.1・x5
  3. yfitに正規誤差を加えてyを作る。
    コンピュータで平均値 = 0、標準偏差 = 1の疑似正規乱数N(0, 12)を発生し、それをσyfit(yfitの標準偏差)×0.2倍してN(0, {0.2・σyfit}2)の正規乱数に変換してからyfitに足す。

次にn = 10、n = 100、n = 1000のxとyについて、重回帰分析によって1次回帰式〜9次回帰式を求めます。 さらに9個の説明変数x1〜x9を用いて、Fin=Fout=2にした変数選択法による重回帰分析を行って重回帰式とAICを求めます。 そしてこれら10種類の重回帰式について1個抜き交差検証(LOOCV:leave-one-out cross-validation)を行い、目的変数の的中率を求めます。 それらの結果をグラ化したものが図7.3.4〜図7.3.9です。 (→1.9 科学的研究の種類 (注2))

図7.3.4 テストデータ(10例) 図7.3.5 AICと的中率(10例)
・5次の重回帰式:y = -12.0296 + 5.1379・x + 4.54231・x2 - 0.639287・x3 - 0.103376・x4 + 0.129127・x5
 重寄与率:R2 = 0.982223   自由度調整済み重寄与率:R'2 = 0.960001   AIC = 70.4852
 全例を用いた時の的中率 = (50%予測限界内のプロット数/10)×100 = 80%
 1個抜き交差検証による検証群の的中率 = (検証群における50%予測限界内のプロット数合計/10)×100 = 20%
・変数選択による重回帰式:y = -7.9747 + 2.66378・x2 + 0.1058・x5
 重寄与率:R2 = 0.980671   自由度調整済み重寄与率:R'2 = 0.975149   AIC = 65.3222
 全例を用いた時の的中率 = 50%   1個抜き交差検証による検証群の的中率 = 20%

図7.3.4と図7.3.5はn = 10の時のグラフであり、その下に記載してあるのは5次の重回帰分析と変数選択法による重回帰分析の結果です。 図7.3.4のは10個のデータで、黒い曲線がyfitを作成した5次関数です。 この5次関数の上下にプロットがランダムにバラついているのがわかると思います。

赤い曲線は5個の説明変数x1〜x5を用いた5次の重回帰式であり、その上下に描いた赤い点線は重回帰式の50%予測限界です。 交差検証では50%予測限界内にyが入っていれば「的中」と判定しました。 この場合は10個のプロットのうち8個が50%予測限界内に入っていて、全例を用いた時の的中率は80%とかなり高い値です。

青い曲線は変数選択法による重回帰式であり、その上下に描いた青い点線は重回帰式の50%予測限界です。 この場合は10個のプロットのうち5個が50%予測限界内に入っていて、全例を用いた時の的中率は50%と理論通りです。

5次の重回帰式はyfitを作成した真の5次関数とはかなり異なっています。 そして図7.3.4を見ると、5次の重回帰式を表す赤い曲線は真の5次関数を表す黒い曲線よりも上下の変動が大きく、yの誤差にひきずられて過剰適合(overfitting)していることがわかります。 そのため交差検証による検証群の的中率は20%しかなく、目的変数の予測能力が低いと考えられます。

それに対して変数選択による重回帰式を表す青い曲線は、赤い曲線よりも黒い曲線と重なっている部分が多くなっています。 この重回帰式はx2とx5だけを用いたものですが、このデータの範囲内では真の5次関数とよく似ています。 ただし交差検証による検証群の的中率は5次の重回帰式と同じく20%しかなく、やはり予測能力が低いと考えられます。

図7.3.5はn = 10の時のAICと交差検証法による的中率のグラフです。 赤い折れ線は1次回帰式〜8次回帰式のAICをプロットしたもので、横軸の値が10のところにプロットした赤い+は変数選択法による重回帰式のAICです。 AICの値は左側の縦軸の赤いラベルを見てください。

AICは3次回帰式までは急激に低下し、それから7次回帰式まではほとんど変化せず、8次回帰式が最低値になります。 しかし8次回帰式は明らかに過剰適合のせいでAICが小さくなっているのであり、実質的には3次回帰式〜7次回帰式まではほぼ同じと考えられます。 そして変数選択法による重回帰式のAICが最も小さく、Fin=Fout=2にした変数選択法はAICを最も小さくするモデルが選択されやすいことがわかります。 なおn = 10では9次回帰式が完全に適合してしまい、AICが無意味になります。 そのため9次回帰式は計算してありません。

青い折れ線は1次回帰式〜8次回帰式の的中率をプロットしたもので、横軸の値が10のところにプロットした青い+は検証群における変数選択法による重回帰式の的中率です。 そして青い点線は1次回帰式〜8次回帰式の全体の的中率をプロットしたもので、横軸の値が10のところにプロットした水色の+は全体における変数選択法による重回帰式の的中率です。 的中率の値は右側の縦軸の青いラベルを見てください。

全体の的中率は回帰式の次数が増えるにつれて高くなっています。 それに対して検証群の的中率は1次〜4次回帰式までは同じで、5次回帰式以後は6次回帰式を除いてかなり低い的中率です。 そして変数選択法による重回帰式は全体の的中率も検証群の的中率もかなり低くなっています。 なおn = 10では作成用データが8個以下になるので9次回帰式を計算できず、交差検証を行えません。 そのため9次回帰式は計算してありません。

理論上、AICは交差検証法と漸近的に同等になります。 しかしAICと検証群の的中率を比較すると、n = 10ではAICと交差検証の結果が食い違っています。 そして変数選択法による重回帰式は、AICは低いものの、全体の的中率も検証群の的中率も低いので目的変数の予測能力は低いと考えられます。 このことからn = 10ではそもそも重回帰分析を適用するのは無理があり、AICも交差検証法もあまり意味がないと考えた方が良いと思います。 (→9.3 1変量の場合 (注1))

図7.3.6 テストデータ(100例) 図7.3.7 AICと的中率(100例)
・5次の重回帰式:y = 4.02802 + 5.69131・x - 1.01697・x2 - 0.817198・x3 + 0.150153・x4 + 0.128017・x5
 重寄与率:R2 = 0.964639   自由度調整済み重寄与率:R'2 = 0.962758   AIC = 604.88
 全例を用いた時の的中率 = 55%   1個抜き交差検証による検証群の的中率 = 54%
・変数選択による重回帰式:y = 0.923447 + 0.10768・x4 + 0.102541・x5
 重寄与率:R2 = 0.962774   自由度調整済み重寄与率:R'2 = 0.962007   AIC = 604.019
 全例を用いた時の的中率 = 51%   1個抜き交差検証による検証群の的中率 = 51%
図7.3.8 テストデータ(1000例) 図7.3.9 AICと的中率(1000例)
・5次の重回帰式:y = 0.51101 - 1.34221・x + 0.36874・x2 + 0.317664・x3 + 0.0860268・x4 + 0.0923674・x5
 重寄与率:R2 = 0.96182   自由度調整済み重寄与率:R'2 = 0.961628   AIC = 6000.02
 全例を用いた時の的中率 = 50%  1個抜き交差検証による検証群の的中率 = 49.9%
・変数選択による重回帰式:y = 1.6083 + 0.101832・x4 + 0.113505・x5 - 0.000424909・x7
 重寄与率:R2 = 0.961687   自由度調整済み重寄与率:R'2 = 0.961572   AIC = 5999.5
 全例を用いた時の的中率 = 49.8%   1個抜き交差検証による検証群の的中率 = 49.6%

n = 100とn = 1000の結果は似ていて、図7.3.6でも図7.3.8でも赤い5次回帰式の曲線青い変数選択法による重回帰式の曲線は、黒い真の5次関数の曲線とかなり重なっています。 そして図7.3.7と図7.3.9のAICの曲線は5次回帰式までは低下し、それ以後はほとんど変化せず、変数選択法による重回帰式のAICも同じくらいの値です。

交差検証法の全体と検証群の的中率はn = 100では5次回帰式が最も高く、n = 1000では6次回帰式が最も高くなっています。 そして変数選択法による重回帰式の的中率はまずまずの高さです。

これらのことから例数が多いとAICと交差検証の結果は似たものになり、どちらも目的変数の予測能力が高いモデルを選ぶための指標になりうると考えられます。 そして「AICが最低のモデル」とか「検証群の的中率が最高のモデル」という単純な基準で最適モデル候補を決めるのではなく、説明変数をひとつずつ増やしていった時の変化の様子を検討して最適モデル候補を決めるのが良いと思います。

ただし5次回帰式の偏回帰係数と真の5次関数の係数はあまり近似していません。 このことから、AICも交差検証法も標本集団のデータを母集団のデータと考えた時に目的変数の予測能力が最も高いモデルを選ぶための指標であり、正しいモデルまたは科学的に最良のモデルを選ぶための指標ではないことがわかると思います。 また変数選択法は予測能力がある程度高く、かつできるだけ単純なモデルを選択するのに向いていることもわかると思います。