[mathjax]前の投稿では擬似逆行列を用いて、回帰直線を得る方法を解説しました。
今回は、擬似逆行列を用いて、高次の回帰曲線を得る方法を説明します。
一般に、n次元曲線の方程式は次のように表現されます。
\[y={ a }_{ 0 }+{ a }_{ 1 }{ x }+{ a }_{ 1 }{ x }^{2}+\cdots +{ a }_{ n }{ x }^{ n } \qquad (1)\]
この\(x,y\)が、点\((x_1,y_1)\)、\((x_2,y_2)\)、\((x_3,y_3)\)、、、やその近傍を通過して欲しいならば、式(1)に代入して、その係数を求めます。その際、点の数は係数\(a_i\) \((i=0\)~\(n)\)の数\(n+1\)以上が必要です。今その点数を\(m\)個とすると、以下のように書き下せます。
\[{ y }_{ 1 }={ a }_{ 0 }+{ a }_{ 1 }{ x }_{ 1 }+{ a }_{ 2 }{ x }_{ 1 }^{ 2 }\cdots +{ a }_{ n }{ x }_{ 1 }^{ n }\qquad (2)\]
\[{ y }_{2}={ a }_{ 0 }+{ a }_{ 1 }{ x }_{2}+{ a }_{ 2 }{ x }_{2}^{ 2 }\cdots +{ a }_{ n }{ x }_{2}^{ n }\qquad (3)\]
\[\cdot \cdot \cdot \cdot \cdot \cdot \cdot \]
\[{ y }_{m}={ a }_{ 0 }+{ a }_{ 1 }{ x }_{m}+{ a }_{ 2 }{ x }_{m}^{ 2 }\cdots +{ a }_{ n }{ x }_{m}^{ n }\qquad (4)\]
これを行列で表すと
\[\left[ \begin{matrix} { y }_{ 1 } \\ { y }_{ 2 } \\\cdot\\ { y }_{ m } \end{matrix} \right] =\left[ \begin{matrix} 1 & { x }_{1} & { x }_{1}^2 & \cdots & { x }_{1}^{n} \\ 1 & { x }_{ 2 } & { x }_{2}^2 & \cdots & { x }_{2}^{n} \\ \cdot & \cdot & \cdot & \cdots & \cdot \\ 1 & { x }_{ m } & { x }_{m}^2 & \cdot & { x }_{ m }^{n} \end{matrix} \right] \left[ \begin{matrix} { a }_{ 0 } \\ { a }_{ 1 } \\ { a }_{2}\\\cdot\\ { a }_{n} \end{matrix} \right] \qquad (5)\]
となります。これは前の投稿の式(5)と同じ式に簡略化できます。
\[Y = XA\qquad (6)\]
従って、前の投稿と同じ方法で係数\(A\)を求めることができるので、前の投稿の式(15)と同じ次の結果が得られます。
\[A = (X^TX)^{-1}X^TY\qquad (7)\]
このように、擬似逆行列を用いれば、高次の回帰曲線であろうが、単なる回帰直線であろうが、同じ計算手法で簡易に算出することができます。なんと有り難い計算手法でしょう!これは最小二乗法などを用いた場合の煩雑な計算に較べ、大きな特長といえます。