2025年3月27日木曜日

回帰直線の傾きの導出と予測値の補正

PyCaret で上位5つの回帰モデルをチューニングし、結果を確認。
いずれも、予測値を縦軸、実測値を横軸にプロットすると傾きが1未満になります。理由があるはずだと調べてみましたが、ほとんど書かれていないようです。で、GPT君に聞きながら整理しました。

以下、実測値 yy と予測値 ˆy^y の関係から回帰直線の傾き γγ の導出、その傾きが1以下となる理由、及び予測値が実測値の全変動を再現できない場合の補正方法について書き残しておきます。

※傾きの導出は「学習物理学入門」に書かれています。高校で習ったかな。


1. 傾きの公式の導出

ここでは、中心化したデータを用いて回帰直線の傾き γγ を求めるプロセスを示す。
まず、各データ点 ii に対して、実測値 yiyi と予測値 ˆyi^yi の中心化された値を以下のように定義する:

˜yi=yiˉy,˜ˆyi=ˆyiˉy~yi=yi¯y,~^yi=^yi¯y

このとき、中心化されたデータに対するモデルは

˜ˆyi=γ˜yi+εi~^yi=γ~yi+εi

と表現され、ここで γγ は回帰直線の傾き、εiεi は各データ点 ii における残差を示す。 残差の二乗和(Sum of Squared Errors, SSE)は次のように定義される:

SSE(γ)=ni=1(˜ˆyiγ˜yi)2SSE(γ)=ni=1(~^yiγ~yi)2

1-1. SSE を γγ で最小化する過程

SSE を最小にする γγ を求めるため、まず SSE を γγ の関数として展開する。
各項は

f(γ)=[˜ˆyiγ˜yi]2f(γ)=[~^yiγ~yi]2

と表される。ここで、内部関数

u(γ)=˜ˆyiγ˜yiu(γ)=~^yiγ~yi

と置くと、f(γ)f(γ)f(γ)=[u(γ)]2f(γ)=[u(γ)]2 と表せる。

チェーンルールを用いて f(γ)f(γ)γγ による微分を行う。まず、外側の関数 g(u)=u2g(u)=u2 の微分は

g(u)=2u
次に、内側の関数
u(γ)=˜ˆyiγ˜yi
γ で微分する。ここで ˜ˆyiγ に依存しない定数なので、その微分は 0 となり、
ddγu(γ)=˜yi
チェーンルールにより、全体の微分は
ddγf(γ)=g(u(γ))u(γ)
これにより、具体的には
ddγ[˜ˆyiγ˜yi]2=2(˜ˆyiγ˜yi)(˜yi)

整理すると、

ddγ[˜ˆyiγ˜yi]2=2˜yi(˜ˆyiγ˜yi)

これが、各項 [˜ˆyiγ˜yi]2γ による微分の導出過程である。
次に、この導出を全データ点 i=1,2,,n に対して合計し、SSE の全体の微分を求める。

ddγSSE(γ)=ni=12˜yi(˜ˆyiγ˜yi)

SSE の最小値を与えるためには、この導関数を 0 とおく必要がある。すなわち、

2ni=1˜yi(˜ˆyiγ˜yi)=0

両辺を 2 で割ると、次の条件が得られる:

ni=1˜yi(˜ˆyiγ˜yi)=0

これを展開すると:

ni=1˜yi˜ˆyiγni=1˜y2i=0

γ について解くと、以下の式が得られる:

γ=ni=1˜yi˜ˆyini=1˜y2i

分散と共分散の定義、 Cov(y,ˆy)=1nni=1˜yi˜ˆyi および Var(y)=1nni=1˜y2i を用いると、最終的に

γ=Cov(y,ˆy)Var(y)

となる。

1-2. 直交性による公式の変形

回帰分析では、予測値 ˆy と残差 e=yˆy が直交する性質、すなわち Cov(ˆy,e)=0 が成り立つ。
実測値は予測値と残差の和として表せるので、

y=ˆy+e

となる。この関係から、共分散の線形性を用いると、

Cov(y,ˆy)=Cov(ˆy+e,ˆy)=Cov(ˆy,ˆy)+Cov(e,ˆy)

ここで Cov(e,ˆy)=0 であるため、

Cov(y,ˆy)=Var(ˆy)

従って、もともとの γ の式は

γ=Var(ˆy)Var(y)

と表される。

2. 予測値の補正方法とその導出

通常、モデルの予測値 ˆy は実測値 y の全てのばらつきを再現できない。その理由は、回帰モデルが実際のデータのばらつきを完全には捉えられず、残差 e すなわちモデルでは説明できない成分が存在するためである。

実測値は予測値と残差の和として表現できる:

y=ˆy+e

ここで、回帰分析の基本的性質として、予測値 ˆy と残差 e は直交すると仮定され、Cov(ˆy,e)=0 が成立する。
この性質を用いて、実測値 y の分散を計算すると、

Var(y)=Var(ˆy+e)=Var(ˆy)+Var(e)+2Cov(ˆy,e)

ここで Cov(ˆy,e)=0 なので、

Var(y)=Var(ˆy)+Var(e)

残差の分散 Var(e) は非負のため、

Var(ˆy)Var(y)

すなわち、モデルの予測値 ˆy は実測値 y の全ばらつきを再現できず、通常は Var(ˆy)<Var(y) となる。
この状態では、中心化された回帰直線の傾きは

γ=Var(ˆy)Var(y)<1

この差を補正するために、予測値の分散を実測値の分散に合わせる補正が必要となる。

2-1. 標準偏差比による補正

実測値 y の標準偏差を σy、予測値 ˆy の標準偏差を σˆy とすると、
補正後の予測値は以下の式で定義される:

ˆynew=ˉy+(ˆyˉy)×σyσˆy

2-2. 補正方法の導出(標準偏差比による補正の意味)

まず、予測値 ˆy を中心化すると ˆyˉy となる。
補正前の分散は Var(ˆy)=σ2ˆy である。
補正係数 σyσˆy を用いることで、補正後の分散は

Var(ˆynew)=(σyσˆy)2Var(ˆy)=(σyσˆy)2σ2ˆy=σ2y

これにより、補正後の予測値は実測値 y の全体のばらつきに一致し、中心化された回帰直線の傾きが 1 に調整される。

3. 参考情報

3-1. 相関係数と傾きの違い

2つの変数 yˆy の相関係数は通常、

ry,ˆy=Cov(y,ˆy)σyσˆy

と定義される。一方、傾きは実測値 y の分散を基準としているため、

γ=Cov(y,ˆy)σ2y

と表現され、尺度が異なるため相関係数とは意味が異なる。

3-2. 決定係数とのつながり

決定係数 R2 は、モデルが実測値のばらつきをどの程度説明できるかを示す指標であり、以下のように定義される:

R2=Var(ˆy)Var(y)

未補正の場合は、回帰直線の傾き γ と同様の形となり、通常 R2<1 となる。

4. まとめ

・中心化したデータに対して最小二乗法を用い、残差の二乗和(SSE)を最小にすることで回帰直線の傾きは

γ=Cov(y,ˆy)Var(y)

と導出される。さらに、残差と予測値の直交性によりこの式は

γ=Var(ˆy)Var(y)

とも表現される。
通常、モデルは実測値の全変動を再現できないため、Var(ˆy)<Var(y) となり、補正前の γ は 1 未満となる。

・補正方法の一つとして、標準偏差比を用いて予測値の分散を実測値の分散に合わせる方法があり、

ˆynew=ˉy+(ˆyˉy)×σyσˆy

により、補正後の予測値は実測値 y のばらつき(σ2y)と一致し、中心化された回帰直線の傾きが理想的な 1 に調整される。


0 件のコメント:

コメントを投稿