お恥ずかしい話、(線形回帰?あ〜!誤差が最小になるような直線を引くでしょ?)という理解でした。
転職時の技術面接で「線形回帰を分かりやすく説明してくれますか?」と言われた際に、正しく説明できるように、線形回帰についてまとめてみました。
この散布図を使って年齢と年収の関係性を線形回帰式で表そうとすると、以下の式を得ることができます。
\(y(年収) = 0.66 × x(年齢) + 16.3\)
この線形回帰の式を散布図に追加すると以下の通りになります。
やっていること自体はとても簡単ですが、少し考えてみると、以下のような疑問が生じると思います。
「そもそも線形や回帰ってどういうこと?」
「どうやって赤い直線を求めたの?」
「この赤い直線って合ってるの?」
・・・
これらの疑問に答えながら、線形回帰をちゃんと理解しましょう!
そもそも線形とは?
冒頭から当たり前のように使っていましたが、そもそも「線形」とは何でしょうか?
「線形 = 直線」と理解している方が多いですが、正確な理解ではありません。
まずは線形という言葉をちゃんと理解しましょう。
ある関数が以下2つの性質を持つ場合、その関数は線形であると言います。
①加法性
加法性とは、任意の\(a\),\(b\)について\(f(a+b)=f(a)+f(b)\)が成り立つことです。
どのような場合に成り立つのでしょうか?
以下の例で考えて見ましょう。
\(f(x):y=2x\)
\(g(x):y=x^2\)
まず\(f(x):y=2x\)は、\(f(a+b)=2a+2b\), \(f(a)=2a\), \(f(b)=2b\)なり、
常に\(f(a+b)=f(a)+f(b)\)が成り立ちます。
実際にa=3,b=4の場合、\(f(7)=f(3)+f(4)\)が成り立っているということがグラフで確認できます。
次に\(g(x):y=x^2\)は、\(g(a+b)=a^2+2ab+b^2\), \(g(a)=a^2\), \(g(b)=b^2\)なり、
常に\(g(a+b)=g(a)+g(b)\)が成り立つわけではありません。
実際にa=3,b=4の場合、\(g(7)=g(3)+g(4)\)が成り立っていないことがグラフで確認できます。
②斉次性
斉次性とは、任意の\(x\),任意のスカラー\(k\)に対して、\(f(kx)=kf(x)\)が成り立つことです。
これはどのような場合に成り立つのでしょうか?
以下の例で考えて見ましょう。
\(f(x):y=2x\)
\(g(x):y=2x+3\)
まず\(f(x):y=2x\)は、\(f(kx)=2kx\), \(kf(x)=k2x\)となり、
常に\(f(kx)=kf(x)\)が成り立ちます。
実際にx=2,k=4の場合、\(f(8)=4f(2)\)が成り立っているということがグラフで確認できます。
次に\(g(x):y=2x+3\)は、\(g(kx)=2kx+3\), \(kg(x)=2kx+3k\)となり、
常に\(g(kx)=gf(x)\)が成り立つわけではありません。
実際にx=2,k=4の場合、\(g(8)=4g(2)\)が成り立っていないことがグラフで確認できます。
※原点を通らない直線は斉次性を持たないので線形関数ではありませんが、実際には線形関数として扱われています。
そもそも回帰とは?
「線形回帰」の「線形」という意味は理解できたと思います。
次は「回帰」について見ていきましょう。
「回帰」とは、連続値を予測することです。
例えば、売上金額や明日の気温を予測することは回帰です。
対になる言葉として「分類」があります。
「分類」とは、離散値を予測することです。
例えば、画像から写っている動物が犬かどうかを予測することは分類になります。
単回帰 vs 重回帰
線形回帰には単回帰と重回帰が存在します。
単回帰とは、1つの説明変数を使った線形回帰を指します。
例えば以下の例では「年齢」という1つの説明変数で「年収」を表しています。
ex. \(y(年収) = 0.66 × x(年齢) + 16.3\)
重回帰とは、2つ以上の説明変数を使った線形回帰を指します。
例えば以下の例では「年齢」と「住んでいる地域の平均年収」という2つの説明変数で「年収」を表しています。
ex. \(y(年収) = 0.33 × x1(年齢) + 0.43 × x2(住んでいる地域の平均年収) +16.3\)
「線形回帰=直線」というイメージを持っている方が多いですが、それは単回帰の話です。
重回帰の線形関数は直線ではありません。
線形回帰の例
実際に重回帰をやって見ましょう。
今回使用するデータは、1990年の米国国勢調査から得られたカリフォルニア州の住宅価格のデータセットです。このデータセットは、カリフォルニア州の国勢調査ブロックグループごとに1行のデータになっています。
説明のスペースの都合上、5つの説明変数のみ使用します。
変数名 | 説明 |
---|---|
Medlnc | ブロック内の収入の中央値 |
HouseAge | ブロック内の家の中央年齢 |
AveRooms | 1世帯あたりの平均の部屋数 |
AveBedrms | 1世帯あたりの平均の寝室数 |
Population | ブロック内の人口 |
MedianHouseValue | ブロック内の住宅価格の中央値※これが目的変数 |
実際のデータは以下の通りです。
MedInc | HouseAge | AveRooms | AveBedrms | Population | MedianHouseValue | |
---|---|---|---|---|---|---|
0 | 8.3252 | 41.0 | 6.984127 | 1.023810 | 322.0 | 4.526 |
1 | 8.3014 | 21.0 | 6.238137 | 0.971880 | 2401.0 | 3.585 |
2 | 7.2574 | 52.0 | 8.288136 | 1.073446 | 496.0 | 3.521 |
3 | 5.6431 | 52.0 | 5.817352 | 1.073059 | 558.0 | 3.413 |
4 | 3.8462 | 52.0 | 6.281853 | 1.081081 | 565.0 | 3.422 |
… | … | … | … | … | … | … |
20635 | 1.5603 | 25.0 | 5.045455 | 1.133333 | 845.0 | 0.781 |
20636 | 2.5568 | 18.0 | 6.114035 | 1.315789 | 356.0 | 0.771 |
20637 | 1.7000 | 17.0 | 5.205543 | 1.120092 | 1007.0 | 0.923 |
20638 | 1.8672 | 18.0 | 5.329513 | 1.171920 | 741.0 | 0.847 |
20639 | 2.3886 | 16.0 | 5.254717 | 1.162264 | 1387.0 | 0.894 |
このデータに対して線形回帰を行うと、以下の回帰式を得ることができます。
\(MedianHouseValue = 0.44 * MedInc\\
\hspace{78pt}+ 0.02 * HouseAge\\
\hspace{78pt}- 0.03 * AveRooms\\
\hspace{78pt}- 0.00 * Population\\
\hspace{78pt}- 0.04\)
※AveBedrms列は使用していません
線形回帰式の導出
上で線形回帰の例を説明しましたが、(いきなり式だけ出されても…)と思う方が多いと思います。
では、どうやってこの式を求めているのでしょうか?
数行のコードを書けば簡単に式を求めることができますが、この式の求め方を理解しておくことは非常に重要です。
線形回帰式を求める際の方針
では、どのように回帰式を求めるのでしょうか?
それは、残差平方和(=各データの残差の2乗の合計)が最小になるような回帰式を求めます。
まずは残差について理解しましょう。
残差と似た用語として誤差も存在します。残差と誤差を比較しながらこれらの用語を理解しましょう。
残差と誤差を理解するためには、まず初めに回帰式の前提を理解しましょう。
回帰式は「現在手元にあるデータは母集団から観測した一部のデータである」という前提で考えるため、手元にあるデータ=全てのデータではありません。つまり、全てのデータを使って求めた真の回帰式と観測された一部の標本集団を使って求めた回帰式の2種類が存在することになります。
2種類の回帰式が存在することを理解したところで、残差と誤差の説明に戻りましょう。
残差とは、標本集団で求めた回帰式と観測値の差を指します。下の左図が残差を表しています。
誤差とは、真の回帰式と観測値の差を指します。下の右図が誤差を表しています。
※母集団全てを観測することは不可能であるため、真の回帰式を求めることはできません。したがって、誤差ではなく残差で考えていきます。
残差を理解したところで、本題の残差平方和の説明に戻りましょう。
残差平方和(=各データの残差の2乗の合計)の最小化とはどのようなことでしょうか?
残差平方和の最小化をイメージしやすいように二次元で考えてみましょう。
以下の図の場合、残差平方和が51となる回帰式を求めることになります。
導出
では、カリフォルニア州の住宅価格のデータセットを使いながら、導出方法を見ていきましょう。
データセットの5つの説明変数のうち、相関係数が高いAveBedrmsを除いた4つを使って考えます。
※AveBedrmsを外した理由は、後述の「線形回帰の前提」でご説明します。
回帰式は以下の形になります。
\(y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_3 + \beta_4 x_4 \)
\(y\):MedianHouseValue(住宅価格)
\(\beta_1, \dots, \beta_4\): 説明変数の係数
\(x1\):MedInc(収入)
\(x2\):HouseAge(築年数)
\(x3\):AveRooms(部屋数)
\(x4\):Population(人口)
証明の都合上、\(\beta\)と\(x\)が対応している状態が望ましいため、ダミーの説明変数\(x_0\)を作成し、\(\beta_0\)を\(\beta_0 x_0(=1)\)とします。
残差平方和が最小になるような\(\beta\)を求めるという方針に沿って回帰式を導出します。
説明変数x_0を追加すると以下の表のようになり、先頭を1行目1列ではなく、0行目0列とします。
x_0 | MedInc | HouseAge | AveRooms | Population | MedianHouseValue | |
---|---|---|---|---|---|---|
0 | 1 | 8.3252 | 41.0 | 6.984127 | 322.0 | 4.526 |
1 | 1 | 8.3014 | 21.0 | 6.238137 | 2401.0 | 3.585 |
2 | 1 | 7.2574 | 52.0 | 8.288136 | 496.0 | 3.521 |
3 | 1 | 5.6431 | 52.0 | 5.817352 | 558.0 | 3.413 |
4 | 1 | 3.8462 | 52.0 | 6.281853 | 565.0 | 3.422 |
… | … | … | … | … | … | … |
20633 | 1 | 1.5603 | 25.0 | 5.045455 | 845.0 | 0.781 |
20634 | 1 | 2.5568 | 18.0 | 6.114035 | 356.0 | 0.771 |
20635 | 1 | 1.7000 | 17.0 | 5.205543 | 1007.0 | 0.923 |
20636 | 1 | 1.8672 | 18.0 | 5.329513 | 741.0 | 0.847 |
20637 | 1 | 2.3886 | 16.0 | 5.254717 | 1387.0 | 0.894 |
まずは導出の際に使う文字を決めていきましょう。
\(N\):行番号(=20637)
\(M\):説明変数の数(=4)
\(y_{i}\):i行目の目的変数の値 ex. \(y_{0}=4.526\)
\(\hat{y_{i}}\):i行目のデータを回帰式に入れた時の目的変数の値
\(x_{ij}\):i行目j列の説明変数の値 ex. \(x_{01}=8.3252\)
\(β_{j}\):j列の説明変数の係数
まず初めにこれらの文字を使いやすい形に変えていきます。
\(X = \begin{bmatrix}
x_{00} & x_{01} & \ldots & x_{0M} \\
x_{10} & x_{11} & \ldots & x_{1M} \\
\vdots & \vdots & \ddots & \vdots \\
x_{N0} & x_{N1} & \ldots & x_{NM}
\end{bmatrix}\)
\(β = \begin{bmatrix}
β_0 \\
β_1 \\
\vdots \\
β_M
\end{bmatrix}\)
\(y = \begin{bmatrix}
y_{0} \\
y_{1} \\
\vdots \\
y_{N}
\end{bmatrix}\)
\(\hat{y} = \begin{bmatrix}
\hat{y_{0}} \\
\hat{y_{1}} \\
\vdots \\
\hat{y_{N}}
\end{bmatrix}\)
まず初めに回帰式を作ります。
回帰式は\(y = \beta_0 x_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_3 + \beta_4 x_4 \)なので、
\(\hat{y} =Xβ\)と表すことができます。
次に残差平方和\(E\)を以下の式で表します。
残差平方和は\(y\)と\(\hat{y}\)の差の二乗なので、以下の式になります。
\(E=(y – \hat{y})^{\mathrm{T}}(y-\hat{y})\)
次に残差平方和の式を変形していきます。
残差平方和の式に\(\hat{y} =Xβ\)を代入すると、
\(E=(y – Xβ)^{\mathrm{T}}(y-Xβ)\)
になります。
次に\((y – Xβ)^{\mathrm{T}}\)を展開して、
\(E=(y^{\mathrm{T}} – (Xβ)^{\mathrm{T}})(y-Xβ)\)
となります。
さらに、行列の性質である\((XY)^{\mathrm{T}}=Y^{\mathrm{T}}X^{\mathrm{T}}\)を用いて変形すると、
\(E=(y^{\mathrm{T}} – β^{\mathrm{T}}X^{\mathrm{T}})(y-Xβ)\)
となります。
式を展開して、
\(E=y^{\mathrm{T}}y – y^{\mathrm{T}}Xβ- β^{\mathrm{T}}X^{\mathrm{T}}y + β^{\mathrm{T}}X^{\mathrm{T}}Xβ \)
と変形することができます。
上の式の第2項(\(y^{\mathrm{T}}Xβ\))と第3項(\(β^{\mathrm{T}}X^{\mathrm{T}}y\))は同じなので、以下のように変形することができます。
\(E=y^{\mathrm{T}}y – 2y^{\mathrm{T}}Xβ+ β^{\mathrm{T}}X^{\mathrm{T}}Xβ \)
上記の式は、\(β\)以外はスカラーなので、\(E\)を\(β\)が変数の式として考えます。
この場合、\(E\)の最小値を求めるためには\(E\)を\(β\)で微分した値が0になれば良いということになります。
\(E\)を\(β\)で微分した式は以下の通りです。
\(\frac{\partial E}{\partial \beta} = \frac{\partial}{\partial \beta} \left( y^{\mathrm{T}}y \right) – 2 \frac{\partial}{\partial \beta} \left( y^{\mathrm{T}}X\beta \right) + \frac{\partial}{\partial \beta} \left( \beta^{\mathrm{T}}X^{\mathrm{T}}X\beta \right)\)
それぞれの項の微分結果を見ていきましょう。
第1項は定数を微分しているため、0になります。
第2項は\(\frac{\partial}{\partial x}(A^{\mathrm{T}}x) = A\)により、\(-2X^{\mathrm{T}}y\)と変形できます。
第3項は\(\frac{\partial}{\partial x}(x^{\mathrm{T}}Ax) = (A + A^{\mathrm{T}})x\)により、\((X^{\mathrm{T}}X + (X^{\mathrm{T}}X)^{\mathrm{T}})\beta\)
さらに、\((XY)^{\mathrm{T}} = Y^{\mathrm{T}}X^{\mathrm{T}}\)により、\(2X^{\mathrm{T}}X\beta\)と変形できます。
まとめると、微分値は\(-2X^{\mathrm{T}}y + 2X^{\mathrm{T}}X\beta\)となります。
この微分値が0になる\(\beta\)を求めると、残差平方和を最小化した回帰式を見つけることができます。
これを式で表すと、\(-2X^{\mathrm{T}}y + 2X^{\mathrm{T}}X\beta = 0\)となります。
この式を変形すると、\(\beta = (X^{\mathrm{T}}X)^{-1}X^{\mathrm{T}}y\)となります。
あとは行列\(X\)やベクトル\(y\)の値を代入し、ベクトル\(\beta\)を算出していきます。
以上のように、残差平方和を最小化した回帰式は、説明変数の行列\(X\)や目的変数のベクトル\(y\)を使って簡単に求めることが可能です。
線形回帰でできること
線形回帰の式を見て、(この式がわかると何が嬉しいの…?)と思う方もいる思います。
では、線形回帰でできることについて見ていきましょう。
目的変数の予測ができるようになる
線形回帰の式を求めたということは、目的変数と説明変数の関係性を表現できたということになります。つまり、説明変数から目的変数を求めることができます。
以下の説明変数の値を回帰式に入れてみましょう。
MedInc=3.0, HouseAge=18.0, AveRooms=8.3,Population=350
すると、目的変数であるMedianHouseValueの値が1.391になることが分かります。
\(1.391 = 0.44 * 3.0 + 0.02 * 18.0 – 0.03 * 8.3 – 0.00 * 350 – 0.04\)
以上のように、回帰式を使うと説明変数から目的変数を予測できるようになります。
説明変数が目的変数に与える影響を捉えられる
回帰式の係数や切片のことを偏回帰係数と呼びます。
偏回帰係数は、ある説明変数以外の値を固定した場合に、その説明変数が1増加すると目的変数がどれだけ増加/減少するかを示しています。
例えば、以下の回帰式のHouseAgeの係数である0.02について考えてみましょう。
これは「HouseAgeだけを1年大きくした場合、MedianHouseValueが0.02大きくなる」ということを示しています。
\(MedianHouseValue = 0.44 * MedInc\\
\hspace{78pt}+ 0.02 * HouseAge\\
\hspace{78pt}- 0.03 * AveRooms\\
\hspace{78pt}- 0.00 * Population\\
\hspace{78pt}- 0.04\)
説明変数間の影響度の大きさを比較できる
それぞれの説明変数が目的変数に与える影響の大きさを比較することもできます。
残念ながら、偏回帰係数を比較しても説明変数同士の影響大きさを比較することはできません。
なぜなら説明変数の値が取るスケールや単位が異なるからです。
具体例で考えていきましょう。
以下の回帰式のMedIncの係数は「収入が1万ドル増えた場合、住宅価格が0.44大きくなる」ことを示しています。一方、HouseAgeの係数は「築年数が1年増えた場合、住宅価格が0.02大きくなる」ことを示しています。
\(MedianHouseValue = 0.44 * MedInc\\
\hspace{78pt}+ 0.02 * HouseAge\\
\hspace{78pt}- 0.03 * AveRooms\\
\hspace{78pt}- 0.00 * Population\\
\hspace{78pt}- 0.04\)
偏回帰係数だけを見ると、MedIncの方が影響を与えているように見えます。
では、もしMedIncの単位が’万ドル’から’ドル’になった場合、どうなるのでしょうか?
MedIncに入る値が10,000倍大きくなるため、偏回帰係数は10,000倍小さくなります。
つまり、以下のような偏回帰式になります。
\(MedianHouseValue = 0.0000044 * MedInc(単位はドル)\\
\hspace{78pt}+ 0.02 * HouseAge\\
\hspace{78pt}- 0.03 * AveRooms\\
\hspace{78pt}- 0.00 * Population\\
\hspace{78pt}- 0.04\)
改めて2つの偏回帰式を比べてみると、今度はHouseAgeの方が影響を与えているように見えます。
このように、スケールや単位によって偏回帰係数が大きく変化するため、偏回帰係数を単純に比較することはできません。
説明変数が目的変数に与える影響の大きさを比較するためには、各説明変数の値が取るスケールを揃えてあげる必要があります。
そこで出てくるのが標準偏回帰係数です。
標準偏回帰係数とは、全ての説明変数を平均0,分散1に標準化した後に重回帰分析を行って得られた係数を指します。
説明変数の取り得る範囲を揃えてあげることで、係数の比較ができるようになります。
標準偏回帰係数を求めると、以下の回帰式が導出されます。
\(MedianHouseValue = 0.85 * MedInc\\
\hspace{78pt}+ 0.22 * HouseAge\\
\hspace{78pt}- 0.06 * AveRooms\\
\hspace{78pt}+ 0.03 * Population\\
\hspace{78pt}+ 2.07\)
この回帰式を見ると、「収入(MedInc)の方が築年数(HouseAge)よりも住宅価格に影響を与えている」ということができます。
線形回帰の前提条件
線形回帰は解釈しやすく便利な手法ですが、どんな時でも使える訳ではありません。
以下の5つの条件を満たしている必要があります。
1.目的変数に影響を与える変数は全てモデルの説明変数に含まれていること
2.説明変数間に相関係数の高い組み合わせが存在しないこと
3.残差が正規分布に従うこと
4.残差の母平均の期待値が0で、分散が一定であること
5.残差が相互に独立であること
これらの条件が成り立っていない場合、正しい回帰式を求められなかったり、求めた回帰式の信頼性を確認することができません。
では、それぞれの条件について見ていきましょう。
目的変数に影響を与える変数は全てモデルの説明変数に含まれていること
これは当たり前ですが、目的変数が説明変数と定数項で表すことができ、目的変数に影響を与える説明変数が全て含まれている必要があります。
ドメイン知識を利用して、必要な説明変数が抜けていないかを確認ましょう。
説明変数間に相関係数の高い組み合わせが存在しないこと
この前提条件は、各説明変数の相関を求めることで確認できます。
MedInc | HouseAge | AveRooms | AveBedrms | Population | |
---|---|---|---|---|---|
MedInc | 1.000000 | -0.119034 | 0.326895 | -0.062040 | 0.004834 |
HouseAge | -0.119034 | 1.000000 | -0.153277 | -0.077747 | -0.296244 |
AveRooms | 0.326895 | -0.153277 | 1.000000 | 0.847621 | -0.072213 |
AveBedrms | -0.062040 | -0.077747 | 0.847621 | 1.000000 | -0.066197 |
Population | 0.004834 | -0.296244 | -0.072213 | -0.066197 | 1.000000 |
AveRooms(平均の部屋数)とAveBedrms(平均の寝室数)に強い相関があるようです。
(平均部屋数と平均寝室数に正の相関があるのは当然ですよね…)
これらに強い相関があるため、上の例ではAveBedrms列を使用しませんでした。
このような状態を、多重共線性があると言います。
では、なぜ多重共線性はダメなのでしょうか?
それは、回帰係数のばらつきが大きくなるからです。
そもそも回帰係数のばらつきとは何でしょうか?
線形回帰モデルを作る際、我々はデータに基づいて回帰係数を推定します。しかし、使用するデータは母集団からの一部のサンプルに過ぎないため、異なるサンプルを取ってモデルを推定すると、得られる回帰係数は異なります。つまり、サンプルするデータによって回帰係数はばらつきが生じます。
このような係数のばらつきを考慮するために、標準誤差を用います。ある説明変数の係数の標準誤差が小さい場合、その係数の推定値は比較的安定していると解釈されます。逆に標準誤差が大きい場合、その係数の推定値には大きな不確実性があると考えられます。
※標準誤差は統計学でよく使われる標準偏差とは別物です。標準偏差は母集団から得られたデータのばらつきを表し、標準誤差は推定量のばらつき(この場合では、予測した回帰係数が真の回帰係数からどのくらいバラついているか?)を表します。
では、なぜ相関係数の高い組み合わせが存在する際に回帰係数のばらつきが大きくなるのでしょうか?
まず、回帰係数のばらつきとは何かを見ていきましょう。
回帰係数のばらつきとは、回帰係数の標準誤差を指します。
まずは回帰係数の標準誤差(\(SE\))を見ていきましょう。
回帰係数の標準誤差は以下の式になります。
\(SE(\hat{\beta}_j) = \sqrt{\frac{\hat{\sigma}^2 }{\sum (X_j – \bar{X}_j)^2}\times VIF_j}\)
\(SE(\beta_j)\):特定の説明変数\(\beta_j\) の回帰係数の標準誤差
\(\hat{\sigma}^2\):残差(誤差項)の分散
\(X_j\):説明変数\(j\)
\(\bar{X}_j\):説明変数\(j\)の平均値
\(VIF_j\):説明変数\(j\)の分散膨張因子
ここで使われている\(VIF_j\)についてもう少し詳しく説明します。
\(VIF_j\)とは、Variance Inflation Factor(分散膨張因子)の略称で、ある説明変数がそれ以外の説明変数にどれだけ説明されるかを示す値です。
\(VIF_j\)は説明変数\(j\)を\(j\)以外の説明変数で回帰した時の決定係数\(R_j^2\)を使って以下の式で求めることができます。
\(VIF_j = \frac{1}{1 – R_j^2}\)
説明変数\(j\)と他の説明変数に相関関係が強い場合、他の説明変数を使って説明変数\(j\)を表すことができるということになるため、決定係数\(R_j^2\)は大きくなります。決定係数\(R_j^2\)が大きくなることで、\(SE(\beta_j)\)も大きくなってしまい、元の回帰式の回帰係数のばらつきが大きくなってしまうということです。
一般的にVIFが10以上の場合に多重共線性が起きていると判断することが多いです。
残差が正規分布に従うこと
線形回帰では残差が正規分布に従っているという前提があります。
なぜ残差が正規分布に従っている必要があるのでしょうか?
それは、回帰モデルの有意性を確認できるようにするためです。
回帰モデルの有意性とは、説明変数が回帰式において役に立っているかどうかを考えることです。
回帰モデルの有意性の検定方法は主に2種類あります。
それぞれの検定方法について見ていきましょう。
個々の回帰係数の有意性の検定(t検定)
回帰式におけるの個々の説明変数が目的変数の予測に統計的に有意な貢献をしているかどうかを評価します。
もし回帰係数が0であれば、その説明変数は目的変数の予測に有意な貢献をしていないと考えます。
以下の回帰式について、帰無仮説\( H_0\)と対立仮説\( H_1\)を立て、t検定を行うことで有意性を確認します。
\( H_0:\)特定の説明変数の回帰係数の推定値\(\hat{\beta}=0\)(つまり、その変数は目的変数に影響を与えない)
\( H_1: \)\(\hat{\beta}\neq0\)
t検定の統計量は以下の式で求められます。
\(t = \frac{\hat{\beta}}{SE(\hat{\beta})}\)
\(\hat{\beta}\) :特定の説明変数の回帰係数の推定値
\(SE(\hat{\beta})\):特定の説明変数の回帰係数の標準誤差
t検定の実施するためには、母集団が正規分布に従うという前提があります。
つまり、上に記載したt検定を実施するためには、\(\hat{\beta}\) が正規分布に従っている必要があります。
\(\hat{\beta}\)は残差を使って求めているため、\(\hat{\beta}\)が正規分布に従うためには、残差が正規分布に従う必要があります。
モデル全体の有意性の検定(F検定)
回帰式における全ての説明変数が、全体として目的変数の予測に有意な貢献をしているかどうかを評価します。
以下の回帰式について、帰無仮説\( H_0\)と対立仮説\( H_1\)を立て、F検定を行うことで有意性を確認します。
\(Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_k X_k\)
\( H_0: \beta_1 = \beta_2 = \ldots = \beta_k = 0 \)
\( H_1: \text{少なくとも一つの } \beta_i \neq 0 \ (i = 1, 2, \ldots, k) \)
F検定の統計量は以下の式で求められます。
\(F = \frac{\text{MSR}}{\text{MSE}}\)
\(\text{MSR}\) :回帰の平均平方(説明変数が目的変数に与える影響の大きさを示す値)
\(\text{MSE}\) :残差の平均平方(モデルがデータにどの程度適合していないかを示す値)
F検定の統計量を求める式の分子・分母は正規分布したがっている前提があるため、回帰モデルの有意性を確認するためには、残差が正規分布に従っている必要があります。
残差が正規分布に従っているかどうかを確認する方法
では、次に残差が正規分布に従っているかどうかを確認する方法を見ていきましょう。
正規分布に従っているかどうかを確認する一般的な方法として、正規確率プロット(Q-Qプロット)が挙げられます。
正規確率プロット(Q-Qプロット)は、データが正規分布に従っているかどうかを視覚的に評価するためのツールです。
縦軸は残差の値、横軸は残差が標準正規分布に従っている場合の値を表しています。
つまり、もしデータ点がy=xの直線にほぼ沿っていれば、データは正規分布に近いと言えます。
横軸の値は、残差の値と順位からその残差が全体の何%に位置するか(=累積確率)を算出し、その累積確率を標準正規分布の逆累積分布関数に入力することで求めることができます。
例えば、カリフォルニア州の住宅価格のデータセットの回帰式の正規確率プロットを表示すると以下の通りです。残差が正規分布に従っていることが分かりますね!
残差の母平均の期待値が0で、分散が一定であること
残差が相互に独立であること
この2つは近い話のため、まとめて説明しましょう。
そもそも残差とは、線形回帰モデルが説明できないデータのランダムな変動を表すものです。
ランダムな変動を表すものなので、期待値が0で分散が一定になるはずです。
また、残差が相互に独立であるということは、残差が互いに相関がないことを指します。
そもそも線形回帰モデルでは、目的変数に影響を与えている全ての説明変数のうち、実際に作った回帰式に含まれてない変数の影響は全て誤差項に吸収されてしまいます。つまり、実際に作った回帰式に含まれる説明変数が全ての説明変数を網羅できている場合は、残差が互いに独立します。逆に、実際に作った回帰式の説明変数が全ての説明変数を網羅できていない場合は、残差に網羅できなかった変数の影響が吸収されてしまい、残差が独立ではなくなります。
線形回帰式の評価
ここでは、線形回帰式の評価に使われる決定係数\(R^2\)を紹介します。
そもそも回帰モデルの性能を評価するには、評価の基準となるモデルが必要です。
まずは評価の基準となるモデルについて考えていきましょう。
評価の基準とするモデルには、シンプルで分かりやすいモデルがふさわしいです。
最もシンプルなモデルは、手元にある目的変数の平均値で一律に予測するモデルです。
未知の説明変数が与えられて目的変数を予測する際、手元にある目的変数の平均値だけで一律に予測する方法(=説明変数の情報を何も使わずに予測する方法)が最も単純な方法です。
これを基準のモデルとして考えます。
基準モデルを理解したところで、次は決定係数\(R^2\)について見ていきましょう。
決定係数\(R^2\)とは、算出した回帰式が”実際の目的変数の値と基準モデルの予測値の差”をどの程度説明できているかを表す指標です。
決定係数\(R^2\)は0~1の範囲の値を取り、1に近いほどモデルの適合度が高いことになります。
まずは決定係数の説明で用いる文字や用語を確認しましょう。
\(Y_i\):実際の目的変数の値
\(\hat{Y}_i\):回帰モデルによる目的変数の予測値
\(\bar{Y}\):基準モデルによる目的変数の予測値(=手元にある目的変数の平均)
全変動:実際の目的変数の値 – 基準モデルによる目的変数の予測値
回帰変動:全変動のうち、回帰モデルで説明できる変動
残差変動:全変動のうち、回帰モデルで説明できない変動
決定係数\(R^2\)は式で求めることが可能です。
\(R^2 = 1 – \frac{\text{RSS}}{\text{TSS}}\)
\(\text{RSS} = \sum (Y_i – \hat{Y}_i)^2\)で算出される残差残差平方和
\(\text{TSS} = \sum (Y_i – \bar{Y})^2\)で算出される全平方和
コメント