幾何平均回帰(標準主軸回帰)を自力でやってみる

普段Excel機械的に処理しているときにはついつい忘れがちだが、回帰分析は「データのx軸成分にばらつきはない」という前提で行っている。

なので本来のx軸は誤差が生じ得ないものか、y軸に対して誤差が無視できるほど精度の高いデータでなければならない。

x軸とy軸を入れ替えて回帰をすると別の回帰直線になってしまうのも、この前提が理由だ。

f:id:Chemstat:20210203020124j:plain

例えばx軸がサンプル作成後の経過日数や、測定機の条件(測定角度や測定電圧等)の場合は誤差が生じにくいのでx軸として用いることが出来る。しかし現実的にはx軸にも誤差が含まれている方が多いかと思う。

 

x軸とy軸のデータのばらつきが同じであれば幾何平均回帰を用いることが出来る。通常の回帰かy軸方向の残差成分の二乗和を最小にするのに対して、幾何平均回帰は図で囲まれた部分の面積の総和が最小になるよう回帰直線を引く。

 

f:id:Chemstat:20210203062437j:plain

通常の回帰分析が残差の二乗和\begin{align*}\sum_{i=1}^n(\hat{y_i}-y_i)^2\end{align*}を最小化するのに対して、

幾何回帰分析では三角形の面積の和\begin{align*}\sum_{i=1}^n\frac{1}{2}(\hat{x_i}-x_i)(\hat{y_i}-y_i)\end{align*}を最小化すればよいことになる。

冷静に考えると、x軸とy軸の誤差が等しい場合なんて限られるので使い道に困るのだが、例えば処理前後の物性を同じ測定機で測った場合なんかは幾何平均回帰のほうが(少なくとも理論的には)好ましい。

 

そんなわけでこの幾何平均回帰を自力で計算してみる。

 

データの準備

 データはいつものこちらを利用する。

 x
 (説明変数)
1 2 3 4 5
 y
(被説明変数)
2 6 6 9 6

 図中にプロットされているのは通常の回帰によって得られた回帰直線である。

f:id:Chemstat:20200804164539j:plain 

導出は参考サイトを見て頂くとして、幾何平均回帰の傾きは「y軸の誤差を最小化する回帰」と「x軸の誤差を最小化する回帰」の幾何平均になるという特徴がある。

 

y軸の誤差を最小にする回帰は過去の記事で計算しているので、これを参考に計算していく。x軸の誤差を最小にする回帰は、xとyの値を入れ替えて回帰を実施すればよい。

 

y軸の誤差を最小にする回帰:

 \begin{align*} \hat{b}_y = \frac{S_{xy}}{S_{xx}} \scriptsize= \frac{11}{10}  \normalsize = 1.1\end{align*}

x軸の誤差を最小にする回帰:

 \begin{align*} \hat{b}_x = \frac{S_{yy}}{S_{xy}} \scriptsize= \frac{24.8}{11}  \normalsize = 2.2545...\end{align*}

幾何平均回帰:

 \begin{align*} \hat{b}_{xy} = \sqrt{\hat{b}_y\times\hat{b}_x} \scriptsize= \sqrt{1.1\times2.254}  \normalsize = 1.5748...\end{align*}

 

回帰式はxとyの平均値を通るので、切片は下記式に代入することで求めることが出来る。

切片: \begin{align*} \hat{a}_{xy} = \bar{y} - \hat{b}_{xy}\bar{x} \scriptsize= 5.8 - 1.574\times3 \normalsize= 1.075...\end{align*}

 

このようにして、幾何平均回帰による回帰式y= 1.574x+1.075が得られる。

f:id:Chemstat:20210203070344j:plain



「y軸の誤差を最小化する回帰」「x軸の誤差を最小化する回帰」と合わせてプロットするとちょうど中間を通っていることが分かる。

 

参考サイト

幾何平均回帰の回帰式の導出:

標準主軸回帰(幾何平均回帰) - Engineering Skills

 

参考データ

諸々の数値の計算

 yの平均値: \begin{align*} \bar{y} = \frac{1}{n}\sum_{i=1}^ny_i \scriptsize = \frac{2 + 6 + 6 + 9 + 6}{5} \normalsize=5.8\end{align*}

 xの平均値: \begin{align*} \bar{x} = \frac{1}{n}\sum_{i=1}^nx_i = \scriptsize  \frac{1 + 2 + 3 + 4 + 5}{5} \normalsize=3\end{align*}

 x yの偏差積和: \begin{align*} S_{xy}= {\displaystyle \sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})} \end{align*}

 \begin{align*} \scriptsize =(1-3)(2-5.8) + (2-3)(6-5.8) + (3-3)(6-5.8) + (4-3)(9-5.8) + (5-3)(6-5.8) \normalsize=11 \end{align*}

 xの偏差平方和: \begin{align*} S_{xx} = {\displaystyle \sum_{i=1}^n(x_i-\bar{x})^2 }\scriptsize =  (1-3)^2 + (2-3)^2 + (3-3)^2 + (4-3)^2 + (5-3)^2 \normalsize=10 \end{align*}

 yの偏差平方和: \begin{align*} S_{yy} = {\displaystyle \sum_{i=1}^n(y_i-\bar{y})^2 }\scriptsize =  (2-5.8)^2 + (6-5.8)^2 + (6-5.8)^2 + (9-5.8)^2 + (6-5.8)^2 \normalsize=24.8 \end{align*}