ご意見・不具合
最小二乗法とは|定義・公式とアクチュアリー試験の関連問題 | acpass
統計・用語・回帰
ひとことで言うと 最小二乗法は『データ点と直線の縦のズレ(残差)を二乗して全部足したものを、いちばん小さくする直線を選ぶ』という、回帰直線の決め方そのものです。なぜ二乗なのか、どう解くのか——偏微分してゼロとおく『正規方程式』を立てれば、係数が一意に求まります。
5点の散布図 x=(1,2,3,4,5), y=(2,3,5,4,6) に最小二乗回帰直線 y=1.3+0.9x(緑)を当てはめた図。各点から直線へ下ろした縦の赤破線が残差で、残差平方和Sum(yi-b0-b1xi)^2を最小にするように直線を選ぶ。最適解では残差の和Sum ei=0かつSum ei*xi=0(残差は説明変数と直交)が成り立つ 残差平方和を最小化→Σei=0, Σei・xi=0(残差⊥説明変数) y=1.3+0.9x y x
拡大 5点 x = ( 1 , 2 , 3 , 4 , 5 ) , y = ( 2 , 3 , 5 , 4 , 6 ) x=(1,2,3,4,5),\ y=(2,3,5,4,6) x = ( 1 , 2 , 3 , 4 , 5 ) , y = ( 2 , 3 , 5 , 4 , 6 ) への最小二乗回帰直線 y ^ = 1.3 + 0.9 x \hat y=1.3+0.9x y ^ = 1.3 + 0.9 x
数式で表すと min b 0 , b 1 ∑ ( y i − b 0 − b 1 x i ) 2 \min_{b_0,b_1}\sum (y_i-b_0-b_1x_i)^2 min b 0 , b 1 ∑ ( y i − b 0 − b 1 x i ) 2 最小二乗法(OLS)は、回帰直線 y ^ = b 0 + b 1 x \hat y=b_0+b_1 x y ^ = b 0 + b 1 x の係数 b 0 , b 1 b_0,b_1 b 0 , b 1
試験に出る性質 目的関数
残差平方和 S = ∑ ( y i − b 0 − b 1 x i ) 2 S=\sum(y_i-b_0-b_1 x_i)^2 S = ∑ ( y i − b 0 − b 1 x i ) 2
例で見る x = ( 1 , 2 , 3 , 4 , 5 ) , y = ( 2 , 3 , 5 , 4 , 6 ) x=(1,2,3,4,5),\ y=(2,3,5,4,6) x = ( 1 , 2 , 3 , 4 , 5 ) , y = ( 2 , 3 , 5 , 4 , 6 ) 。 x ˉ = 3 , y ˉ = 4 \bar x=3,\ \bar y=4 x ˉ = 3 , y ˉ = 4
つまずきポイント 最小化しているのを『点から直線への垂線距離』だと誤解する(最小二乗は y y y 方向の縦のズレの二乗和。だから x , y x,y x , y 入替で別の直線になる) 正規方程式を立てずに公式 b 1 = S x y / S x x b_1=S_{xy}/S_{xx} b 1 = S x y / S xx 定着クイズ A. 点から直線への垂線距離 B. 残差平方和 ∑ ( y i − b 0 − b 1 x i ) 2 \sum(y_i-b_0-b_1x_i)^2 ∑ ( y i − b 0 − b 1 x i ) 2 C. 残差の和 ∑ ( y i − b 0 − b 1 x i ) \sum(y_i-b_0-b_1x_i) ∑ ( y i − b 0 − b 1 x i ) A. ∑ e i = 0 \sum e_i=0 ∑ e i = 0 かつ ∑ e i x i = 0 \sum e_i x_i=0 ∑ e i x i = 0 B. ∑ e i = 1 \sum e_i=1 ∑ e i = 1 C. ∑ e i 2 = 0 \sum e_i^2=0 ∑ e i 2 = 0 Q3 x = ( 1..5 ) , y = ( 2 , 3 , 5 , 4 , 6 ) x=(1..5),y=(2,3,5,4,6) x = ( 1..5 ) , y = ( 2 , 3 , 5 , 4 , 6 ) ( S x x = 10 , S x y = 9 S_{xx}{=}10,S_{xy}{=}9 S xx = 10 , S x y = 9 )の傾き b 1 b_1 b 1 は?
A. 0.9 0.9 0.9 B. 1.0 1.0 1.0 C. 1.3 1.3 1.3 (緑)。各点から直線へ下ろした縦の破線が残差
。残差平方和
∑ ( y i − b 0 − b 1 x i ) 2 \sum(y_i-b_0-b_1x_i)^2 ∑ ( y i − b 0 − b 1 x i ) 2 を最小にする直線が解で、最適解では
かつ
∑ e i x i = 0 \sum e_i x_i=0 ∑ e i x i = 0 。
残差平方和を最小化して回帰係数を求める方法。正規方程式の解。
を『残差平方和を最小にする』という基準で決める方法です。残差とは各データ点の実測値
と直線による予測値
b 0 + b 1 x i b_0+b_1 x_i b 0 + b 1 x i の差
e i = y i − ( b 0 + b 1 x i ) e_i=y_i-(b_0+b_1 x_i) e i = y i − ( b 0 + b 1 x i ) で、最小化する目的関数は
S ( b 0 , b 1 ) = ∑ i ( y i − b 0 − b 1 x i ) 2 S(b_0,b_1)=\sum_{i}(y_i-b_0-b_1 x_i)^2 S ( b 0 , b 1 ) = ∑ i ( y i − b 0 − b 1 x i ) 2
です。なぜ二乗か——絶対値だと折れ曲がって微分できず解析的に解けないのに対し、二乗は滑らかで微分でき、大きなズレをより強く罰するため、偏微分=0という明快な条件で唯一の解が得られます(
が与える『結果の式』を、ここでは『どう導くか』の側から見ます)。
解き方は、 S S S を b 0 , b 1 b_0,b_1 b 0 , b 1 それぞれで偏微分してゼロとおく 正規方程式 です。 b 0 b_0 b 0 で偏微分すると ∂ S / ∂ b 0 = − 2 ∑ ( y i − b 0 − b 1 x i ) = 0 \partial S/\partial b_0=-2\sum(y_i-b_0-b_1 x_i)=0 ∂ S / ∂ b 0 = − 2 ∑ ( y i − b 0 − b 1 x i ) = 0 、 b 1 b_1 b 1 で偏微分すると ∂ S / ∂ b 1 = − 2 ∑ x i ( y i − b 0 − b 1 x i ) = 0 \partial S/\partial b_1=-2\sum x_i(y_i-b_0-b_1 x_i)=0 ∂ S / ∂ b 1 = − 2 ∑ x i ( y i − b 0 − b 1 x i ) = 0 。残差 e i = y i − b 0 − b 1 x i e_i=y_i-b_0-b_1 x_i e i = y i − b 0 − b 1 x i を使って書き直すと、この2式はそのまま
∑ e i = 0 , ∑ e i x i = 0 \sum e_i=0,\qquad \sum e_i x_i=0 ∑ e i = 0 , ∑ e i x i = 0
という『最適解で残差が満たすべき2条件』になります。前者は残差の和がゼロ(直線が点の重心 ( x ˉ , y ˉ ) (\bar x,\bar y) ( x ˉ , y ˉ ) を通る)、後者は残差と説明変数 x x x が直交する(残差に x x x で説明できる成分が残っていない)ことを意味します。この2式を b 0 , b 1 b_0,b_1 b 0 , b 1 について解くと b 1 = S x y / S x x b_1=S_{xy}/S_{xx} b 1 = S x y / S xx 、 b 0 = y ˉ − b 1 x ˉ b_0=\bar y-b_1\bar x b 0 = y ˉ − b 1 x ˉ という単回帰の公式が出てきます——公式は天下りではなく、正規方程式を解いた結果なのです。
実務上の注意を2つ。ひとつは、最小二乗で最小化しているのは『 y y y 方向の縦のズレ』であって、点から直線への垂線距離ではないこと。だから x x x と y y y の役割を入れ替えて『 x x x を y y y で回帰』すると、一般に別の直線になります(2本の回帰直線は一致しない)。もうひとつは、最小二乗法は誤差が外れ値を含むとそれに引きずられやすいこと——二乗が大きなズレを強調するため、1点の異常値が直線を大きく動かすことがあります。これらは残差の性質 ∑ e i = 0 , ∑ e i x i = 0 \sum e_i=0,\ \sum e_i x_i=0 ∑ e i = 0 , ∑ e i x i = 0 が『 y y y 方向・ x x x との直交』という非対称な条件であることの裏返しです。
を最小化する。二乗は微分可能で大きなズレを強く罰するので解が一意に定まる。
正規方程式
∂ S / ∂ b 0 = 0 , ∂ S / ∂ b 1 = 0 \partial S/\partial b_0=0,\ \partial S/\partial b_1=0 ∂ S / ∂ b 0 = 0 , ∂ S / ∂ b 1 = 0 の連立。これを解くと b 1 = S x y / S x x , b 0 = y ˉ − b 1 x ˉ b_1=S_{xy}/S_{xx},\ b_0=\bar y-b_1\bar x b 1 = S x y / S xx , b 0 = y ˉ − b 1 x ˉ が得られる。
残差の和はゼロ
最適解では ∑ e i = 0 \sum e_i=0 ∑ e i = 0 。直線は点の重心 ( x ˉ , y ˉ ) (\bar x,\bar y) ( x ˉ , y ˉ ) を必ず通る。
残差は説明変数と直交
最適解では ∑ e i x i = 0 \sum e_i x_i=0 ∑ e i x i = 0 。残差に x x x で説明できる成分が残っていない(直交条件)。
y方向の最小化・非対称
縦のズレを最小化するので x , y x,y x , y を入れ替えると別の直線になる。外れ値に引きずられやすい点にも注意。
対数線形化による非線形モデルへの適用
指数関数モデル y = α e β x y=\alpha e^{\beta x} y = α e β x は両辺対数をとると log y = log α + β x \log y=\log\alpha+\beta x log y = log α + β x と線形化でき、 ( x , log y ) (x,\log y) ( x , log y ) に最小二乗法を適用すれば α , β \alpha,\beta α , β が推定できる(2022年度問題2(4))。回帰対象は必ずしも y y y そのものとは限らず、変換後の変数であることに注意する。
。
S x x = 10 , S x y = 9 S_{xx}=10,\ S_{xy}=9 S xx = 10 , S x y = 9 より
b 1 = S x y / S x x = 9 / 10 = 0.9 b_1=S_{xy}/S_{xx}=9/10=0.9 b 1 = S x y / S xx = 9/10 = 0.9 、 b 0 = y ˉ − b 1 x ˉ = 4 − 0.9 ⋅ 3 = 1.3 b_0=\bar y-b_1\bar x=4-0.9\cdot3=1.3 b 0 = y ˉ − b 1 x ˉ = 4 − 0.9 ⋅ 3 = 1.3 。予測値 y ^ = ( 2.2 , 3.1 , 4.0 , 4.9 , 5.8 ) \hat y=(2.2,3.1,4.0,4.9,5.8) y ^ = ( 2.2 , 3.1 , 4.0 , 4.9 , 5.8 ) 。
残差 e = ( − 0.2 , − 0.1 , 1.0 , − 0.9 , 0.2 ) e=(-0.2,-0.1,1.0,-0.9,0.2) e = ( − 0.2 , − 0.1 , 1.0 , − 0.9 , 0.2 ) 。 ∑ e i = 0 \sum e_i=0 ∑ e i = 0 、 ∑ e i x i = − 0.2 + ( − 0.2 ) + 3.0 + ( − 3.6 ) + 1.0 = 0 \sum e_i x_i=-0.2+(-0.2)+3.0+(-3.6)+1.0=0 ∑ e i x i = − 0.2 + ( − 0.2 ) + 3.0 + ( − 3.6 ) + 1.0 = 0 。SSE = ∑ e i 2 = 1.90 =\sum e_i^2=1.90 = ∑ e i 2 = 1.90 。
を暗記だけで使う(公式は偏微分=0を解いた結果。導出元の
∑ e i = 0 , ∑ e i x i = 0 \sum e_i=0,\sum e_i x_i=0 ∑ e i = 0 , ∑ e i x i = 0 を押さえる)
外れ値の影響を軽視する(二乗が大きなズレを強調するため、1点の異常値で直線が大きく動くことがある) 非線形モデルにそのまま b 1 = S x y / S x x b_1=S_{xy}/S_{xx} b 1 = S x y / S xx を当てはめようとする(先に対数などで線形化してから最小二乗法を適用する)。