線形重回帰
線形単回帰が、1つの目的変数を1つの説明変数で予測したのに対し、線形重回帰は1つの目的変数を複数の説明変数で予測しようというものです。
偏回帰係数
重回帰式における偏回帰係数は、他の説明変数が一定という条件で各説明変数が1だけ変化した時に目的変数がいくつ変化するかを表す値です。
説明変数が $a$ $b$ の2種類であるとき、説明変数 $a$ と 目的変数 $y$ の間の偏回帰係数 $w_{ay}$ は
$$ w_{ay} = \frac{\sigma_y(r_{ay} - r_{by} r_{ab})}{\sigma_a(1 - r_{ab}^2)}$$
ただし $\sigma$ を標準偏差、 $r$ を相関係数とします。
切片
説明変数が $a$ $b$ の2種類であるとき、その $y$ 切片 $t$ は
$$ t = \mu_y - w_{ay} \mu_a - w_{by} \mu_b$$
ただし $w$ を偏回帰係数、$\mu$ を平均であるとします。
アヤメのデータ
次の「アヤメのデータ」を用いて、以下の課題に取り組んでください。アヤメのデータには、 Sepal.Length
Sepal.Width
Petal.Length
Petal.Width
Species
などのカラム(列)があります。
課題29:偏回帰係数と線形重回帰
以下の手順を参考に、2つの説明変数 $x_1$, $x_2$ から目的変数 $y$ を線形重回帰するプログラムを作成し、Sepal.Width
と Petal.Length
から Sepal.Length
を得る線形重回帰式を求めてください。
# b の影響を除いた、a と y の偏回帰係数 partial regression coefficient を求める関数を作ろう
def partial_regression(B, A, Y):
# 定数 w1 = (x2 の影響を除いた、x1 と y の偏回帰係数)
w1 = partial_regression(X2, X1, Y)
# 定数 w2 = (x1 の影響を除いた、x2 と y の偏回帰係数)
w2 = partial_regression(X1, X2, Y)
# 定数 t = yの平均 - w1*「x1の平均」 - w2*「x2の平均」
# 回帰直線の式を表示
print("y = f(x) = {0} X1 + {1} X2 + {2}".format(w1, w2, t))
課題提出方法
-
基本的にGoogle Colaboratoryを用いてプログラミングしてください。どうしても Google Colaboratory を用いることができない場合のみ、Jupyter Notebook または Jupyter Lab を用いてください。
-
課題1つごとに、ノートブックを新規作成してください。1つのノートブックで複数の課題を解かないでください。
-
ノートブックを新規作成すると「Untitled.ipynb」のような名前になりますが、それを「学籍番号・氏名・課題番号」のような名前に変更してください。
-
質問・感想・要望などございましたらぜひ書き込んでください。
-
もし課題を解くにあたって参考になったウェブサイトがあれば、それについても触れてください。
-
課題を計算し終わった ipynb ファイルを提出するときは、指定したメールアドレスに Google Drive で共有する形で授業担当者に提出してください。