自分のブログ名

物理の空き地 by M.E_K

日々の学び、感じたことを書いております。ブログ移行中->https://physics-mek.com

移転しました。

リダイレクトします。

最小二乗法解くなら行列が楽って話

移転しました。

リダイレクトします。

実験式がy=a+bxであるとき

最小二乗法の原理より,誤差y_i -(a+bx_i)の二乗の和を作ると,同じ精度を持つ測定の場合

\displaystyle{S=\sum_{i=1}^n {y_i - (a+bx_i)}=0}
\begin{align}
\therefore & \frac{\partial S}{\partial a} = -2\sum_{i=1}^{n}{\{y_i - (a+bx_i)}\}=0\\
& \frac{\partial S}{\partial b} = -2\sum_{i=1}^{n}{\{y_i - (a+bx_i)}\}x_i=0\end{align}
nはデータセットの個数である.
\begin{align} N&a + [x]b = [y]\\
 [x]&a+[x^2]b=[yx]\end{align}

行列式に置き換えて,
\begin{bmatrix}N & [x] \\
[x] & [x^2]
\end{bmatrix}\begin{bmatrix}a \\ b \end{bmatrix}
= \begin{bmatrix}[y] \\ [yx]\end{bmatrix}

\begin{bmatrix}a \\ b \end{bmatrix}
= \begin{bmatrix}N & [x] \\
[x] & [x^2]
\end{bmatrix}^{-1}\begin{bmatrix}[y] \\ [yx]\end{bmatrix}\cdots (1)
(1)を見ると,逆行列を計算することと,行列積を求めるだけでパラメータa,bが決定できる.

データ

f:id:Monster_K:20210917160528p:plain:w175:h280f:id:Monster_K:20210917160533p:plain:w320:h71

エクセルで逆行列

逆行列を計算する関数はMINVERSE関数.求まる逆行列の大きさに等しいセル範囲を選択した状態で下記のように数式を入力して、[Ctrl]+[Shift]+[Enter]を押すと結果が得られる.
f:id:Monster_K:20210917160530p:plain:w462:h116

エクセルで行列積

行列の積を計算する関数はMMULT関数.求まる逆行列の大きさに等しいセル範囲を選択した状態で下記のように数式を入力して、[Ctrl]+[Shift]+[Enter]を押すと結果が得られる.
f:id:Monster_K:20210921152149p:plain

結果

f:id:Monster_K:20210921153828p:plain
y = 0.66 + 0.50xとなった.

最確値a,bの確率誤差の計算

y_iに平均誤差\mux_iの誤差がないものとすれば,
\mu = \sqrt{\frac{\sum{\{y_i -(a+bx_i)\}^2}}{n-2}}=\sqrt{\frac{[y^2]-a[y]-b[yx]}{n-2}}
分母である自由度の個数はポイント数nからパラメータの個数を引いたものである.
ゆえに,y_iの確率誤差\sigma_y
\sigma_y =\sqrt{\frac{[y^2]-a[y]-b[yx]}{n-2}}

a,bの確率誤差\sigma_a,\sigma_bは,誤差の伝搬法より,
\sigma_a = \sqrt{\sigma_y^2 \sum_{i=1}^{n}(\frac{\partial a}{\partial y_i})^2}
\sigma_b = \sqrt{\sigma_y^2 \sum_{i=1}^{n}(\frac{\partial b}{\partial y_i})^2}

エクセルで計算するには

\sigma_y =\sqrt{\frac{[y^2]-a[y]-b[yx]}{n-2}}の計算は非常に単純なので,割愛.
\sigma_a = \sqrt{\sigma_y^2 \sum_{i=1}^{n}(\frac{\partial a}{\partial y_i})^2}
\sigma_b = \sqrt{\sigma_y^2 \sum_{i=1}^{n}(\frac{\partial b}{\partial y_i})^2}
の計算を行列で表すと,
\begin{bmatrix}\sigma_a&0\\
0&\sigma_b
\end{bmatrix}
=\sqrt{\frac{\sigma_y^{2}}{△}\begin{bmatrix}N & [x] \\
[x] & [x^2]\end{bmatrix}^{-1}}

MINVERSE関数は分数の△も含むので,\sigma_yの計算だけすればよく,エクセルで計算すると,
f:id:Monster_K:20211025113406p:plain

結果の対角成分が確率誤差になる.
y = 0.66\pm 0.09 + (0.50\pm0.01)x

まとめ

f:id:Monster_K:20211025124116p:plain
エクセルのシートを載せた.最小二乗法を連立方程式で解けばそれまでではあるが,エクセルだとどうしても計算ミスが怖い.
高次の計算こそ行列で済ませるととても早くなるので,ぜひ活用していただきたい.
「行列でやってみたい」「やってみてもうまくいかない」となった人はぜひ私に聞きに来てほしい.